type
 niz=array [1..500000] of double;
var
 a,b:niz;
 i,n,j,p,x:integer;
 f,g:text;
 min,k,nn,suma:double;

 procedure qsort(l,r:integer;var a:niz);
 var
  i,j:integer;
  ya,yb,k:double;
    begin
    i:=l;
    j:=r;
    k:=a[(l+r) div 2];
     repeat
      while a[i]<k do
       i:=i+1;
      while k<a[j] do
       j:=j-1;
      if not(i>j) then
       begin
          ya:=a[i];
          a[i]:=a[j];
          a[j]:=ya;
          yb:=b[i];
          b[i]:=b[j];
          b[j]:=yb;
          i:=i+1;
          j:=j-1;
       end;
    until i>j;
     if l<j then qsort(l,j,a);
     if i<r then qsort(i,r,a);

   end;

function povrs(x1,x2,x3,y1,y2,y3:double):double;
 var
  i:integer;
  x:double;
   begin
    x:=x1*y2*1+y1*1*x3+1*x2*y3-y1*x2*1-x1*1*y3-1*y2*x3;
    povrs:=abs(x/2);

   end;


begin
  assign(f,'farmeri.in');
  reset(f);
  assign(g,'farmeri.out');
  rewrite(g);
   readln(f,n);
    for i:=1 to n do
     readln(f,a[i],b[i]);
      qsort(1,n,a);
       i:=1;
       j:=2;
       min:=b[i];
        while a[i]=a[j] do
         begin
         if min>b[j] then
          begin
           min:=b[j];
           p:=j;
          end;
          j:=j+1;
         end;
          if min<b[1] then
           begin
            b[p]:=b[1];
            b[1]:=min;
           end;

         i:=n;
         j:=n-1;
         min:=b[i];
          while a[i]=a[j] do
           begin
            if min<b[j] then
             begin
              min:=b[j];
              p:=j;
             end;
              j:=j+1;
           end;
            if min>b[n] then
             begin
              b[p]:=b[n];
              b[n]:=min;
             end;
             k:=(b[n]-b[1])/(a[n]-a[1]);
              nn:=b[n]-k*a[n];
            min:=0;

            for i:=2 to n-1 do
            begin
            if a[i]=0 then
             if b[i]>nn
              then if
               min< povrs(a[1],a[n],a[i],b[1],b[n],b[i]) then
                min:=povrs(a[1],a[n],a[i],b[1],b[n],b[i]);


            if a[i]<>0 then
             if (b[i]-nn)/a[i]>k then
              if min< povrs(a[1],a[n],a[i],b[1],b[n],b[i]) then
                min:=povrs(a[1],a[n],a[i],b[1],b[n],b[i]);
           end;
        suma:=min;
        min:=0;

               for i:=2 to n-1 do
                begin

                 if a[i]=0 then
             if b[i]<nn
              then if
               min< povrs(a[1],a[n],a[i],b[1],b[n],b[i]) then
                min:=povrs(a[1],a[n],a[i],b[1],b[n],b[i]);

              if a[i]<>0 then
             if (b[i]-nn)/a[i]<k then
              if min< povrs(a[1],a[n],a[i],b[1],b[n],b[i]) then
                min:=povrs(a[1],a[n],a[i],b[1],b[n],b[i]);
             end;
      suma:=suma+min;

                      // suma:=3;

        writeln(g,suma:0:3);











  close(f);
  close(g);

end.
