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 C++ (GCC 9.2.1) (judge verdict: Accepted)

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
struct node{
	int x,y;
	long long t;
}f[N];
int n;
inline bool mycmp(node x,node y) {return x.t>y.t;}
inline int read()
{
	int Num=0,f=1; char ch=getchar();
	while(ch<'0'||ch>'9') {if(ch=='-') f=-1; ch=getchar();}
	while(ch>='0'&&ch<='9') {Num=(Num<<1)+(Num<<3)+ch-'0'; ch=getchar();}
	return Num*f;
}
int main()
{
	n=read();
	for(int i=1;i<=n;i++)
	{
		f[i].x=read(),f[i].y=read();
		f[i].t=f[i].x+f[i].y;
	}
	sort(f+1,f+1+n,mycmp);
	long long ans=(long long)abs(f[1].x-f[n].x)+abs(f[1].y-f[n].y);
	for(int i=1;i<=n;i++)
	{
		f[i].x=abs(f[i].x-1000000000);f[i].t=f[i].x+f[i].y;
	}
	sort(f+1,f+1+n,mycmp);
	 ans=max((long long)abs(f[1].x-f[n].x)+abs(f[1].y-f[n].y),ans);
	printf("%lld",ans);
	return 0;
}