#include <bits/stdc++.h>
#define N 1002
#define MAXK 600005
#define MOD 998244353
#define pii pair<int, int>
#define pll pair<ll, ll>
#define pli pair<ll, int>
#define ll long long
using namespace std;

map<int, bool>in;

struct tacka {
    ll x, y;
    int id;
};

int orjentacija(tacka a, tacka b, tacka c) {
    ll v = a.x*(b.y-c.y)+b.x*(c.y-a.y)+c.x*(a.y-b.y);
    if (v < 0) return -1;
    if (v > 0) return +1;
    return 0;
}

bool smer(tacka a, tacka b, tacka c) {
    int o = orjentacija(a, b, c);
    return o < 0 ;
}

bool f(const tacka& a, const tacka& b, const tacka& p0)
{
    int o = orjentacija(p0, a, b);
    if (o == 0) {
        return (p0.x - a.x) * (p0.x - a.x) + (p0.y - a.y) * (p0.y - a.y)
             < (p0.x - b.x) * (p0.x - b.x) + (p0.y - b.y) * (p0.y - b.y);
    }
    return o < 0;
}
ll povr2(vector<tacka>st)
{
    ll pov = 0;
    int j = st.size()- 1;
    for (int i = 0; i < st.size(); i++)
    {
        pov += (st[j].x + st[i].x) * (st[j].y - st[i].y);
        j = i;
    }

    return abs(pov / 2);
}

ll povr(vector<tacka>&a)
{
    tacka p0 = a[0];
    for (const tacka& p : a) {
        if ((p.y<p0.y) || (p.y==p0.y && p.x<p0.x)) {
            p0 = p;
        }
    }

    sort(a.begin(), a.end(), [&](const tacka& a, const tacka& b) {
        return f(a, b, p0);
    });

    vector<tacka> st;
    for (int i = 0; i < (int)a.size(); i++) {
        while (st.size() > 1 && !smer(st[st.size()-2], st.back(), a[i]))
            st.pop_back();
        st.push_back(a[i]);
    }
    for(auto d:st)
    {
        in[d.id]=true;
    }
    a=st;


    return povr2(st);

}


void solve()
{
    int n;cin>>n;
    vector<tacka>a(n), a2(n);

    for(int i = 0; i<n; i++)
    {
        cin>>a[i].x>>a[i].y;
        a[i].id=i;
        a2[i]=a[i];
    }


    ll povv = povr(a);
    if(a.size()==n && n>2000){
        ll ans = 1e17;
        for(int i = 0; i<n; i++)
        {
            tacka p2 = a[i], p1 = (i==0 ? a[n-1]:a[i-1]), p3 =(i==n-1 ? a[0] : a[i+1]);
            vector<tacka>v3;
            v3.push_back(p1);
            v3.push_back(p2);
            v3.push_back(p3);
            ans=min(ans, povv-povr2(v3));
        }

        cout<<ans<<"oo\n";
    }
    ll ans = 1e17;
    for(int i = 0; i<a.size(); i++)
    {
        if(!in[i])continue;
        vector<tacka>a1;
        for(int j = 0; j<n; j++)
        {
            if(a2[j].id!=a[i].id)a1.push_back(a2[j]);
        }
        ans=min(ans, povr(a1));
    }
    cout<<ans<<"\n";
    return;



}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    //int t;cin>>t;
    int t = 1;
    while (t--) {
        solve();
    }

    return 0;
}