using System;

namespace ConsoleApp101
{
    class Program
    {
        public struct Tacka
        {
            public long X, Y;
            public Tacka(long x, long y) { X = x; Y = y; }
        }
        static int Poredjenje(Tacka a, Tacka b)
        {
            if (a.X < b.X) { return -1; }
            if (a.X > b.X) { return 1; }
            if (a.Y < b.Y) { return -1; }
            if (a.Y > b.Y) { return 1; }
            else { return 0; }
        }
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            Tacka[] tacke = new Tacka[n];
            for (int i = 0; i < n; i++)
            {
                string[] koord = Console.ReadLine().Split();
                tacke[i] = new Tacka(long.Parse(koord[0]), long.Parse(koord[1]));
            }
            long min = long.MaxValue;
            int brojac; int poz; long P; int pomocna; int pomocna2;
            Tacka[] omotac = new Tacka[n];
            for (int i = 0; i < n; i++)
            {
                Tacka[] tacke_o = new Tacka[n - 1];
                poz = 0;
                for (int j = 0; j < n; j++)
                {
                    if (i != j) 
                    {
                        tacke_o[poz++] = tacke[j];
                    }
                }
                Array.Sort(tacke_o, Poredjenje);
                brojac = 0;
                for (int j = 0; j < n - 1; j++)
                {
                    while (brojac >= 2 && (tacke_o[j].Y - omotac[brojac - 2].Y) * (tacke_o[j].X - omotac[brojac - 1].X) - (tacke_o[j].X - omotac[brojac - 2].X) * (tacke_o[j].Y - omotac[brojac - 1].Y) <= 0)
                    {
                        brojac--;
                    }
                    omotac[brojac++] = tacke_o[j];
                }
                pomocna = brojac + 1;
                for (int j = n - 2; j >= 0; j--)
                {
                    while (brojac >= pomocna && (tacke_o[j].Y - omotac[brojac - 2].Y) * (tacke_o[j].X - omotac[brojac - 1].X) - (tacke_o[j].X - omotac[brojac - 2].X) * (tacke_o[j].Y - omotac[brojac - 1].Y) <= 0)
                    {
                        brojac--;
                    }
                    omotac[brojac++] = tacke_o[j];
                }
                P = 0;
                for (int j = 0; j < brojac; j++)
                {
                    pomocna2 = (j + 1) % brojac;
                    P = P + omotac[j].X * omotac[pomocna2].Y - omotac[pomocna2].X * omotac[j].Y;
                }
                P = Math.Abs(P) / 2;
                min = Math.Min(min, P);
            }
            Console.WriteLine(min);
        }
    }
}