#include<stdio.h>


using namespace std;

struct teme
{
       float x,y;    
       bool operator == (teme b)
       {
            if(x==b.x && y==b.y) return true;
            return false;     
       }   
};

double trapez(teme a,teme b)
{
       return ((a.y+b.y)/2)*(a.x-b.x);       
}

void swap(teme &a,teme &b)
{
     teme p=a;
     a=b;
     b=a;
}


double povrsina(teme a,teme b,teme c,teme d)
{
      /* if(a.x>c.x)
       {
                  teme p=a;
                  a=c;
                  c=p;           
       }              
       if(a.x>d.x)
       {
                  teme p=a;
                  a=d;
                  d=p;           
       } 
       if(b.x>c.x)
       {
                  teme p=b;
                  b=c;
                  c=p;           
       }              
       if(b.x>d.x)
       {
                  teme p=b;
                  b=d;
                  d=p;           
       }
       if(a.y>b.y)
       {
                  teme p=b;
                  b=a;
                  a=b;           
       }
       if(a.y>c.y)
       {
                  teme p=c;
                  c=a;
                  a=p;         
       }
        if(d.y>b.y)
       {
                  teme p=b;
                  b=d;
                  d=b;           
       }
       if(d.y>c.y)
       {
                  teme p=c;
                  c=d;
                  d=p;         
       }
      */ 
      
      /*
      if(a.x>b.x) swap(a,b);
      if(a.x>c.x) swap(a,c);
      if(a.x>d.x) swap(a,d);
      if(b.x>c.x) swap(b,c);
      if(b.x>d.x) swap(b,d);
      if(c.x>d.x) swap(c,d);
      float s=-(b.x+c.x)/2;
      if(a.y>b.y) swap(a,b);
      if(a.y>c.y) swap(a,c);
      if(a.y>d.y) swap(a,d);
      if(b.y>c.y) swap(b,c);
      if(b.y>d.y) swap(b,d);
      if(c.y>d.y) swap(c,d);
      float s1=-(b.y+c.y)/2;
      
      if(b.x<0 && b.y<0) swap(a,b);
      if(c.x<0 && c.y<0) swap(a,c);
      if(d.x<0 && d.y<0) swap(a,d);
      if(c.x>0 && c.y<0) swap(b,c);
      if(d.x>0 && d.y<0) swap(b,d);
      if(d.x>0 && d.y>0) swap(d,c);
      
      a.x+=s;a.y+=s1;       
       b.x+=s;b.y+=s1;
       c.x+=s;c.y+=s1;
       d.x+=s;d.y+=s1;
      
      
      
      */
      
      
      a.x+=200000;a.y+=200000;       
       b.x+=200000;b.y+=200000;
       c.x+=200000;c.y+=200000;
       d.x+=200000;d.y+=200000;
      float s=trapez(a,b)+trapez(b,c)+trapez(c,d)+trapez(d,a);
      float p=trapez(a,b)+trapez(b,d)+trapez(d,c)+trapez(c,a);
      if(p>s) s=p;
      p=trapez(a,c)+trapez(c,b)+trapez(b,d)+trapez(d,a);
      if(p>s) s=p;
      p=trapez(a,c)+trapez(c,d)+trapez(d,b)+trapez(b,a);
      if(p>s) s=p;
      p=trapez(a,d)+trapez(d,b)+trapez(b,c)+trapez(c,a);
      if(p>s) s=p;
      p=trapez(a,d)+trapez(d,c)+trapez(c,b)+trapez(b,a);
      if(p>s) s=p;
      
      
      
      
      
       
       return s;
       
       
       
       
}


int main()
{
    int n,i,m;
    teme a[2000];    
    FILE *f,*g;
    f=fopen("farmeri.in","r");
    g=fopen("farmeri.out","w");
    fscanf(f,"%d",&n);
    for(i=0;i<n;i++) fscanf(f,"%f %f",&a[i].x,&a[i].y);
    bool q=true;
    teme a1=a[0],b1=a[1],c1=a[2],d1=a[3];
    while(q)
    {
            q=false;
            m=0;
            for (i=0;i<n;i++)
            {
                if(a1==a[0] &&b1==a[1] && c1==a[2] && d1==a[3]) i=4;
                double p=povrsina(a1,b1,c1,d1);
                  double a2=povrsina(a[i],b1,c1,d1);
                  double b2=povrsina(a1,a[i],c1,d1);
                  double c2=povrsina(a1,b1,a[i],d1);
                  double d2=povrsina(a1,b1,c1,a[i]);
                  if(p>=a2 && p>=b2 && p>=c2 && p>=d2)
                  {
                           a[m]=a[i];
                           m++;
                  }
                  else
                  {
                      if(a2>b2 && a2>c2 && a2>d2) {a1=a[i];q=true;}
                      if(b2>a2 && b2>c2 && b2>d2) {b1=a[i];q=true;}
                      if(c2>b2 && c2>a2 && c2>d2) {c1=a[i];q=true;}
                      if(d2>b2 && d2>c2 && d2>a2) {d1=a[i];q=true;}
                  }
            }
            if(n==m) q=false;
            n=m;
    }
    fprintf(g,"%f\n",povrsina(a1,b1,c1,d1));
   // fprintf(g,"%f %f %f %f %f %f %f %f\n",a1.x,a1.y,b1.x,b1.y,c1.x,c1.y,d1.x,d1.y);
    /*teme k;
    scanf("%f",&k.x);
    teme v;
    v.x=1.123;
    swap(k,v);
    fprintf(g,"%f",k.x);
    */
    fclose(f);
    fclose(g);
    
    
    
    
    
    
    
}
