/** Problem: polygon
  * Solution by: Semyon Dyatlov
  **/
#include <algorithm>
#include <assert.h>
#include <math.h>
#include <stdio.h>

#define for if (0) ; else for

#define MAXN 100
#define EPS 1E-10

using namespace std;

double sgn(double a)
{
  return (a>EPS)-(a<-EPS);
}

struct Point
{
  double x, y;
  Point() {x = 0; y = 0;}
  Point(double X, double Y) {x = X; y = Y;}
  Point operator-(const Point &a) const {return Point(x-a.x,y-a.y);}
  double operator*(const Point &a) const {return x*a.y-y*a.x;}
  double len() const {return sqrt(x*x+y*y);}
  double arg() const {return atan2(y,x);}
  bool operator<(const Point &a) const {return operator*(a)>-EPS;}
};

Point ip(Point a, Point b, Point c, Point d)
{
  double A[2][3];
  A[0][0] = b.y-a.y;
  A[0][1] = a.x-b.x;
  A[0][2] = a*b;
  A[1][0] = d.y-c.y;
  A[1][1] = c.x-d.x;
  A[1][2] = c*d;
  double D = A[0][0]*A[1][1]-A[1][0]*A[0][1];
  assert(fabs(D)>EPS);
  return Point((A[0][2]*A[1][1]-A[1][2]*A[0][1])/D,(A[0][0]*A[1][2]-A[1][0]*A[0][2])/D);
}

int n;
Point p[MAXN], pp[MAXN];
bool found;
double answer;

void find(Point a, Point &p1, Point &p2)
{
  bool b = false;
  for (int i=0;i<n;i++)
  {
    Point c = p[i], d = p[(i+1)%n];
    if (sgn(a*c)*sgn(a*d)==1||!(sgn(a*c)||sgn(a*d)))
      continue;
    Point q = ip(Point(),a,c,d);
    if (!b)
    {
      b = true;
      p1 = q;
      p2 = q;
      continue;
    }
    if (q.len()<p1.len())
      p1 = q;
    if (q.len()>p2.len())
      p2 = q;
  }
  assert(b);
}

void relax(Point a)
{
  Point p1, p2;
  find(a,p1,p2);
  double t = p1.len()*p2.len();
  if (!found||answer>t)
  {
    found = true;
    answer = t;
  }
}

int main()
{
  freopen("polygon.in","rt",stdin);
  freopen("polygon.out","wt",stdout);

  scanf("%d",&n);
  for (int i=0;i<n;i++)
  {
    scanf("%lf%lf",&p[i].x,&p[i].y);
    pp[i] = p[i];
  }

  found = false;
  stable_sort(pp,pp+n);
  for (int i=0;i<n;i++)
    relax(pp[i]);
  for (int i=1;i<n;i++)
    if (pp[i-1]<pp[i])
    {
      Point a, b, c, d;
      find(pp[i-1],a,c);
      find(pp[i],b,d);
      double z = ((b-a).arg()+(d-c).arg())/2;
      Point e(sin(z),-cos(z));
      if (pp[i-1]<e&&e<pp[i])
        relax(e);
      e = Point(-sin(z),cos(z));
      if (pp[i-1]<e&&e<pp[i])
        relax(e);
    }

  assert(found);
  printf("%.10lf\n",answer);

  return 0;
}