#include<bits/stdc++.h>
#define ll long long
#define MAXN 100007
#define x first
#define y second
using namespace std;
vector<pair<ll,ll>>pts;
pair<ll,ll>p0;
bool cmp0(pair<ll,ll>p1, pair<ll,ll>p2)
{
    return make_pair(p1.y,p1.x)<make_pair(p2.y,p2.x);
}
bool cmp1(pair<ll,ll>p1, pair<ll,ll>p2)
{
    if(p1.x==p0.x && p1.y==p0.y) return true;
    if(p2.x==p0.x && p2.y==p0.y) return false;
    return p0.x*(p1.y-p2.y)+p1.x*(p2.y-p0.y)+p2.x*(p0.y-p1.y) < 0; 
}
ll or_area(pair<ll,ll>a, pair<ll,ll>b, pair<ll,ll>c)
{
    return a.x*(b.y-c.y)+b.x*(c.y-a.y)+c.x*(a.y-b.y);
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    int n;
    ll x,y;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>x>>y;
        pts.emplace_back(x,y);
    }
    p0=*min_element(pts.begin(), pts.end(), cmp0);
    sort(pts.begin(), pts.end(), cmp1);
    vector<pair<ll,ll>>ch;
    for(int i=0;i<n;i++)
    {
        while(ch.size()>1 && or_area(ch[ch.size()-2],ch.back(),pts[i])>0) 
        {
            ch.pop_back();
        }
        ch.push_back(pts[i]);
    }
    int sz = ch.size();
    ll P=0;
    for(int i=1;i<sz-1;i++) P+=abs(or_area(p0,ch[i],ch[i+1]))/2;
    ll ans=P;
    int t=0, i=0;
    vector<vector<pair<ll,ll>>>triangles(sz);
    while(i<n)
    {
        if(pts[i].x==ch[t].x && pts[i].y==ch[t].y)
        {
            t++;
            i++;
            continue;
        }
        while(i<n && or_area(p0,pts[i],ch[t]) < 0)
        {
            if(or_area(ch[sz-1], pts[i], ch[1]) < 0) triangles[0].push_back(pts[i]);
            if(or_area(ch[t-1], pts[i], ch[(t+1)%sz]) < 0) triangles[t].push_back(pts[i]);
            if(or_area(ch[t-2], pts[i], ch[t]) < 0) triangles[t-1].push_back(pts[i]);
            i++;
        }
    }
    for(int i=0;i<sz;i++)
    {
        triangles[i].push_back(ch[(i+sz-1)%sz]);
        triangles[i].push_back(ch[(i+1)%sz]);
        p0=*min_element(triangles[i].begin(), triangles[i].end(), cmp0);
        sort(triangles[i].begin(), triangles[i].end(), cmp1);
        vector<pair<ll,ll>>cht;
        for(int j=0;j<triangles[i].size();j++)
        {
            while(cht.size()>1 && or_area(cht[cht.size()-2],cht.back(),triangles[i][j])>0) 
            {
                cht.pop_back();
            }
            cht.push_back(triangles[i][j]);
        }
        ll dP=0;
        for(int j=1;j<cht.size()-1;j++) dP+=abs(or_area(p0,cht[j],cht[j+1]))/2;
        ans=min(ans, P-abs(or_area(ch[(i+sz-1)%sz],ch[i],ch[(i+1)%sz])/2)+dP);
    }
    cout<<ans<<endl;
}