Problem:
Score : 500 points

Problem Statement

There are N points on the 2D plane, i-th of which is located on (x_i, y_i).
There can be multiple points that share the same coordinate.
What is the maximum possible Manhattan distance between two distinct points?

Here, the Manhattan distance between two points (x_i, y_i) and (x_j, y_j) is defined by |x_i-x_j| + |y_i-y_j|.

Constraints

2 \leq N \leq 2 \times 10^5

1 \leq x_i,y_i \leq 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
x_1 y_1
x_2 y_2
:
x_N y_N

Output

Print the answer.

Sample Input 1

3
1 1
2 4
3 2

Sample Output 1

4

The Manhattan distance between the first point and the second point is |1-2|+|1-4|=4, which is maximum possible.

Sample Input 2

2
1 1
1 1

Sample Output 2

0

Solution in PyPy3 (7.3.0) (judge verdict: Accepted)

#!usr/bin/env python3
from collections import defaultdict, deque
from heapq import heappush, heappop
from itertools import permutations, accumulate
import sys
import math
import bisect
def LI(): return [int(x) for x in sys.stdin.readline().split()]
def I(): return int(sys.stdin.readline())
def LS():return [list(x) for x in sys.stdin.readline().split()]
def S():
    res = list(sys.stdin.readline())
    if res[-1] == "\n":
        return res[:-1]
    return res
def IR(n):
    return [I() for _ in range(n)]
def LIR(n):
    return [LI() for _ in range(n)]
def SR(n):
    return [S() for _ in range(n)]
def LSR(n):
    return [LS() for _ in range(n)]

sys.setrecursionlimit(1000000)
mod = 1000000007

def solve():
    n = I()
    p = LIR(n)
    r = [(x+y,x-y) for x,y in p]
    mx = [float("inf"),float("inf")]
    my = [float("inf"),float("inf")]
    Mx = [-float("inf"),float("inf")]
    My = [float("inf"),-float("inf")]
    for X,Y in r:
        if X < mx[0]:
            mx = [X,Y]
        if Y < my[1]:
            my = [X,Y]
        if Mx[0] < X:
            Mx = [X,Y]
        if My[1] < Y:
            My = [X,Y]
    ans = 0
    for X,Y in r:
        x = (X+Y)//2
        y = (X-Y)//2
        for A,B in (mx,my,Mx,My):
            a = (A+B)//2
            b = (A-B)//2
            d = abs(x-a)+abs(y-b)
            if ans < d:
                ans = d
    print(ans)
    return

#Solve
if __name__ == "__main__":
    solve()