from math import gcd def linear_congruence(a: int, b: int, m: int) -> tuple[int, int] | tuple[None, None]: # a x = b (mod m) g = gcd(a, m) if b % g != 0: return None, None a2 = a // g b2 = b // g m2 = m // g # a' x = b' (mod m') x = b2 * pow(a2, -1, m2) % m2 return x, m2 def crt2(r1, m1, r2, m2): # x = r1 (mod m1) # x = r1 + m1 t # r1 + m1 t = r2 (mod m2) # m1 t = r2 - r1 (mod m2) t, m = linear_congruence(m1, r2 - r1, m2) if t is None: return None, None x = r1 + m1 * t mod = m1 * m return x % mod, mod def crt3(r1, m1, r2, m2, r3, m3): r, m = crt2(r1, m1, r2, m2) if r is None: return None, None r, m = crt2(r, m, r3, m3) return r, m def crt(rms: list[tuple[int, int]]) -> tuple[int, int] | tuple[None, None]: r = 0 m = 1 for nr, nm in rms: r, m = crt2(r, m, nr, nm) if r is None: return None, None return r, m MOD = 10**9 + 7 N = int(input()) rms = [] for _ in range(N): X, Y = map(int, input().split()) rms.append((X, Y)) r, m = crt(rms) if r is None: print(-1) elif r == 0: print(m % MOD) else: print(r % MOD)