import math

N = int(input())

points = [[int(coord) for coord in input().split()] for _ in range(N)]


class Point:
    def __init__(self, x, y, destroyed):
        self.x = x
        self.y = y
        self.destroyed = destroyed


points = [Point(x,y, False) for x, y in points]
byX = sorted(points, key=lambda point: point.x)
byY = sorted(points, key=lambda point: point.y)

startX = 0
endX = N-1

startY = 0
endY = N-1

for _ in range(N//4 - 1):
    toRemove = []

    for i in range(startX, N):
        point = byX[i]
        startX += 1
        if point.destroyed:
            continue
        toRemove.append(point)
        break

    while byX[startX].destroyed:
        startX += 1

    if byX[startX-1].x == byX[startX].x:
        toRemove.append(byX[startX])
        startX += 1

    for i in range(startY, N):
        point = byY[i]
        startY += 1
        if point.destroyed:
            continue
        toRemove.append(point)
        break

    while byY[startY].destroyed:
        startY += 1

    if byY[startY-1].y == byY[startY].y:
        toRemove.append(byY[startY])
        startY += 1

    for i in range(endY, 0,-1):
        point = byY[i]
        endY -= 1
        if point.destroyed:
            continue
        toRemove.append(point)
        break

    while byY[endY].destroyed:
        endY -= 1

    if byY[endY+1].y == byY[endY].y:
        toRemove.append(byY[endY])
        endY -= 1

    for i in range(endX, 0, -1):
        point = byX[i]
        endX -= 1
        if point.destroyed:
            continue
        toRemove.append(point)
        break

    while byX[endX].destroyed:
        endX -= 1

    if byX[endX+1].x == byX[endX].x:
        toRemove.append(byX[endX])
        endX -= 1

    for point in toRemove:
        point.destroyed = True

final = [point for point in points if not point.destroyed]

AB = (final[1].x - final[0].x, final[1].y - final[0].y)
AC = (final[2].x - final[0].x, final[2].y - final[0].y)

print(abs(AB[0] * AC[1] - AB[1] * AC[0]))
