#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<queue>
#include<set>
#include<map>
#include<vector>
#include<iomanip>
#include<ctime>
#include<stack>
using namespace std;
const int maxn=100005;
int n;
long long m,x,y,ans;
long long a[maxn],b[maxn];
inline long long ksc(long long a,long long b,long long mod){
return (a*b-(long long)((long double)x/mod*y)*mod+mod)%mod;
}
long long exgcd(int a,int b){
if(b==0){
x=1;
y=0;
return a;
}
long long gcd=exgcd(b,a%b);
swap(x,y);
y=y-(a/b)*x;
return gcd;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++) scanf("%lld%lld",&a[i],&b[i]);
m=a[1],ans=b[1]%a[1];
for(int i=2;i<=n;i++){
long long gcd=exgcd(m%a[i],a[i]);
long long c=b[i]-ans;
x=ksc(x,c/gcd,a[i]);
long long M=m/gcd*a[i];
ans=((ans+x*m)%M+M)%M;
m=M;
}
cout<<(ans%m+m)%m;
return 0;
}
真的不知道哪里挂了