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 CPP):

Solution:
#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:65777216")
const int INF = 2000000000;
const double PI = 3.14159265358979323846;
const long long MOD = 1000 * 1000 * 1000 + 9;
using namespace std;
double plos(pair<double, double> a, pair<double, double> b,
            pair<double, double> c) {
  double k = a.first * b.second - a.second * b.first;
  k += b.first * c.second - b.second * c.first;
  k += c.first * a.second - c.second * a.first;
  return k;
}
int main() {
  int n;
  pair<double, double> coo[300];
  double ans(0.0);
  cin >> n;
  for (int i(0); i < n; i++) {
    cin >> coo[i].first >> coo[i].second;
  }
  for (int q(0); q < n; q++) {
    for (int z(q + 1); z < n; z++) {
      double left = 0.0;
      double right = 0.0;
      double pl;
      for (int i(0); i < n; i++) {
        pl = plos(coo[q], coo[z], coo[i]);
        if (pl > 0) {
          if (left < pl) {
            left = pl;
          }
        } else {
          if (right > pl) {
            right = pl;
          }
        }
      }
      right = abs(right);
      if (left != 0 && right != 0) {
        ans = max(ans, (left + right) / 2);
      }
    }
  }
  printf("%.9f", ans);
}