#include <bits/stdc++.h>
using namespace std;
void Read(int &res) {
  char c = getchar();
  bool kt = false;
  if (c == '-') {
    kt = true;
    c = getchar();
  }
  while (c < '0' || c > '9') c = getchar();
  res = 0;
  while (c >= '0' && c <= '9') {
    res = res * 10 + (c - 48);
    c = getchar();
  }
  if (kt == 1) res = -res;
}
const int maxN = 305;
const long long mod = 1000000007;
struct point {
  int x, y;
} p[maxN];
double Max = 0;
int n;
void ABS(double &x) {
  if (x < 0) x = -x;
}
int CCW(point a, point b, point c) {
  int dx1, dx2, dy1, dy2;
  dx1 = b.x - a.x;
  dy1 = b.y - a.y;
  dx2 = c.x - a.x;
  dy2 = c.y - a.y;
  if (dy2 * dx1 == dy1 * dx2) return 0;
  if (dy2 * dx1 > dy1 * dx2) return 1;
  return -1;
}
double stg(point a, point b, point c) {
  double tmp = double(a.x - b.x) * (a.y + b.y) +
               double(b.x - c.x) * (b.y + c.y) +
               double(c.x - a.x) * (c.y + a.y);
  ABS(tmp);
  return tmp / 2;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 1; i <= n; ++i) cin >> p[i].x >> p[i].y;
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= n; ++j)
      if (i != j) {
        double Max1 = 0;
        double Max2 = 0;
        for (int k = 1; k <= n; ++k)
          if (k != i && k != j) {
            if (CCW(p[i], p[j], p[k]) == -1)
              Max1 = max(Max1, stg(p[i], p[j], p[k]));
            else
              Max2 = max(Max2, stg(p[i], p[j], p[k]));
            if (Max1 * Max2) Max = max(Max, Max1 + Max2);
          }
      }
  cout << setprecision(6) << fixed << Max << "\n";
  return 0;
}
