Problem: Iahub has drawn a set of n points in the cartesian plane which he calls "special points". A quadrilateral is a simple polygon without self-intersections with four sides (also called edges) and four vertices (also called corners). Please note that a quadrilateral doesn't have to be convex. A special quadrilateral is one which has all four vertices in the set of special points. Given the set of special points, please calculate the maximal area of a special quadrilateral. 

Input

The first line contains integer n (4 ≤ n ≤ 300). Each of the next n lines contains two integers: xi, yi ( - 1000 ≤ xi, yi ≤ 1000) — the cartesian coordinates of ith special point. It is guaranteed that no three points are on the same line. It is guaranteed that no two points coincide. 

Output

Output a single real number — the maximal area of a special quadrilateral. The answer will be considered correct if its absolute or relative error does't exceed 10 - 9.

Examples

Input

5
0 0
0 4
4 0
4 4
2 3


Output

16.000000

Note

In the test example we can choose first 4 points to be the vertices of the quadrilateral. They form a square by side 4, so the area is 4·4 = 16.

Solution (in JAVA):

Solution:
/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
// import java.util.Math;

/* Name of the class has to be "Main" only if the class is public. */
public class Ideone
{
	 public static double mj (double x1,double y1,double x2,double y2,double x3,double y3){
     return (((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1))/2);
 }
	public static void main (String[] args) throws java.lang.Exception
	{

		double inf = 200000000;
		int n;
		double x[] = new double[310];
		double y[] = new double[310];
		double a[] = new double[2];
		double mj1;
		// double tmp1 = 0, tmp2 = 0;
    	int i,j,k;
	     Scanner sc = new Scanner(System.in);
	     n = sc.nextInt();
	     for(i=1;i<=n;i++){
	    	 x[i] = sc.nextInt();
	    	 y[i]= sc.nextInt();
		}
     double anss = 0.00000;
     //DecimalFormat anss = new DecimalFormat("#.00000");
     //anss.format(0.912385);
     //anss.setPrecison(5);
     for(i=1;i<=n;i++){
         for(j=i+1;j<=n;j++){
             a[0]=a[1]=-inf;
             for(k=1;k<=n;k++){
                 if(k==i||k==j) continue;
                 mj1=mj(x[i],y[i],x[j],y[j],x[k],y[k]);
                 a[((mj1>0)? 1:0)]=Math.max(a[((mj1>0)? 1:0)],Math.abs(mj1));
             }
			anss=Math.max(anss,(a[0]+a[1]));
         }
     }
    		// anss = Math.round(anss*100)/100.0;
			System.out.println(anss);

 }
}