INF = 10**10 N = int(input()) A = [0] * N B = [0] * N for i in range(N): x, y = map(int, input().split()) A[i] = x - y B[i] = x + y as_ = sorted(A) bs_ = sorted(B) ok = INF ng = -1 def check(d): for x in (as_[0], as_[-1] - d): for y in (bs_[0], bs_[-1] - d): lx = INF ly = INF rx = -INF ry = -INF for a, b in zip(A, B): if x <= a <= x + d and y <= b <= y + d: continue lx = min(lx, a) rx = max(rx, a) ly = min(ly, b) ry = max(ry, b) if rx - lx <= d and ry - ly <= d: return True return False while ok - ng > 1: mid = (ok + ng) // 2 if check(mid): ok = mid else: ng = mid print(ok)