#include <stdio.h>
#include <stdlib.h>
#include <math.h>

struct tacka {
    double x, y;
} a[3333];

double duzina(tacka aa, tacka bb) {
    double res = sqrt((aa.x - bb.x) * (aa.x - bb.x) + (aa.y - bb.y) * (aa.y - bb.y));
    return res;
}

int main() {
    int n;
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) scanf("%lf %lf", &a[i].x, &a[i].y);
    tacka b, c, d, e;
    bool mark[3333];
    for (int i = 0; i < 333; i++) mark[i] = false;
    int k, pre;
    b.x = a[1].x;
    b.y = a[1].y;
    k = 1; pre = 1;
    for (int i = 1; i <= n; i++)
        if (!mark[k])
        if (a[i].x < b.x) {
            b.x = a[i].x;
            b.y = a[i].y;
            pre = k;
            k = i;
        }
    mark[pre] = false;
    mark[k] = true;

    c.x = a[2].x;
    c.y = a[2].y;
    k = 2; pre = 2;
    for (int i = 1; i <= n; i++)
        if (!mark[k])
        if (a[i].x > c.x) {
            c.x = a[i].x;
            c.y = a[i].y;
            pre = k;
            k = i;
        }
    mark[pre] = false;
    mark[k] = true;

    d.x = a[3].x;
    d.y = a[3].y;
    k = 3; pre = 3;
    for (int i = 1; i <= n; i++)
        if (!mark[k])
        if (a[i].y > d.x) {
            d.x = a[i].x;
            d.y = a[i].y;
            pre = k;
            k = i;
        }
    mark[pre] = false;
    mark[k] = true;

    e.x = a[4].x;
    e.y = a[4].y;
    k = 4; pre = 4;
    for (int i = 1; i <= n; i++)
        if (!mark[k])
        if (a[i].y < e.x) {
            e.x = a[i].x;
            e.y = a[i].y;
            pre = k;
            k = i;
        }
    mark[pre] = false;
    mark[k] = true;
    double p;
    double ss = (duzina(b, d) + duzina(d, c) + duzina(c, b)) / 2;
    p = sqrt(ss * (ss - duzina(b, d)) * (ss - duzina(d, c)) * (ss - duzina(c, b)));
    p += sqrt(ss * (ss - duzina(b, e)) * (ss - duzina(e, c)) * (ss - duzina(c, b)));
    printf("%lf", p);
}
