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 JavaScript (Node.js 12.16.1) (judge verdict: Runtime Error)

const main = (input) => {
  input = input.split("\n")
  var N=Number(input[0]);
  let point=[];
  for (var i=1; i<=N;i++){
    value =input[i].split(" ").map(n=>Number(n));

     // 同じ組合せは削除。
    if (point.indexOf(value)==-1){
      point.push(value);
    }
  }

  // 総当たりはよくない
  //x、y単体の極端な奴だけを対象にする

  length=point.length

 
  var X=[];
  var Y=[];
  for (var i=0; i<length;i++){
    X[i] = [point[i][0]];
    Y[i] = [point[i][1]];
  }

  X.sort((a,b)=>b-a);
  var XMAX=X[0];

  Y.sort((a,b)=>b-a);
  var YMAX=Y[0];

  var memo=[];
  for (var i=0; i<length;i++){
    if (point[i][0]==XMAX) {
      if (memo.indexOf(i)==-1){
        memo.push(i);
      }
    }
    if (pointY[i][1]==YMAX) {
      if (memo.indexOf(i)==-1){
        memo.push(i);
      }
    }
  }

  length = memo.length;
  
  let dist = [];
  for (var i=0; i<length; i++){
    for (var j=i+1; j<length;j++){
      dist.push(Math.abs(point[memo[i]][0]-point[memo[j]][0])+Math.abs(point[memo[i]][1]-point[memo[j]][1]));
    }
  }
  dist.sort((a,b)=>b-a);

  console.log(dist[0]);
  };
  
main(require('fs').readFileSync('/dev/stdin', 'utf8'));