# correct M = 10**6 + 10 n = int(input()) # -M, ..., -1, 0, 1, ..., M # c[i] = weight of i - M c = [0] * (2 * M + 1) for _ in range(n): a, b = map(int, input().split()) c[M + a] += 1 c[M + b] -= 1 c[M + a - b] -= 1 # prefix sum c.insert(0, 0) for i in range(2 * M + 1): c[i + 1] += c[i] max_f, argmax = -1, 0 for m in range(1, M): # max{k | k * m <= M} max_k = M // m f_m = -n * max_k # sum C(-tm), ..., C(-m), C(0), C(m), ..., C(tm) for k in range(-max_k, max_k + 1): f_m -= c[M + k * m] if f_m > max_f: max_f, argmax = f_m, m print(argmax)