#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
#define ll long long

struct T {
    ll x,y;
    bool operator<(const T & t) const {
        return (x == t.x) ? y < t.y : x < t.x;
    }
};
ll proiz(const T& t1,const T& t2,const T& t3) {
    return (t2.x - t1.x) * (t3.y - t1.y) - (t2.y - t1.y) * (t3.x - t1.x);
}
vector<T> kon(vector<T>& t) {
    sort(t.begin(),t.end());
    vector<T> d,g;
    for(const T& t1 : t) {
        while(d.size() >= 2&&proiz(d[d.size()-2],d[d.size()-1],t1)<=0) d.pop_back();
        d.push_back(t1);
    }
    for(int i = t.size()-1;i >= 0; i--) {
        while(g.size() >= 2&&proiz(g[g.size()-2],g[g.size()-1],t[i])<=0) g.pop_back();
        g.push_back(t[i]);
    }
    d.pop_back();
    g.pop_back();
    d.insert(d.end(),g.begin(),g.end());
    return d;
}
ll pov(const vector<T>& t) {
    ll p = 0;
    for(int i = 0; i < t.size(); i++) {
        int j = (i+1) % t.size();
        p += t[i].x * t[j].y;
        p-= t[j].x * t[i].y;
    }
    return abs(p)/2;
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin >> n;
    vector<T> t(n);
    for(int i = 0; i < n;i++) cin >> t[i].x >> t[i].y;
    vector<T> k = kon(t);
    ll m = LLONG_MAX;
    for(int i = 0; i < n;i++) {
        vector<T> mt;
        for(int j = 0; j < n;j++) {
            if(j != i) mt.push_back(t[j]);
        }
        vector<T> mo = kon(mt);
        ll p = pov(mo);
        m = min(m,p);
    }
    cout << m;
}