#include <bits/stdc++.h>

using namespace std;

int n,g;
vector<pair<long long,long long>> V;
long long m=0;
int G[100010],D[100010];
bool P[100010];

bool poredhhenhe(pair<long long,long long> x,pair<long long,long long> y)
{
    return x.second*y.first<y.second*x.first;
}

bool skretanje(int x1,int x2,int x3)
{
    pair<long long,long long> z1=V[x1],z2=V[x2],z3=V[x3];
    return (z2.first-z1.first)*(z3.second-z2.second)-(z2.second-z1.second)*(z3.first-z2.first)>0;
}

int main()
{
    scanf("%d",&n);
    for(int i=1; i<=n; i++)
    {
        long long x,y;
        scanf("%lld %lld",&x,&y);
        x /= 2;
        y /= 2;
        V.push_back({x,y});
        if(x<V[0].first) swap(V[0],V[i-1]);
        else if(x==V[0].first && y<V[0].second) swap(V[0],V[i-1]);
    }
    for(int i=1; i<n; i++)
    {
        V[i].first-=V[0].first;
        V[i].second-=V[0].second;
    }
    V[0] = {0,0};
    sort(V.begin()+1,V.end(),poredhhenhe);
    P[0] = 1;
    P[1] = 1;
    G[0] = 0;
    G[1] = 1;
    g = 1;
    for(int i=2; i<n; i++)
    {
        while(!skretanje(G[g-1],G[g],i)) g--;
        G[++g] = i;
        P[i] = 1;
    }
    for(int i=0; i<=g; i++)
    {
        int d = 1;
        D[0] = G[(i ? i-1 : g)];
        D[1] = G[i];
        for(int j=G[i]+1; ; j++)
        {
            if((j<n?j:j-n)==G[(i+1<=g?i+1:i+1-(g+1))]) continue;
            while(!skretanje(D[d-1],D[d],(j<n?j:j-n))) d--;
            D[++d] = (j<n?j:j-n);
            if((j<n?j:j-n)==G[(i+2<=g?i+2:i+2-(g+1))]) break;
        }
        long long v=0;
        for(int j=1; j<d; j++) v += V[D[j]].first*V[D[j+1]].second-V[D[j]].second*V[D[j+1]].first;
        v += V[D[d]].first*V[D[1]].second-V[D[d]].second*V[D[1]].first;
        long long v2=0;
        v2 = V[G[i]].first*V[G[(i+1<=g?i+1:i+1-(g+1))]].second-V[G[i]].second*V[G[(i+1<=g?i+1:i+1-(g+1))]].first;
        v2 += V[G[(i+1<=g?i+1:i+1-(g+1))]].first*V[G[(i+2<=g?i+2:i+2-(g+1))]].second-V[G[(i+1<=g?i+1:i+1-(g+1))]].second*V[G[(i+2<=g?i+2:i+2-(g+1))]].first;
        v2 += V[G[(i+2<=g?i+2:i+2-(g+1))]].first*V[G[i]].second-V[G[(i+2<=g?i+2:i+2-(g+1))]].second*V[G[i]].first;
        v2 -= v;
        m = max(m,v2);
    }
    long long u = 0;
    for(int i=0; i<g; i++) u += V[G[i]].first*V[G[i+1]].second-V[G[i]].second*V[G[i+1]].first;
    printf("%lld\n",(u-m)*2);
    return 0;
}