#include <bits/stdc++.h>
using namespace std;
void error_exit(int error = 0) {
  switch (error) {
    case 0:
      exit(0);
      break;
    case 3:
      cout << "BRUM BRUM BRUM\n";
      break;
    case 1: {
      while (47) {
      };
    } break;
    case 2:
      exit(47);
      break;
  }
}
const long long INF = 1000 * 1000 * 1000;
const double EPS = 1e-9;
template <class Templ>
bool operator<(const complex<Templ> &a, const complex<Templ> &b) {
  if (real(a) != real(b))
    return real(a) < real(b);
  else
    return imag(a) < imag(b);
}
template <class Templ>
bool operator>(const complex<Templ> &a, const complex<Templ> &b) {
  if (real(a) != real(b))
    return real(a) > real(b);
  else
    return imag(a) > imag(b);
}
template <class Templ>
struct comp_complex {
  bool operator()(const complex<Templ> &a, const complex<Templ> &b) const {
    return a < b;
  }
};
template <typename T>
int sgn(T val) {
  return (T(0) < val) - (val < T(0));
}
long long cross(complex<long long> a, complex<long long> b,
                complex<long long> c) {
  complex<long long> x = b - a;
  complex<long long> y = c - a;
  return real(x) * imag(y) - real(y) * imag(x);
}
int main() {
  int N;
  cin >> N;
  vector<complex<long long> > a(N);
  for (long long i = 0; i < static_cast<long long>(N); ++i) {
    long long x, y;
    cin >> x >> y;
    a[i] = complex<long long>(x, y);
  }
  long long max_global = 0;
  for (long long i = 0; i < static_cast<long long>(N); ++i)
    for (long long j = 0; j < static_cast<long long>(N); ++j)
      if (i < j) {
        long long mins = 0, maxs = 0;
        for (long long k = 0; k < static_cast<long long>(N); ++k)
          if (k != i && k != j) {
            mins = min(mins,
                       static_cast<__typeof__(mins)>(cross(a[i], a[j], a[k])));
            maxs = max(maxs,
                       static_cast<__typeof__(maxs)>(cross(a[i], a[j], a[k])));
          }
        if (mins < 0 && maxs > 0)
          max_global = max(max_global,
                           static_cast<__typeof__(max_global)>(-mins + maxs));
      }
  if (max_global & 1)
    cout << max_global / 2 << ".5" << endl;
  else
    cout << max_global / 2 << endl;
}
