中国剩余定理
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 100010;
ll n,c[maxn],m[maxn],ans;
ll Quick_pow(ll a,ll b)
{
ll ret=1,base=a;
while(b){
if(b&1) ret*=base;
base*=base;
b>>=1;
}
return ret;
}
ll exgcd(ll a,ll b,ll &x,ll &y)
{
if(b==0){
x=1;y=0;
return a;
}
ll r = exgcd(b,a%b,x,y);
ll temp = x;
x=y;
y=temp-a/b*y;
return r;
}
ll inv(ll a,ll mod)
{
ll x,y;
exgcd(a,mod,x,y);
x = (x+mod)%mod;
return x;
// return Quick_pow(a,mod-2);
}
void China()
{
ll LCM=1;
for(int i=0;i<n;i++) LCM *=m[i];
for(int i=0;i<n;i++){
ans+=c[i]*inv(LCM/m[i],m[i])*LCM/m[i];
}
ans = (ans+LCM)%LCM;
}
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++){
cin>>c[i]>>m[i];
}
China();
cout<<ans<<endl;
return 0;
}