#include<iostream>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<cstdio>
#include<string>
#include<deque>
#include<stack>
#include<queue>
#include<vector>
#include<stdio.h>
#include<map>
#include<set>
#include<string.h>
#include<time.h>
#include<stdlib.h>
#include<bitset>
using namespace std;
__int128 last_ans;
__int128 n,a[100005],m[100005];
__int128 exgcd(__int128 a,__int128 b,__int128 &x,__int128 &y){
if(b==0){
x=1,y=0;
return a;
}
__int128 d=exgcd(b,a%b,x,y);
__int128 z=x;
x=y;
y=z-y*(a/b);
return d;
}
__int128 gcd(__int128 a,__int128 b){
if(b==0)return a;
return gcd(b,a%b);
}
__int128 lcm_m=1;
void write(__int128 x){
if(x>9)write(x/10);
putchar(x%10+'0');
}
int main(){
long long book;
cin>>book;n=book;
for(int i=1;i<=n;i++){
cin>>book;m[i]=book;
cin>>book;a[i]=book;
}
for(int i=1;i<=n;i++){
__int128 x,y;
if((a[i]-last_ans)%gcd(lcm_m,m[i])==0){
exgcd(lcm_m,m[i],x,y);
last_ans=last_ans+x*lcm_m*(a[i]-last_ans)/gcd(lcm_m,m[i]);
lcm_m=lcm_m*m[i]/gcd(lcm_m,m[i]);
}
}
write((last_ans+lcm_m)%lcm_m);
return 0;
}