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 B {
	static class Point{
		final int x;
		final int y;
		Point(int x, int y){
			this.x = x;
			this.y = y;
		}
		static int cross(Point a, Point b){
			return a.x*b.y - a.y*b.x;
		}
		static int ccw(Point a, Point b, Point c){
			return cross(new Point(b.x - a.x, b.y - a.y), new Point(c.x - a.x, c.y - a.y)); 
		}
	}
	public static void main(String [] args){
		final Scanner s = new Scanner(new BufferedInputStream(System.in));
		final int n = s.nextInt();
		final Point[] points = new Point[n];
		for (int i = 0; i < n; ++i){
			final int x = s.nextInt();
			final int y = s.nextInt();
			points[i] = new Point(x, y);
		}
		int res = 0;
		for (int i = 0; i < n; ++i){
			for (int j = i + 1; j < n; ++j){
				if (i != j){
					int maxn = -1;
					int maxp = -1;
					for (int k = 0; k < n; ++k){
						if (k != i && k != j){
							final int ccw = Point.ccw(points[i], points[j], points[k]);
							if (ccw > 0){
								maxp = Math.max(maxp, ccw);
							}else{
								maxn = Math.max(maxn, -ccw);
							}
						}
					}
					if (maxn >= 0 && maxp >= 0){
						res = Math.max(res, maxp + maxn);						
					}
				}
			}
		}
		System.out.printf("%.9f\n", res/2.0);
		s.close();
	}
}