#include<iostream>
const int Max=1e5+1;
using namespace std;
int n;
long long a[Max],b[Max];
long long exgcd(long long a,long long b,long long &x,long long &y){
if(b==0){
x=1;y=0;return a;
}
long long d=exgcd(b,a%b,x,y);
long long z=y;y=x-a/b*y;x=z;
return d;
}
int excrt(){
for(int i=2;i<=n;i++){
long long x,y;
long long d=exgcd(a[i-1],a[i],x,y);
if((b[i]-b[i-1])%d!=0){
return -1;
}
long long c=(b[i]-b[i-1])/d;
x*=c;
x=(x%(a[i]/d)+a[i]/d)%(a[i]/d);
b[i]=b[i-1]+x*a[i-1];
a[i]=a[i]*a[i-1]/d;
}
return (b[n]%a[n]+a[n])%a[n];
}
int main(){
cin>>n;
long long x,y;
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i];
}
int ans=excrt();
if(ans==-1){
cout<<"no solution";
}else{
cout<<ans;
}
}