#include <stdio.h>
#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <stack>
using namespace std;
#define maxn 505


FILE *fin=fopen("farmeri.in", "r");
FILE *fout=fopen("farmeri.out", "w");

int n;
double x[maxn], y[maxn];
double dp[maxn][maxn][2];
double sol=0.00;

void finput(){
    fscanf(fin, "%d", &n);
    for (int i=0; i<n; ++i) fscanf(fin, "%lf%lf", &x[i], &y[i]);
}
void input(){
    scanf("%d", &n);
    for (int i=0; i<n; ++i) scanf("%lf%lf", &x[i], &y[i]);
}

void solve(){
    for (int i=0; i<n; ++i)
        for (int j=i+1; j<n; ++j){
            dp[i][j][0]=-2000000000.00;
            dp[i][j][1]=2000000000.00;

            for (int k=0; k<n; k++) if (k!=i && k!=j){
                double vp=((x[j]-x[i])*(y[k]-y[i])-(y[j]-y[i])*(x[k]-x[i]))/2.0;

                if (vp>0){
                    if (vp>dp[i][j][0]) dp[i][j][0]=vp;
                } else if (vp<0) {
                    if (vp<dp[i][j][1]) dp[i][j][1]=vp;
                }
            }
       }
    for (int i=0; i<n; ++i)
        for (int j=i+1; j<n; j++)
            if (dp[i][j][0]-dp[i][j][1]>sol) sol=dp[i][j][0]-dp[i][j][1];
}
void foutput(){
    fprintf(fout, "%.3lf\n", sol);
}
void output(){
    printf("%.3lf\n", sol);
}


int main(){
    finput();
    solve();
    foutput();
    return 0;
}
