#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <math.h>
using namespace std;

#define MaxN 2000

struct stap {
    double x,y;
};

double l,d;
double ret;
double trd,trl;
int n;
stap s[MaxN];
double a,b,c;

double Povrsina( int i, int j, int k )
{
    double ret = 0;

    ret += ( s[j].x - s[i].x )*( s[j].y + s[i].y )/2.0;
    ret += ( s[k].x - s[j].x )*( s[k].y + s[j].y )/2.0;
    ret += ( s[i].x - s[k].x )*( s[i].y + s[k].y )/2.0;

    return fabs( ret );
}

int main()
{

    freopen("farmeri.in","r",stdin);
    freopen("farmeri.out","w",stdout);

    scanf("%d",&n);
    for (int i = 0; i < n; i++)
       scanf("%lf%lf",&s[i].x,&s[i].y);

    ret = 0;
    for (int i = 0; i < n; i++)
       for (int j = i+1; j < n; j++) {
            a = ( s[j].y - s[i].y );
            b = - ( s[j].x - s[i].x );
            //c = ( s[j].y*s[i].x - s[i].x*s[j].y );
            if ( s[i].x == s[j].x ) c = 0;
            else                    c = ( (-b)*s[i].y - a*s[i].x ) / (-b);

            l = d = 0;
            trd = trl = 0;
            for (int k = 0; k < n; k++) {
                if ( k == i || k == j ) continue;


                /*printf("%d %d %d %lf %lf\n",i,j,k,trl,trd);
                printf("%lf %lf %lf\n",a,b,c);
                printf("%lf\n",a*s[k].x + b*s[k].y + c);
                system("pause");*/

                if ( a*s[k].x + b*s[k].y + c > 0 ) {
                    trd = max( trd, Povrsina( i, j, k ) );
                }
                else {
                    trl = max( trl, Povrsina( i, j, k ) );
                }

                if ( trd + trl > l + d ) {
                    d = trd;
                    l = trl;
                }

                //printf("%d %d %d %lf %lf\n",i,j,k,trl,trd);

            }

            if ( ret < l+d ) {
                //printf("%d %d %.3lf\n",i,j,ret);
                ret = l+d;
            }
       }

    printf("%lf\n",ret);

    fclose(stdin);
    fclose(stdout);

    return 0;

}

