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: Wrong Answer)

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+1;
std::vector<int> edge[N];
int mi = 1e9;
pair<int,int> nd;
pair<int,int> cend_1;
int par[N];

int main(){
  pair<int,int> ply, plx, pgy, pgx;
  int mgx = 0, mgy=0, mlx=1e9+1, mly=1e9+1;
  int n, i;
  cin >>n;
  for(i=0;i<n;i++)
  {
    int x, y;
    cin >> x >> y;
    if(mlx >= x){
      if(mlx!=x)
        plx = make_pair(x,y);
      else{
        if (plx.second > y)plx=make_pair(x,y);
      }
      mlx=x;
    }

    if(mly >= y){
      if(mly!=y)
        ply = make_pair(x,y);
      else{
        if (ply.first > x)ply=make_pair(x,y);
      }
      mly = y;
    }


        if(mgy <= y){
          if(mgy!=y)
            pgy = make_pair(x,y);
          else{
            if (pgy.first < x)pgy=make_pair(x,y);
          }
          mgy = y;
        }


            if(mgx <= x){
              if(mgx!=x)
                pgx = make_pair(x,y);
              else{
                if (pgx.second < x)pgx=make_pair(x,y);
              }
              mgx = x;
            }
  }

  cout << max( abs(pgx.first-plx.first) + abs(pgx.second-plx.second),
  max(abs(pgx.first - ply.first) + abs(pgx.second - ply.second) ,
  max(abs(pgy.first-plx.first) + abs(pgy.second-plx.second), abs(pgy.first - ply.first) + abs(pgy.second - ply.second))))<<endl;
  return 0;
}