#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

struct Point {
    ll x, y;
    bool operator<(const Point &p) const {
        return x<p.x || (x==p.x && y<p.y);
    }
};

ll n(const Point &O, const Point &A, const Point &B) {
    return (A.x-O.x)*(B.y-O.y)-(A.y-O.y)*(B.x-O.x);
}
vector<Point> f1(vector<Point> &p) {
    ll m = p.size();
    if(m <= 1) return p;
    sort(p.begin(), p.end());
    vector<Point> h;
    for(ll i=0;i<m;i++) {
        while(h.size() >= 2 && n(h[h.size()-2], h[h.size()-1], p[i])<=0)
            h.pop_back();
        h.push_back(p[i]);
    }
    ll mm=h.size();
    for(ll i=m-2;i>=0;i--) {
        while(h.size()>mm && n(h[h.size()-2], h[h.size()-1], p[i])<=0)
            h.pop_back();
        h.push_back(p[i]);
    }
    h.pop_back();
    return h;
}
ll f2(const vector<Point> &h) {
    ll n=h.size();
    ll p=0;
    for(ll i=0;i<n;i++) {
        ll j=(i+1)%n;
        p+= h[i].x*h[j].y-h[i].y*h[j].x;
    }
    return abs(p);
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    ll n;
    cin >> n;
    vector<Point> p(n);
    for(ll i=0;i<n;i++) cin >> p[i].x >> p[i].y;
    ll minn=LLONG_MAX;
    for(ll i=0;i<n;i++) {
        vector<Point> a;
        for(ll j=0;j<n;j++) {
            if(i!=j) a.push_back(p[j]);
        }
        minn = min(minn, f2(f1(a)));
    }
    cout << (minn / 2) << endl;
    return 0;
}