#include <bits/stdc++.h>
using namespace std;
#define FOR(i, x, y) for (int i = x; i < y; i++)
#define FORN(i, x, y) for (int i = x; i <= y; i++)
#define DEC(i, x, y) for (int i = x; i >= y; i--)
#define scan1(X) scanf("%d", &X)
#define scan2(X, Y) scanf("%d%d", &X, &Y)
#define scan3(X, Y, Z) scanf("%d%d%d", &X, &Y, &Z)
#define scan4(X, Y, Z, W) scanf("%d%d%d%d", &X, &Y, &Z, &W)
#define scanl1(X) scanf("%lld", &X);
#define scanl2(X, Y) scanf("%lld%lld", &X, &Y)
#define scanl3(X, Y, Z) scanf("%lld%lld%lld", &X, &Y, &Z)
#define scanl4(X, Y, Z, W) scanf("%lld%lld%lld%lld", &X, &Y, &Z, &W)
#define print1(X) printf("%d\n", X);
#define print2(X, Y) printf("%d %d\n", X, Y);
#define print3(X, Y, Z) printf("%d %d %d\n", X, Y, Z);
#define print4(X, Y, Z, W) printf("%d %d %d %d\n", X, Y, Z, W);
#define printl1(X) printf("%lld\n", X);
#define printl2(X, Y) printf("%lld %lld\n", X, Y);
#define printl3(X, Y, Z) printf("%lld %lld %lld\n", X, Y, Z);
#define printl4(X, Y, Z, W) printf("%lld %lld %lld %lld\n", X, Y, Z, W);
#define max3(X, Y, Z) max(X, max(Y, Z))
#define max4(X, Y, Z, W) max(max(X, Y), max(Z, W))
#define min3(X, Y, Z) min(X, min(Y, Z))
#define min4(X, Y, Z, W) min(min(X, Y), min(Z, W))
#define popcount(X) __builtin_popcount(X)
#define all(x) x.begin(), x.end()
#define size(X) (int)X.size()
#define mp make_pair
#define pb push_back
#define fr first
#define sc second
#define lc(x) 2 * x
#define rc(x) 2 * x + 1
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<double, double> pdd;
typedef pair<ld, ld> pldld;
const long long l_inf = numeric_limits<long long>::max();
const long long l_ninf = numeric_limits<long long>::min();
const int inf = numeric_limits<int>::max();
const int ninf = numeric_limits<int>::min();
const double pi = 1.00 * acos(-1.00);
const double eps = 1e-8;
void cio(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
}
ll gcd(ll a, ll b){
    if (b == 0)
        return a;
    return gcd(b, a % b);
}
ll lcm(ll a, ll b) { return (a * (b / gcd(a, b))); }
int sq( int x ) {return x * x;}
////////////////////////////////////////////////////////////////////Header
struct Point{
    double x, y;
    Point operator + (Point rhs){
        return {x + rhs.x, y + rhs.y};
    }
    Point operator - (Point rhs){
        return {x - rhs.x, y - rhs.y};
    }
    bool operator < (Point rhs){
        if(x!=rhs.x) return x < rhs.x;
        return y < rhs.y;
    }
};
typedef vector<Point> Polygon;
double dot(Point a, Point b){
    return a.x * b.x + a.y * b.y;
}
double dis_square(Point a, Point b){
    return dot(a-b, a-b);
}
double ccw(Point a, Point b){
    return a.x * b.y - a.y * b.x;
}
double ccw(Point a, Point b, Point c){
    return ccw(b - a, c - b);
}
bool cmpxy(Point a, Point b){
    if(a.x != b.x) return a.x < b.x;
    return a.y < b.y;
}
bool cmpccw(Point a, Point b){
    if(ccw(a, b) != 0) return ccw(a, b) > 0;
    return dot(a, a) < dot(b, b);
}
vector<Point> convexhull(vector<Point> p){
    int num = size(p);
    sort(all(p), cmpxy);
    double x0 = p[0].x, y0 = p[0].y;
    for(auto& t : p){
        t.x -= x0;
        t.y -= y0;
    }
    sort(p.begin() + 1, p.end(), cmpccw);
    vector<Point> s;
    s.push_back(p[0]);
    s.push_back(p[1]);
    int next = 2;
    while(next < num){
        while(size(s) >= 2){
            Point sec = s.back(); s.pop_back();
            Point fir = s.back();
            if( ccw(fir, sec, p[next] ) > 0){
                s.push_back(sec);
                break;
            }
        }
        s.push_back(p[next++]);
    }
    for(auto& v: s){
        v.x += x0;
        v.y += y0;
    }
    return s;
}

int main () {
    cio();
    int n;
    cin>>n;
    vector<Point> p;
    for ( int i = 1; i <= n; i++ ) {
        double x, y;
        cin>>x>>y;
        p.pb({x, y});
    }
    auto ch = convexhull(p);
    ll ans = 0;
    for ( int i = 0; i < size(ch); i++ )
        for ( int j = i + 1; j < size(ch); j++ )
            ans = max(ans, (ll)abs(ch[i].x - ch[j].x) + (ll)abs(ch[i].y - ch[j].y));
    cout<<ans<<endl;
}

Measured memory_bytes: 9564