#用户登录https://www.lanqiao.cn/problems/3916/learning/
n = int(input())
add_max, add_min = -float('inf'), float('inf')
sub_max, sub_min = -float('inf'), float('inf')
for _ in range(n):
x, y = map(int, input().split())
add_max = max(add_max, x + y)
add_min = min(add_min, x + y)
sub_max = max(sub_max, x - y)
sub_min = min(sub_min, x - y)
print(max(add_max - add_min, sub_max - sub_min))
'''
计算给定N个点的坐标中,任意两个点之间的最大曼哈顿距离
no直接遍历所有点对,代码首先读取输入的N个点的坐标,并初始化四个变量add_max, add_min, sub_max, sub_min分别为负无穷和正无穷
然后对于每个点的坐标(x, y),分别计算x+y和x-y的最大值和最小值;
最后输出的结果是max(add_max - add_min, sub_max - sub_min),即x+y和x-y的最大差值;
利用曼哈顿距离的性质,通过计算x+y和x-y的最大差值来得到最大曼哈顿距离,
避免了直接遍历所有点对的复杂度,提高了计算效率从而避免超时带来的不便。
'''