def safe_mod(x: int, m: int) -> int: x %= m if x < 0: x += m return x def inv_gcd(a: int, b: int): a = safe_mod(a, b) if a == 0: return b, 0 s, t = b, a m0, m1 = 0, 1 while t: u = s // t s -= t * u m0 -= m1 * u s, t = t, s m0, m1 = m1, m0 if m0 < 0: m0 += b // s return s, m0 def crt(r, m): assert len(r) == len(m) r0, m0 = 0, 1 for r1, m1 in zip(r, m): assert m1 >= 1 if m0 < m1: r0, r1 = r1, r0 m0, m1 = m1, m0 if m0 % m1 == 0: if r0 % m1 != r1: return 0, 0 continue g, im = inv_gcd(m0, m1) u1 = m1 // g if (r1 - r0) % g != 0: return 0, 0 x = ((r1 - r0) // g % u1) * im % u1 r0 += x * m0 m0 *= u1 if r0 < 0: r0 += m0 return r0, m0 # ---- main相当 ---- import sys input = sys.stdin.readline n = int(input()) r = [0] * n m = [0] * n for i in range(n): r[i], m[i] = map(int, input().split()) ans_r, ans_m = crt(r, m) if ans_m == 0: print(-1) else: if ans_r == 0: ans_r += ans_m print(ans_r % 1000000007)