#include<cstdio> #define re register #define int long long constint MAXn = 10;
template <classT> inlinevoidread(T &a){ registerchar c;while (c = getchar(), c < '0' || c > '9');register T x(c - '0');while (c = getchar(), c >= '0' && c <= '9') {x = (x << 1) + (x << 3) + (c ^ 48);}a = x; }
intexgcd(int a, int b, int& x, int& y){ if (!b) { x = 1, y = 0; return a; } int d = exgcd(b, a % b, y, x); y -= a / b * x; return d; }
intinv(int n, int mod){ int ans, k; exgcd(n, mod, ans, k); return (ans % mod + mod) % mod; }
int n, a[MAXn + 10], m[MAXn + 10]; intCrt(){ int ans = 0, mulm = 1; for (re int i = 1; i <= n; ++i) { mulm = mulm * m[i]; } for (re int i = 1; i <= n; ++i) { int M = mulm / m[i]; ans = (ans + ((a[i] * M) % mulm * inv(M, m[i])) % mulm) % mulm; } return ans; }
signedmain(){ read(n); for (re int i = 1; i <= n; ++i) { read(m[i]), read(a[i]); } printf("%lld\n", Crt()); }