只有最后一个点WA dalao救命
#include<bits/stdc++.h>
#define int long long
using namespace std;
int read()
{
int x=0,f=1;
char ch=getchar();
while(!(ch<='9'&&ch>='0'))
{
if(ch=='-') f=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0')
{
x=(x<<3)+(x<<1)+(ch^48);
ch=getchar();
}
return x*f;
}
void write(int x)
{
if(x<0)
{
putchar('-');
x=-x;
}
if(x>9) write(x/10);
putchar('0'+x%10);
}
int exgcd(int a,int b,int &x,int &y)
{
if(!b)
{
x=1;
y=0;
return a;
}
int d=exgcd(b,a%b,x,y);
int tp=x;
x=y;
y=tp-a/b*y;
return d;
}
struct node
{
int a,b;
}p[100010];
signed main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
int n=read();
for(int i=1;i<=n;i++)
{
p[i].a=read();
p[i].b=read();
}
int ans=p[1].b,M=p[1].a,t,y;
for(int i=2;i<=n;i++)
{
int mi=p[i].a,r=((p[i].b-ans)%mi+mi)%mi,d=exgcd(M,mi,t,y);
t=(t*(r/d))%mi;
ans+=t*M;
M=mi/d*M;
ans=(ans%M+M)%M;
}
write(ans);
return 0;
}