#include <cstdio>
#include <cassert>
#include <iostream>
#include <algorithm>
using namespace std;
FILE *f = fopen("rubarba.in","r");
FILE *g = fopen("rubarba.out","w");
struct punct{
int x,y;
bool operator < (const punct &other)const{
if(x != other.x){
return x < other.x;
}
return y < other.y;
}
}V[100005],hull[200005];
long long det(punct A,punct B,punct C){
return 1LL * A.x * (B.y - C.y) + 1LL * B.x * (C.y - A.y) + 1LL * C.x * (A.y - B.y);
}
long long dotProd(punct a,punct b){
return 1LL * a.x * b.x + 1LL * a.y * b.y;
}
double dist(punct P,long long a,long long b,long long c){
return fabs(a * P.x + b * P.y + c ) / sqrt(a * a + b * b);
}
bool cmp(punct a,punct b){
if(det(V[1],a,b)){
return det(V[1],a,b) > 0;
}
return 1LL * (a.x - V[1].x) * (a.x - V[1].x) + 1LL * (a.y - V[1].y) * (a.y - V[1].y) < 1LL * (b.x - V[1].x) * (b.x - V[1].x) + 1LL * (b.y - V[1].y) * (b.y - V[1].y);
}
punct realC(punct a,punct b){
b.x -= a.x;
b.y -= a.y;
return b;
}
int N;
int len = 0;
double rez;
int main(){
fscanf(f,"%d",&N);
for(int i = 1;i <= N;i++){
fscanf(f,"%d %d",&V[i].x,&V[i].y);
if(V[i] < V[1]){
swap(V[i],V[1]);
}
}
sort(V + 2,V + 1 + N,cmp);
len = N;
while(det(V[len],V[len - 1],V[1]) == 0){
len--;
}
reverse(V + len,V + 1 + N);
V[N + 1] = V[1];
len = 0;
for(int i = 1;i <= N + 1;i++){
while(len > 1 && det(hull[len - 1],hull[len],V[i]) <= 0LL){
len--;
}
hull[++len] = V[i];
}
for(int i = len;i < 2 * len;i++){
hull[i] = hull[i - len + 1];
}
N = len - 1;
int furthest,leftmost,rightmost = 2;
for(int i = 1;i <= N;i++){
while(dotProd(realC(hull[i],hull[i + 1]),realC(hull[rightmost],hull[rightmost + 1])) >= 0LL){
rightmost++;
}
if(i == 1){
furthest = rightmost;
}
while(det(hull[i],hull[i + 1],hull[furthest]) <= det(hull[i],hull[i + 1],hull[furthest + 1])){
furthest++;
}
if(i == 1){
leftmost = furthest;
}
while(dotProd(realC(hull[i],hull[i + 1]),realC(hull[leftmost],hull[leftmost + 1])) <= 0LL){
leftmost++;
}
long long a = hull[i + 1].y - hull[i].y;
long long b = hull[i].x - hull[i + 1].x;
long long c = 1LL * hull[i + 1].x * hull[i].y - 1LL * hull[i].x * hull[i + 1].y;
double H = dist(hull[furthest],a,b,c);
double W = dist(hull[rightmost],-b,a,b * hull[leftmost].x - a * hull[leftmost].y);
if(i == 1 || rez > H * W){
rez = H * W;
}
}
fprintf(g,"%.2f",rez);
fclose(f);
fclose(g);
return 0;
}