# include <iostream>
# include <cstdio>
# include <cmath>
# include <ctime>

using namespace std;

const int MaxN = 2005;

struct Point {
       double x, y;
};

int n;
Point points[MaxN];

double get( int a, int b, int c ) {
     double dx1 = points[a].x - points[b].x;
     double dy1 = points[a].y - points[b].y;
     double dx2 = points[c].x - points[b].x;
     double dy2 = points[c].y - points[b].y;
     
     return fabs( dx1 * dy2 - dy1 * dx2 ) / 2;
}

bool left( int a, int b, int c ) {
     double dx1 = points[a].x - points[b].x;
     double dy1 = points[a].y - points[b].y;
     double dx2 = points[c].x - points[b].x;
     double dy2 = points[c].y - points[b].y;
     
     return dx1 * dy2 - dy1 * dx2 > 0;
}

int main() {
    int sta = clock();
    freopen( "farmeri.in", "r", stdin );
    freopen( "farmeri.out", "w", stdout );
    
    scanf( "%d", &n );
    for ( int i = 0; i < n; i++ )
        scanf( "%lf%lf", &points[i].x, &points[i].y );
        
    double res = 0.0;
    for ( int i = 0; i < n; i++ )
        for ( int j = i + 1; j < n; j++ ) {
            double cur1 = 0.0;
            double cur2 = 0.0;
            for ( int k = 0; k < n; k++ )
                if ( k != i && k != j ) {
                     if ( left( i, k, j ) )
                        cur1 = max( cur1, get( i, j, k ) );
                     else
                        cur2 = max( cur2, get( i, j, k ) );
                }
                
            res = max( res, cur1 + cur2 );
            
            if ( ( clock() - sta ) / double( CLOCKS_PER_SEC ) > 0.9 ) {
                 printf( "%lf\n", res );
                 
                 return 0;
            }
        }
        
    printf( "%lf\n", res );
    
    return 0;
}
