import itertools as iter import collections as coll import heapq as hq import bisect as bis from decimal import Decimal as dec from functools import cmp_to_key import math import sys #import pypyjit #pypyjit.set_param('max_unroll_recursion=-1') sys.setrecursionlimit(10 ** 6) inp = sys.stdin.readline input = lambda : inp().rstrip() getN = lambda : int(inp()) getNs = lambda : map(int, inp().split()) getList = lambda :list(map(int, inp().split())) getStrs = lambda n : [input() for _ in [0] * n] def yexit(): print("Yes"); exit(0) def nexit(): print("No"); exit(0) pi = 3.141592653589793 mod = 1000000007 MOD = 998244353 INF = 4611686018427387903 dx = [1, 0, -1, 0]; dy = [0, 1, 0, -1] """ Main Code """ n = getN() house = [] for _ in [0] * n: x, y = getNs() house.append([x + y, x - y]) x_max = y_max = -INF x_min = y_min = INF for x, y in house: x_max = max(x_max, x) y_max = max(y_max, y) x_min = min(x_min, x) y_min = min(y_min, y) a = b = -INF for x, y in house: a = max(a, min(max(x_max - x, y_max - y), max(x - x_min, y - y_min))) b = max(b, min(max(x_max - x, y - y_min), max(x - x_min, y_max - y))) ans = min(a, b) // 2 print(ans)