#ifdef LOCAL #define _GLIBCXX_DEBUG #define dbg(x) cerr << #x << " = " << (x) << " (L" << __LINE__ << ") " << __FILE__ << endl #else #define dbg(x) {} #endif #include using namespace std; #include using namespace atcoder; #define ll long long #define ld long double #define rep(i, n) for(int i=0; i<(n); ++i) #define rep1(i, n) for(int i=1; i<=(n); ++i) #define rrep(i,n) for(int i = (n)-1; i >= 0; --i) #define rrep1(i,n) for(int i = (n); i >= 1; --i) #define FOR(i, a, b) for(int i=(a); i<(b); ++i) #define RFOR(i, a, b) for(int i=(a)-1; i>=(b); ++i) #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(), x.rend() #define mp make_pair #define fi first #define se second #define pb push_back #define eb emplace_back #define sz(x) (int)(x).size() #define popcnt(x) __builtin_popcountll(x) #define isin(x,l,r) ((l) <= (x) && (x) < (r)) #define newline puts("") using pii = pair; using pll = pair; using pdd = pair; #define v(T) vector #define vv(T) v(v(T)) using vi = vector; using vb = vector; using vl = vector; using vd = vector; using vs = vector; using vpii = vector; using vpl = vector; using vpd = vector; const int dx[4] = {1,0,-1,0}, dy[4] = {0,1,0,-1}; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b using pqg = priority_queue,greater>; using int128 = __int128_t; using mint = atcoder::modint1000000007; //using mint = atcoder::modint998244353; //using mint = atcoder::modint; //mint::set_mod(mod); #define endl '\n' const long double eps= 1e-10; const long double PI = 3.141592653589793238462643383279502884L; const ll LINF = 1001002003004005006ll; const int INF = 1001001001; const ll MOD = 1000000007; void solve() { int N; cin >> N; vl r(N); vl m(N); rep(i, N){ cin >> r[i] >> m[i]; } auto c = crt(r, m); if(c.se == 0){ cout << -1 << endl; }else{ cout << c.fi << endl; } } int main(){ int tests = 1; // scanf("%d", &tests); ios::sync_with_stdio(false); cin.tie(nullptr); rep1(i, tests){ solve(); } return 0; }