#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#define fi first
#define se second

using namespace std;

const int INF=numeric_limits<int>::max();

int posmin;
int px,py;

bool cmp(const pair<int,int>& A,const pair<int,int>& B){
    if(A.first==px && A.second==py)return true;
    if(B.first==px && B.second==py)return false;
    if((A.fi-px)*(B.se-py)>(B.fi-px)*(A.se-py))return true;
    return false;
}

int ccw(const pair<int,int>& p1,const pair<int,int>& p2,const pair<int,int>& p3){
    int ans= (p2.fi-p1.fi)*(p3.se-p1.se)-(p2.se-p1.se)*(p3.fi-p1.fi);
    return ans;
}

int resi(const vector<pair<int,int>>& v){
    int n=v.size();
    int ans=0ll;
    for(int i=0;i<n-1;i++){
        ans+=v[i].fi*v[i+1].se;
        ans-=v[i].se*v[i+1].fi;
    }
    ans+=v[n-1].fi*v[0].se;
    ans-=v[n-1].se*v[0].fi;
    return abs(ans);
}

int resenje(vector<pair<int,int>>& v){
    sort(v.begin(),v.end(),cmp);
    vector<pair<int,int>> pos;
    int n=v.size();
    for(int i=0;i<n;i++){
        int sz=pos.size();
        while(pos.size()>1 && ccw(pos[sz-2],pos[sz-1],v[i])<=0){pos.pop_back();sz--;}
        pos.push_back(v[i]);
    }
    return resi(pos);
}


int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int n;
    cin>>n;
    vector<pair<int,int>> v(n);
    for(int i=0;i<n;i++)cin>>v[i].fi>>v[i].se;
    posmin=0ll;
    for(int i=1;i<n;i++){
        if(v[i].se<v[posmin].se || (v[i].se==v[posmin].se && v[i].fi<v[posmin].fi))posmin=i;
    }
    px=v[posmin].fi;
    py=v[posmin].se;

    sort(v.begin(),v.end(),cmp);


    vector<int> pos;
    for(int i=0;i<n;i++){
        int sz=pos.size();
        while(pos.size()>1 && ccw(make_pair(v[pos[sz-2]].fi,v[pos[sz-2]].se),make_pair(v[pos[sz-1]].fi,v[pos[sz-1]].se),v[i])<0){pos.pop_back();sz--;}
        pos.push_back(i);
    }
    //for(int i=0;i<pos.size();i++)cout<<pos[i]<<' ';
    //cout<<endl;
    int ans=0ll;
    for(int i=0;i<pos.size()-1;i++){
        ans+=v[pos[i]].fi*v[pos[i+1]].se;
        ans-=v[pos[i]].se*v[pos[i+1]].fi;
    }
    ans+=v[pos[pos.size()-1]].fi*v[pos[0]].se;
    ans-=v[pos[0]].fi*v[pos[pos.size()-1]].se;
    ans=abs(ans);
    int odg=ans;
    //cout<<ans<<endl;


    vector<pair<int,int>> a;
    v.push_back(make_pair(px,py));
    pos.push_back(n);
    for(int i=1;i<pos.size()-1;i++){
        a.clear();
        for(int j=pos[i-1];j<=pos[i+1];j++){
            if(j==pos[i])continue;
            a.push_back(v[j]);
        }
        int br=ans;
        br+=resenje(a);
        a.clear();
        a.push_back(v[pos[i-1]]);
        a.push_back(v[pos[i]]);
        a.push_back(v[pos[i+1]]);
        br-=resenje(a);
        odg=min(br,odg);
        a.clear();
    }

    v.pop_back();
    a.clear();
    posmin=1ll;
    for(int i=1;i<v.size();i++){
        if(v[i].se<v[posmin].se || (v[i].se==v[posmin].se && v[i].fi<v[posmin].fi))posmin=i;
        a.push_back(v[i]);
    }
    px=v[posmin].fi;
    py=v[posmin].se;
    odg=min(odg,resenje(a));
    cout<<odg/2ll<<endl;

    return 0;
}