#include<bits/stdc++.h>
using namespace std;
struct Tacka{
	int x, y;
};


int orijentacija(Tacka a, Tacka b, Tacka c){
	int o = (b.y-a.y)*(c.x-b.x)-(b.x-a.x)*(c.y-b.y);
	if(o>0) return 1;
	else return -1;
}

Tacka t;


int compare(const void *vp1, const void *vp2){
	Tacka *a = (Tacka *)vp1;
	Tacka *b = (Tacka *)vp2;
	return orijentacija(t, *a, *b);
}

#define int long long

vector<Tacka> convexhull(Tacka tacke[], int n){
	int ymin = tacke[0].y;
	int ind = 0;
	for(int i=1;i<n;i++){
		int tr = tacke[i].y;
		if(tr<ymin || (ymin==tr && tacke[i].x<tacke[ind].x)){
			ymin = tr;
			ind = i;
		}
	}
	//cerr<<ymin<<"gg"<<endl;
	Tacka temp = tacke[0];
	tacke[0] = tacke[ind];
	tacke[ind] = temp;
	t = tacke[0];
	qsort(&tacke[1], n-1, sizeof(Tacka), compare);
	vector<Tacka> v;
	v.push_back(tacke[0]);
	v.push_back(tacke[1]);
	v.push_back(tacke[2]);
	//v.push_back(tacke[3]);
	for(int i=3;i<n;i++){
		while((v.size()>1) && orijentacija(v[v.size()-2], v[v.size()-1], tacke[i])==1)
		v.pop_back();
		v.push_back(tacke[i]);
	}
	return v;
}


int povrsina(vector<Tacka> tacke ,int n){
	int p = 0;
	int j = n-1;
	for(int i=0;i<n;i++){
		int c = tacke[i].x+tacke[j].x;
		int v = tacke[i].y-tacke[j].y;
		int b = (long long) c*v;
		p+=b;
		j = i;
	}
	p/=2;
	return abs(p);
}

signed main(){
	int n;
	cin>>n;
	Tacka tacke[n];
	int m = 1e18;
	for(int i=0;i<n;i++){
		int x,y;
		cin>>x>>y;
		tacke[i].x = x;
		tacke[i].y = y;
	}
	/*vector<Tacka> v = convexhull(tacke, n-1);
		for(auto u:v) cout<<u.x<<" "<<u.y<<endl;
		cout<<endl;*/ 
	for(int i=0;i<n;i++){
		vector<Tacka> vx;
		for(int j=0;j<n;j++){
			if(j!=i) vx.push_back(tacke[j]);
		}
		Tacka trtacke[n-1];
		for(int j=0;j<n-1;j++) trtacke[j] = vx[j];
		vector<Tacka> v = convexhull(trtacke, n-1);
		//for(auto u:v) cout<<u.x<<" "<<u.y<<endl;
		//cout<<endl; 
		int p = povrsina(v, v.size());
		//cout<<p<<endl;
		m = min(m, p);
	}
	cout<<m<<endl;
}