import sys

point_number = int(input())


class Seznam(list):
    def remove(self, __value) -> None:
        try:
            super().remove(__value)
        except:
            # pass
            sys.exit()


points = Seznam()

for i in range(point_number):
    points.append(tuple(int(j) for j in input().split()))

o_left = []
o_right = []
o_down = []
o_up = []

while len(points) > 4:
    if len(o_up) > 0:
        lm = o_up[0]
        rm = o_up[0]
        for point in o_up:
            if point[0] < lm[0]:
                lm = point
            if point[0] > rm[0]:
                rm = point
        points.remove(lm)
        points.remove(rm)
        points.remove((lm[0], o_down[0][1]))
        points.remove((rm[0], o_down[0][1]))
        o_up.remove(lm)
        o_up.remove(rm)
        continue
    if len(o_left) > 0:
        dm = o_left[0]
        um = o_left[0]
        for point in o_left:
            if point[1] < dm[1]:
                lm = point
            if point[1] > um[1]:
                rm = point
        points.remove(dm)
        points.remove(um)
        points.remove((o_right[0][0], dm[1]))
        points.remove((o_right[0][0], um[1]))
        o_left.remove(dm)
        o_left.remove(um)
        continue

    leftmost = [points[0]]
    rightmost = [points[0]]
    downmost = [points[0]]
    upmost = [points[0]]
    for point in points:
        if point[0] < leftmost[0][0]:
            leftmost = [point]
        elif point[0] == leftmost[0][0] and point != leftmost[0]:
            leftmost.append(point)
        if point[0] > rightmost[0][0]:
            rightmost = [point]
        elif point[0] == rightmost[0][0] and point != rightmost[0]:
            rightmost.append(point)
        if point[1] < downmost[0][1]:
            downmost = [point]
        elif point[1] == downmost[0][1] and point != downmost[0]:
            downmost.append(point)
        if point[1] > upmost[0][1]:
            upmost = [point]
        elif point[1] == upmost[0][1] and point != upmost[0]:
            upmost.append(point)
    if len(leftmost) == 1:
        points.remove(leftmost[0])
        points.remove(rightmost[0])
        points.remove(downmost[0])
        points.remove(upmost[0])
        o_left = []
        o_up = []
        o_down = []
        o_right = []
    else:
        a = (leftmost[0][0], downmost[0][1])
        b = (leftmost[0][0], upmost[0][1])
        c = (rightmost[0][0], downmost[0][1])
        d = (rightmost[0][0], upmost[0][1])
        points.remove(a)
        points.remove(b)
        points.remove(c)
        points.remove(d)
        leftmost.remove(a)
        leftmost.remove(b)
        rightmost.remove(c)
        rightmost.remove(d)
        downmost.remove(a)
        upmost.remove(b)
        downmost.remove(c)
        upmost.remove(d)
        o_left = leftmost
        o_right = rightmost
        o_up = upmost
        o_down = downmost

leftmost = [points[0]]
for point in points:
    if point[0] < leftmost[0][0]:
        leftmost = [point]
    elif point[0] == leftmost[0][0] and point != leftmost[0]:
        leftmost.append(point)
if len(leftmost) == 1:
    second = points[0]
    for point in points:
        if point[1] == leftmost[0][1] and point != leftmost[0]:
            second = point
            break
    res = second[0] - leftmost[0][0]
    points.remove(leftmost[0])
    points.remove(second)
    res *= abs(points[0][1] - points[1][1]) / 2
    print(int(res))
else:
    res = abs(leftmost[0][1] - leftmost[1][1])
    a = leftmost[0]
    for i in [0, 1]:
        points.remove(leftmost[i])
    res *= abs(points[0][0] - a[0])
    print(int(res))
