#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T GCD(T a, T b) {
  return b ? GCD(b, a % b) : a;
}
template <class T>
inline T LCM(T a, T b) {
  if (a < 0) return LCM(-a, b);
  if (b < 0) return LCM(a, -b);
  return a * (b / GCD(a, b));
}
void crossproduct(long long int x1, long long int y1, long long int x2,
                  long long int y2, long long int &z) {
  z = x1 * y2 - y1 * x2;
}
long long int dotproduct(long long int z1, long long int z2) { return z1 * z2; }
int sameside(long long int x1, long long int y1, long long int x2,
             long long int y2, long long int x3, long long int y3,
             long long int x, long long int y) {
  long long int a, b;
  crossproduct(x2 - x1, y2 - y1, x3 - x1, y3 - y1, a);
  crossproduct(x2 - x1, y2 - y1, x - x1, y - y1, b);
  if (dotproduct(a, b) >= 0)
    return 1;
  else
    return 0;
}
int main() {
  long long int n, x, y, refx, refy, areamul2, finalarea, maxarea = 0;
  cin >> n;
  vector<pair<long long int, long long int> > p;
  vector<long long int> areamul2vec1, areamul2vec2;
  double maxarea1;
  for (long long int i = 0; i < n; i++) {
    cin >> x >> y;
    p.push_back(make_pair(x, y));
  }
  for (long long int i = 0; i < n; i++) {
    for (long long int j = i + 1; j < n; j++) {
      refx = p[i].first;
      refy = p[i].second + 1;
      for (long long int k = 0; k < n; k++) {
        if (k != j && k != i) {
          areamul2 = abs((p[j].first * p[i].second - p[i].first * p[j].second) +
                         (p[k].first * p[j].second - p[j].first * p[k].second) +
                         (p[i].first * p[k].second - p[k].first * p[i].second));
          if (sameside(p[i].first, p[i].second, p[j].first, p[j].second,
                       p[k].first, p[k].second, refx, refy)) {
            areamul2vec1.push_back(areamul2);
          } else {
            areamul2vec2.push_back(areamul2);
          }
        }
      }
      if (areamul2vec1.size() != 0 && areamul2vec2.size() != 0) {
        finalarea = *max_element(areamul2vec1.begin(), areamul2vec1.end()) +
                    *max_element(areamul2vec2.begin(), areamul2vec2.end());
        if (finalarea > maxarea) {
          maxarea = finalarea;
        }
      }
      areamul2vec1.clear();
      areamul2vec2.clear();
    }
  }
  maxarea1 = (maxarea * 1.0) / 2.0;
  printf("%lf\n", maxarea1);
  return 0;
}
