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:
import java.util.*;
import java.io.*;

public class Main{

    BufferedReader in;
    StringTokenizer str = null;
    PrintWriter out;

    private String next() throws Exception{
    	if (str == null || !str.hasMoreElements())
    	    str = new StringTokenizer(in.readLine());
    	return str.nextToken();
    }
    
    private int nextInt() throws Exception{
	   return Integer.parseInt(next());
    }
    
    public void run() throws Exception{
    	in = new BufferedReader(new InputStreamReader(System.in));
    	out = new PrintWriter(System.out);

        int n = nextInt();
        int x[] = new int[n];
        int y[] = new int[n];
        for(int i=0;i<n;i++){
            x[i] = nextInt();
            y[i] = nextInt();
        }

        double ans = 0;

        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++) if (i != j) {
                int max = 0;
                int min = 0;
                for(int k=0;k<n;k++){
                    if (i != k && j != k) {
                        int sub = area(x[i], y[i], x[j], y[j], x[k], y[k]);
                        if (sub > 0)
                            max = Math.max(sub, max);
                        else
                            min = Math.min(sub, min);

                        if (max > 0 && min < 0) 
                            ans = Math.max(ans, max - min);
                    }
                }
            }
        }

        out.println(ans/2);
        out.close();	
    }

    private int area(int x, int y, int x1, int y1, int x2, int y2) {
        int a1 = x1 - x;
        int b1 = y1 - y;
        int a2 = x2 - x;
        int b2 = y2 - y;

        return a1 * b2 - a2 * b1;
    }

    public static void main(String args[]) throws Exception{
	   new Main().run();
    }
}