#include <iostream>
#include <algorithm>
using namespace std;
typedef __int128 ll;
ll gcd(ll a, ll b) {
if (b == 0) return a;
return gcd(b, a % b);
}
ll lcm(ll a, ll b) {
return a / gcd(a, b) * b;
}
ll exgcd(ll a, ll b, ll &x, ll &y) {
if (b == 0) {
x = 1;
y = 0;
return a;
}
ll d = exgcd(b, a % b, x, y);
ll t = x;
x = y;
y = t - a / b * y;
return d;
}
ll mod_equ(ll a, ll b, ll &x, ll mod) {
ll y;
ll d = exgcd(a, mod, x, y);
x = x * b / d;
return (x % (mod / d) + mod / d) % (mod / d);
}
ll a[100005], mod[100005];
long long exCRT(int n) {
ll m = 1, x0 = 0;
for (int i = 1; i <= n; i++) {
ll tx = x0;
x0 += m * mod_equ(m, a[i] - x0, tx, mod[i]);
if (x0 == -1) return -1;
m = lcm(m, mod[i]);
}
return (long long)(x0);
}
void read(ll &x) {
x = 0;
char c = getchar();
while (c >= '0' && c <= '9') {
x = x * 10 + c - '0';
c = getchar();
}
}
void print(ll x) {
if (!x) return ;
print(x / 10);
putchar(x % 10 + '0');
}
int main() {
ll n;
read(n);
for (int i = 1; i <= n; i++) {
read(mod[i]);
read(a[i]);
}
cout << exCRT(n);
putchar('\n');
return 0;
}
本地是能过的,但是评测机上一个样例都过不了