import sys



sys.setrecursionlimit(10**7)

def I(): return int(sys.stdin.readline().rstrip())

def MI(): return list(map(int,sys.stdin.readline().rstrip().split()))

def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))  #空白あり

def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし

def S(): return sys.stdin.readline().rstrip()

def LS(): return list(sys.stdin.readline().rstrip().split())  #空白あり

def LS2(): return list(sys.stdin.readline().rstrip())  #空白なし





N = I()

xy = [tuple(MI()) for _ in range(N)]

A = [sum(xy[i]) for i in range(N)]

a = max(A)-min(A)

B = []

for i in range(N):

    x,y = xy[i]

    B.append(x-y)

b = max(B)-min(B)



print((max(a,b)))





import sys

def I(): return int(sys.stdin.readline().rstrip())

def MI(): return list(map(int,sys.stdin.readline().rstrip().split()))





N = I()

A,B = [],[]  # x+y,x-y たちのリスト

for i in range(N):

    x,y = MI()

    A.append(x+y)

    B.append(x-y)



print((max(max(A)-min(A),max(B)-min(B))))

import sys

sys.setrecursionlimit(10**7)


def I():
    return int(sys.stdin.readline().rstrip())


def MI():
    return list(map(int, sys.stdin.readline().rstrip().split()))


def LI():
    return list(map(int, sys.stdin.readline().rstrip().split()))  # 空白あり


def LI2():
    return list(map(int, sys.stdin.readline().rstrip()))  # 空白なし


def S():
    return sys.stdin.readline().rstrip()


def LS():
    return list(sys.stdin.readline().rstrip().split())  # 空白あり


def LS2():
    return list(sys.stdin.readline().rstrip())  # 空白なし


N = I()
xy = [tuple(MI()) for _ in range(N)]
A = [sum(xy[i]) for i in range(N)]
a = max(A) - min(A)
B = []
for i in range(N):
    x, y = xy[i]
    B.append(x - y)
b = max(B) - min(B)
print((max(a, b)))

import sys


def I():
    return int(sys.stdin.readline().rstrip())


def MI():
    return list(map(int, sys.stdin.readline().rstrip().split()))


N = I()
A, B = [], []  # x+y,x-y たちのリスト
for i in range(N):
    x, y = MI()
    A.append(x + y)
    B.append(x - y)
print((max(max(A) - min(A), max(B) - min(B))))

- -sys.setrecursionlimit(10**7) -def LI(): -    return list(map(int, sys.stdin.readline().rstrip().split()))  # 空白あり - - -def LI2(): -    return list(map(int, sys.stdin.readline().rstrip()))  # 空白なし - - -def S(): -    return sys.stdin.readline().rstrip() - - -def LS(): -    return list(sys.stdin.readline().rstrip().split())  # 空白あり - - -def LS2(): -    return list(sys.stdin.readline().rstrip())  # 空白なし - - -xy = [tuple(MI()) for _ in range(N)] -A = [sum(xy[i]) for i in range(N)] -a = max(A) - min(A) -B = [] +A, B = [], []  # x+y,x-y たちのリスト -    x, y = xy[i] +    x, y = MI() +    A.append(x + y) -b = max(B) - min(B) -print((max(a, b))) +print((max(max(A) - min(A), max(B) - min(B))))