#include <bits/stdc++.h>
using namespace std;
#define int __int 128
const int N=1e5+5;
int n;
struct node{
int b,a;
}ans,s[N];
int read() {long long t; cin>>t; return t;}
void exgcd(int a,int b,int &x,int &y,int &g)
{
if(!b) {x=1,y=0,g=a;return ;}
int x0,y0;
exgcd(b,a%b,x0,y0,g);
x=y0,y=x0-(a/b)*y0;
}
node excrt(node fi,node se)
{
int a1=fi.a,a2=se.a,b1=fi.b,b2=se.b,q1,q2,g,c,x,lcm;
exgcd(a1,a2,q1,q2,g);
assert((b2-b1)%g==0);
c=(b2-b1)/g;
lcm=a1/g*a2;
x=(q1*c*a1+b1)%lcm;
if(x<0) x+=lcm;
return (node){x,lcm};
}
signed main(){
n=read();
for(int i=1;i<=n;i++){
s[i].a=read();
s[i].b=read();
}
if(n==1)cout<<(long long)s[1].b<<endl,exit(0);
ans=excrt(s[1],s[2]);
for(int i=3;i<=n;i++){
ans=excrt(ans,s[i]);
}
cout<<(long long)ans.b;
return 0;
}