//先求凸包,枚举凸包上的点求最大三角形
#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
struct point
{
int x,y;
}a[50001],stack[50001],flag;
int n;
int sect(point a,point b,point c)
{
return (a.x-c.x)*(b.y-c.y)-(b.x-c.x)*(a.y-c.y);
}
double dis(point a,point b)
{
return sqrt((double)((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)));
}
double area(point a,point b,point c)
{
double x=dis(a,b),y=dis(a,c),z=dis(b,c);
double p=(x+y+z)/2.0;
double s=p*(p-x)*(p-y)*(p-z);
return sqrt(s);
}
int cmp(point a,point b)
{
return sect(a,b,flag)>1e-8;
}
double graham()
{
int top=1;
stack[0]=a[0];
stack[1]=a[1];
int i,j,k;
for(i=2;i<n;i++)
{
while(top>0&§(a[i],stack[top],stack[top-1])>0)top--;
stack[++top]=a[i];
}
/* printf("/n");
for(i=0;i<=top;i++)
printf("%d %d/n",stack[i].x,stack[i].y);
printf("/n");
*/
double max=0.0,s;
for(i=0;i<top;i++)
for(j=i+1;j<top;j++)
for(k=j+1;k<=top;k++)
{
s=area(stack[i],stack[j],stack[k]);
if(s>max)
max=s;
}
return max;
}
int main()
{
while(scanf("%d",&n)!=EOF&&n!=-1)
{
flag.x=flag.y=100000;
int i,j,index;
for(i=0;i<n;i++)
{
scanf("%d%d",&a[i].x,&a[i].y);
if(a[i].x<flag.x||flag.x==a[i].x&&flag.y>a[i].y)
{
index=i;
flag=a[i];
}
}
a[index]=a[0];
a[0]=flag;
sort(a+1,a+n,cmp);
printf("%.2lf/n",graham());
}
return 0;
}