import sys input = sys.stdin.readline INF = 10 ** 18 N = int(input()) P = [] for _ in [0] * N: x, y = map(int, input().split()) P.append((x + y, x - y)) max_x = max_y = -INF min_x = min_y = INF for x, y in P: if(max_x < x): max_x = x if(max_y < y): max_y = y if(min_x > x): min_x = x if(min_y > y): min_y = y def func(mid): mid *= 2 block = [[0] * 2 for _ in [0] * 2] for x, y in P: if((x < max_x - mid and x > min_x + mid) or (y < max_y - mid and y > min_y + mid)): return False if(x < max_x - mid and y < max_y - mid): block[0][0] = 1 if(x > min_x + mid and y < max_y - mid): block[1][0] = 1 if(x < max_x - mid and y > min_y + mid): block[0][1] = 1 if(x > min_x + mid and y > min_y + mid): block[1][1] = 1 if((block[0][0] | block[1][1]) == 0 or (block[0][1] | block[1][0]) == 0): return True return False ok = 2 * 10 ** 9 + 1 ng = -1 while(abs(ok - ng) > 1): mid = (ok + ng) // 2 if func(mid): ok = mid else: ng = mid print(ok)