# https://yukicoder.me/submissions/1039531 を PyPy に移植 n = int(input()) ab = [tuple(map(int, input().split())) for _ in range(n)] M = 1_000_000 ini = [0] * (M * 2 + 10) for a, b in ab: ini[a + M] += 1 ini[b + M] -= 1 ini[a - b + M] -= 1 acc = [0] * (len(ini) + 1) for i in range(len(ini)): acc[i + 1] = acc[i] + ini[i] def get_sum(l: int, r: int) -> int: return acc[min(r, len(ini))] - acc[max(l, 0)] fs = [0] * (M + 2) for m in range(2, M + 1): for st in range(0, M, m): en = st + m we = st // m fs[m] += (get_sum(st + M, en + M)) * we fs[m] += (get_sum(-en + M, -st + M)) * (-we - 1) argmax = 1 maxval = fs[1] for i in range(2, M + 1): if fs[i] > maxval: maxval = fs[i] argmax = i print(argmax)