import math

N = int(input())

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


removed = [False for _ in range(N + 1)]

points.sort(key=lambda point: point[0])

for _ in range(N//4 - 1):
    least_x = [10e9,10e9]
    least_x_i = []
    most_x = [-10e9,-10e9]
    most_x_i = []

    least_y = [10e9,10e9]
    least_y_i = []
    most_y = [-10e9,-10e9]
    most_y_i = []

    for i, (x, y) in enumerate(points):
        if removed[i]:
            continue

        if x == most_x[0]:
            most_x_i.append(i)

        if x > most_x[0]:
            most_x = [x,y]
            most_x_i = [i]

        if x == least_x[0]:
            least_x_i.append(i)

        if x < least_x[0]:
            least_x = [x,y]
            least_x_i = [i]

        if y == most_y[1]:
            most_y_i.append(i)

        if y > most_y[1]:
            most_y = [x,y]
            most_y_i = [i]

        if y == least_y[1]:
            least_y_i.append(i)

        if y < least_y[1]:
            least_y = [x, y]
            least_y_i = [i]

    for i in least_x_i + least_y_i + most_x_i + most_y_i:
        removed[i] = True

final = [point for point, rem in zip(points, removed) if not rem]

#print(final)
distance01 = (final[1][0] - final[0][0])**2 + (final[1][1] - final[0][1])**2
distance02 = (final[2][0] - final[0][0])**2 + (final[2][1] - final[0][1])**2

#distance3 = (final[3][0] - final[0][0])**2 + (final[3][1] - final[0][1])**2
if distance01 <= distance02:
    distance12 = (final[1][0] - final[2][0]) ** 2 + (final[1][1] - final[2][1]) ** 2
    distance13 = (final[1][0] - final[3][0]) ** 2 + (final[1][1] - final[3][1]) ** 2
    print(round(math.sqrt(distance01 * min(distance12, distance13))))
else:
    distance21 = (final[1][0] - final[2][0]) ** 2 + (final[1][1] - final[2][1]) ** 2
    distance23 = (final[2][0] - final[3][0]) ** 2 + (final[2][1] - final[3][1]) ** 2
    print(round(math.sqrt(distance01 * min(distance21, distance23))))