from collections import deque

def normmin(queue, removed):
    while queue[0] in removed:
        queue.popleft()

def normmax(queue, removed):
    while queue[-1] in removed:
        queue.pop()

def getmin(queue, removed):
    normmin(queue, removed)
    return queue[0]

def getmax(queue, removed):
    normmax(queue, removed)
    return queue[-1]

def popmin(queue, removed):
    normmin(queue, removed)
    item = queue.popleft()
    removed.add(item)
    return item

def popmax(queue, removed):
    normmax(queue, removed)
    item = queue.pop()
    removed.add(item)
    return item

def dotproduct(v1, v2):
    return v1[0] * v2[0] + v1[1] * v2[1]

def crossproduct(v1, v2):
    return v1[0] * v2[1] - v1[1] * v2[0]

def tuplediff(a, b):
    return a[0] - b[0], a[1] - b[1]

def solve(points):
    by_x = deque(sorted(points, key = lambda p: (p[0], p[1])))
    by_y = deque(sorted(points, key = lambda p: (p[1], p[0])))
    removed = set()
    
    while len(points) - len(removed) > 4:
        p1 = popmin(by_x, removed)
        p2 = popmin(by_y, removed)
        p3 = popmax(by_x, removed)
        p4 = popmax(by_y, removed)
        #print(p1, p2, p3, p4)

    p1 = popmin(by_x, removed)
    #print(p1)
    vectors = []
    for _ in range(3):
        p = popmin(by_x, removed)
        #print(p)
        vectors.append(tuplediff(p, p1))
    
    for i, v1 in enumerate(vectors[:2]):
        for v2 in vectors[i + 1:]:
            #print(dotproduct(v1, v2))
            if dotproduct(v1, v2) == 0:
                return abs(crossproduct(v1, v2))

points = [tuple(map(int, input().split())) for _ in range(int(input()))]
print(solve(points))
