n = int(input())

pts = []

for _ in range(n):
    inp = tuple(map(int, input().split(" ")))
    pts.append(inp)

used = [False for _ in pts]
remaining = n

top = sorted(enumerate(pts), key=lambda p:(p[1][1],p[1][0]))
bottom = sorted(enumerate(pts), key=lambda p:(-p[1][1],-p[1][0]))
left = sorted(enumerate(pts), key=lambda p:(p[1][0],-p[1][1]))
right = sorted(enumerate(pts), key=lambda p:(-p[1][0],p[1][1]))

t, b, l, r = 0, 0, 0, 0

while remaining > 4:
    while used[top[t][0]]:
        t += 1
    while used[bottom[b][0]]:
        b += 1
    while used[left[l][0]]:
        l += 1
    while used[right[r][0]]:
        r += 1

    # tc = [top[t]]
    # if t + 1 < n and top[t + 1][1][1] == top[t][1][1]:
    #     tc.append(top[t + 1])
    # bc = [bottom[b]]
    # if b + 1 < n and bottom[b + 1][1][1] == bottom[b][1][1]:
    #     bc.append(bottom[b + 1])
    # lc = [left[l]]
    # if l + 1 < n and left[l + 1][1][0] == left[l][1][0]:
    #     lc.append(left[l + 1])
    # rc = [right[r]]
    # if r + 1 < n and right[r + 1][1][0] == right[r][1][0]:
    #     rc.append(right[r + 1])
    p = [top[t], bottom[b], left[l], right[r]]
    for (pi, (px, py)) in p:
        used[pi] = True
    remaining -= 4


def dist(a, b):
    return ((a[0]-b[0])**2 + (a[1]-b[1])**2) **.5


pts = [pt for i, pt in enumerate(pts) if not used[i]]
assert len(pts) == 4

ans = min(dist(pts[0], pts[1]) * dist(pts[0], pts[2]), dist(pts[0], pts[1]) * dist(pts[0], pts[3]), dist(pts[0], pts[2]) * dist(pts[0], pts[3]))

print(f'{ans:g}')