Many computer strategy games require building cities, recruiting army, conquering tribes, collecting resources. Sometimes it leads to interesting problems. 

Let's suppose that your task is to build a square city. The world map uses the Cartesian coordinates. The sides of the city should be parallel to coordinate axes. The map contains mines with valuable resources, located at some points with integer coordinates. The sizes of mines are relatively small, i.e. they can be treated as points. The city should be built in such a way that all the mines are inside or on the border of the city square. 

Building a city takes large amount of money depending on the size of the city, so you have to build the city with the minimum area. Given the positions of the mines find the minimum possible area of the city.

Input

The first line of the input contains number n — the number of mines on the map (2 ≤ n ≤ 1000). Each of the next n lines contains a pair of integers xi and yi — the coordinates of the corresponding mine ( - 109 ≤ xi, yi ≤ 109). All points are pairwise distinct.

Output

Print the minimum area of the city that can cover all the mines with valuable resources.

Examples

Input

2
0 0
2 2


Output

4


Input

2
0 0
0 3


Output

9
#from __future__ import division;
from bisect import *;
import sys;
from math import *;
from fractions import *;
from itertools import *;
import io;
import re;
from collections import Counter;
INF = 987654321987654321987654321;

def readint(delimiter=' ') :
	return map(int, raw_input().split(delimiter));

def readstr(delimiter=' ') :
	return raw_input().split(delimiter);

def readfloat(delimiter=' ') :
	return map(float, raw_input().split(delimiter));

def index(a, x):
	'Locate the leftmost value exactly equal to x'
	i = bisect_left(a, x)
	if i != len(a) and a[i] == x:
		return i
	raise ValueError

def find_lt(a, x):
	'Find rightmost value less than x'
	i = bisect_left(a, x)
	if i:
		return a[i-1]
	raise ValueError

def find_le(a, x):
	'Find rightmost value less than or equal to x'
	i = bisect_right(a, x)
	if i:
		return a[i-1]
	raise ValueError

def find_gt(a, x):
	'Find leftmost value greater than x'
	i = bisect_right(a, x)
	if i != len(a):
		return a[i]
	raise ValueError

def find_ge(a, x):
	'Find leftmost item greater than or equal to x'
	i = bisect_left(a, x)
	if i != len(a):
		return a[i]
	raise ValueError

def bin_search(a, x, left, right) :

	while left<=right :
		mid = (left + right)//2;

		if a[mid] == x :
			return mid;
		elif a[mid] < x :
			left = mid + 1;
		elif a[mid] > x :
			right = mid - 1;

		pass

	return -1;
	pass

def printf(format, *args):
	"""Format args with the first argument as format string, and write.
	Return the last arg, or format itself if there are no args."""
	sys.stdout.write(str(format) % args)
	pass


if __name__ == '__main__':
	INF = 1e12;
	n = readint()[0];
	left = INF;
	right = -INF;
	top = -INF;
	bot = INF;
	for ii in xrange(n) :
		x, y = readint();
		if x < left :
			left = x;
		if x > right :
			right = x;
		if y > top :
			top = y;
		if y < bot :
			bot = y;
		pass
	height = top - bot;
	width = right - left;
	print (height**2) if height > width else width**2;
	pass
