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.io.IOException;
import java.io.PrintWriter;
import java.sql.Struct;
import java.util.Scanner;

import java.io.*;
import java.math.*;
import java.util.*;

public class Timus {

    public static void main(String[] args) throws NumberFormatException,
            IOException {
        new Timus();
    }

    public Timus() throws NumberFormatException, IOException {
        Scanner sc = new Scanner(System.in);
        //BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter pw = new PrintWriter(System.out);
        int n = sc.nextInt();
        int[] x = new int[n];
        int[] y = new int[n];
        for (int i=0; i<n; i++){
            x[i] = sc.nextInt();
            y[i] = sc.nextInt();
        }
        double ans=0;
        for (int i=0; i<n; i++){
            for (int j=i+1; j<n; j++){
                double up=0;
                double down = 0;
                for (int k=0; k<n; k++){
                    if (k!=i && k!=j){
                        double s = 0.5*(x[i]*(y[k]-y[j])+x[k]*(y[j]-y[i])+x[j]*(y[i]-y[k]));
                        if (s>0) up = Math.max(up,s);
                        else down = Math.min(s,down);
                        if (up >0 && down<0)
                        ans = Math.max(ans, up-down);
                    }
                }
            }
        }
        pw.println(ans);
        pw.flush();
    }
}