#include<fstream.h>
#include<iomanip.h>
#include<iostream.h>
#include<math.h>
int x[101000],y[101000],b[101000],a[101000],sol[101000];
void qs(int i, int j)
{
int s=i,d=j,piv=a[(i+j)>>1],aux;
while(s<=d)
{
while((y[a[s]]-y[1])*(x[piv]-x[1])<(y[piv]-y[1])*(x[a[s]]-x[1]))
s++;
while((y[a[d]]-y[1])*(x[piv]-x[1])>(y[piv]-y[1])*(x[a[d]]-x[1]))
d--;
if(s<=d)
{
aux=a[s];
a[s]=a[d];
a[d]=aux;
s++;
d--;
}
}
if(s<j)
qs(s,j);
if(i<d)
qs(i,d);
}
int det(int i1, int i2, int i3)
{
int r=x[i1]*y[i2]+x[i2]*y[i3]+x[i3]*y[i1]-y[i2]*x[i3]-y[i3]*x[i1]-y[i1]*x[i2];
if(r>0)
return 1;
else
if(r<0)
return -1;
else
return 0;
}
void distanta(int i1, int i2, int i, double &lmax)
{
double numa,numi,l;
int i0;
lmax=0;
for(i0=1;i0<=i;i0++)
if(i0!=i1&&i0!=i2)
{
numa=(x[sol[i2]]-x[sol[i1]])*(y[sol[i1]]-y[sol[i0]])-(x[sol[i1]]-x[sol[i0]])*(y[sol[i2]]-y[sol[i1]]);
if(numa<0)
numa=-numa;
numi=(x[sol[i2]]-x[sol[i1]])*(x[sol[i2]]-x[sol[i1]])+(y[sol[i2]]-y[sol[i1]])*(y[sol[i2]]-y[sol[i1]]);
numi=sqrt(numi);
l=numa/numi;
if(l>lmax)
lmax=l;
}
}
void proiectie(int i1, int i2, int i, double &l)
{
double tg,cos,sin,xx[101000],yy[101000],sst,ddr,tg2;
int j,st,dr;
tg=(y[sol[i2]]-y[sol[i1]])/(x[sol[i2]]-x[sol[i1]]);
cos=tg*tg+1;
cos=1/cos;
sin=1-cos;
sin=sqrt(sin);
cos=sqrt(cos);
if(tg<0)
cos=-cos;
for(j=1;j<=i;j++)
{
xx[sol[j]]=x[sol[j]]*cos+y[sol[j]]*sin;
yy[sol[j]]=y[sol[j]]*cos-x[sol[j]]*sin;
}
sst=xx[sol[1]];
ddr=sst;
st=1;
dr=1;
for(j=2;j<=i;j++)
{
if(xx[sol[j]]<sst)
{
st=j;
sst=xx[sol[j]];
}
if(xx[sol[j]]>ddr)
{
dr=j;
ddr=xx[sol[j]];
}
}
l=(x[sol[dr]]-x[sol[st]])*(x[sol[dr]]-x[sol[st]])+(y[sol[st]]-y[sol[dr]])*(y[sol[st]]-y[sol[dr]]);
l=sqrt(l);
tg2=(y[sol[st]]-y[sol[dr]])/(x[sol[st]]-x[sol[dr]]);
tg=(tg2-tg)/(1+tg*tg2);
cos=tg*tg+1;
cos=1/cos;
cos=sqrt(cos);
l*=cos;
}
void projectie(int i1, int i2, int i, double &l)
{
double uup,dwn,tg,cos,sin;
int j,up,down;
uup=y[sol[1]];
dwn=y[sol[1]];
up=1;
down=1;
for(j=2;j<=i;j++)
{
if(y[sol[j]]>uup)
{
uup=y[sol[j]];
up=j;
}
if(y[sol[j]]<dwn)
{
dwn=y[sol[j]];
down=j;
}
}
l=(x[sol[down]]-x[sol[up]])*(x[sol[down]]-x[sol[up]])+(dwn-uup)*(dwn-uup);
l=sqrt(l);
tg=(x[sol[up]]-x[sol[down]])/(uup-dwn);
cos=tg*tg+1;
cos=1/cos;
cos=sqrt(cos);
l*=cos;
}
int main()
{
int i,j,k=0,n,t=0,inc,sf,aux,i1,i2;
double s,smax,l1,l2;
ifstream f("rubarba.in");
ofstream g("rubarba.out");
f>>n;
inc=1;
for(i=1;i<=n;i++)
{
f>>x[i]>>y[i];
if(x[i]<x[inc]||x[i]==x[inc]&&y[i]<y[inc])
inc=i;
}
aux=x[1];
x[1]=x[inc];
x[inc]=aux;
aux=y[1];
y[1]=y[inc];
y[inc]=1;
for(i=2;i<=n;i++)
if(x[i]!=x[1])
a[++k]=i;
else
b[++t]=i;
qs(1,k);
sf=1;
for(i=2;i<=t;i++)
if(y[b[i]]>y[b[sf]])
sf=i;
sol[1]=1;
sol[2]=a[1];
i=2;j=2;
while(j<=k)
{
while(det(sol[i-1],sol[i],a[j])<=0)
i--;
sol[++i]=a[j++];
}
if(t)
{
while(det(sol[i-1],sol[i],b[sf])<=0)
i--;
sol[++i]=b[sf];
}
smax=(1<<29);
for(j=1;j<=i;j++)
{
i1=j;
if(j==i)
i2=1;
else
i2=j+1;
distanta(i1,i2,i,l1);
if(x[sol[i1]]==x[sol[i2]])
projectie(i1,i2,i,l2);
else
proiectie(i1,i2,i,l2);
cout<<l1<<' '<<l2<<endl;
s=l1*l2;
if(s<smax)
smax=s;
}
g<<fixed<<setprecision(2)<<smax;
return 0;
}