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: Time Limit Exceeded)

#include<bits/stdc++.h>
using namespace std;
const int maxn=201000;
int n,ans=-maxn;
struct point{int x,y;}p[maxn];
bool cmp(point a,point b){return (a.x<b.x)||(a.x==b.x&&a.y<b.y);}
int myabs(int x){if(x>0)return x;return -x;}
int dis(int a,int b){return myabs(p[a].x-p[b].x)+myabs(p[a].y-p[b].y);}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d%d",&p[i].x,&p[i].y);
	sort(p+1,p+1+n,cmp);
	if(n==1)printf("0");
	else if(n==2)printf("%d",dis(1,2));
	else{
		for(int i=1;i<n;i++)
		for(int j=i+1;j<=n;j++)
		ans=max(ans,dis(i,j));
		printf("%d",ans);
	}
	/*
	else{
		for(int i=1;i<=5000;i++)
		for(int j=n-5000;j<=n;j++)
		if(i!=j)ans=max(ans,dis(i,j));
		printf("%d",ans);
	}
	*/
	return 0;
}