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 Java (OpenJDK 11.0.6) (judge verdict: Time Limit Exceeded)

import java.util.*;
public class Main {

    public static void main(String[] args){
        Main main = new Main();
        main.input();
        main.solve();
        main.output();
    }

    int N; // 2<=N<=200000
    Point[] points;
    long result;

    private void input() {
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();
        points = new Point[N];
        for (int i=0; i<N; i++) {
            Point point = new Point();
            point.x = sc.nextLong();
            point.y = sc.nextLong();
            points[i] = point;
        }
        result = 0L;
    }

    private void solve() {
        for (int i=0; i<N; i++) {
            Point p1 = points[i];
            for (int j=i; j<N; j++) {
                Point p2 = points[j];
                long d = p1.getDistance(p2);
                if (result < d) {
                    result = d;
                }
            }
        }
    }

    private void output() {
        System.out.println(result);
    }
}

class Point {
    long x;
    long y;

    long getDistance(Point p) {
        long x = p.x - this.x;
        if (x < 0) { x = x*(-1); }
        long y = p.y - this.y;
        if (y < 0) { y = y*(-1); }
        return x + y;
    }
}