Вася купил стол, у которого n ножек. Каждая ножка состоит из двух частей, которые соединяются друг с другом. Каждая часть может быть произвольной положительной длины, но гарантируется, что из всех 2n частей возможно составить n ножек одинаковой длины. При составлении ножки любые две части могут быть соединены друг с другом. Изначально все ножки стола разобраны, а вам заданы длины 2n частей в произвольном порядке.

Помогите Васе собрать все ножки стола так, чтобы все они были одинаковой длины, разбив заданные 2n части на пары правильным образом. Каждая ножка обязательно должна быть составлена ровно из двух частей, не разрешается использовать как ножку только одну часть.


-----Входные данные-----

В первой строке задано число n (1 ≤ n ≤ 1000) — количество ножек у стола, купленного Васей.

Во второй строке следует последовательность из 2n целых положительных чисел a_1, a_2, ..., a_2n (1 ≤ a_{i} ≤ 100 000) — длины частей ножек стола в произвольном порядке.


-----Выходные данные-----

Выведите n строк по два целых числа в каждой — длины частей ножек, которые надо соединить друг с другом. Гарантируется, что всегда возможно собрать n ножек одинаковой длины. Если ответов несколько, разрешается вывести любой из них.


-----Примеры-----
Входные данные
3
1 3 2 4 5 3

Выходные данные
1 5
2 4
3 3

Входные данные
3
1 1 1 2 2 2

Выходные данные
1 2
2 1
1 2

Source: codeforces | Difficulty: MEDIUM


Solutions:
a = int(input())
lt = sorted(list(map(int, input().split())))
for i in range(len(lt) // 2):
	print(lt[i], lt[-i - 1])


n = int(input())
a = list(map(int, input().split()))
for i in range(n):
	b = max(a)
	c = min(a)
	print(b, c)
	a.remove(b)
	a.remove(c)


n = int(input())
k = sorted(map(int, input().split()))
j = -1
for i in range(n):
	print(k[i], k[j])
	j -= 1


n = int(input())
s = [int(z) for z in input().split()]
s.sort()
for i in range(n):
	print(s[i], s[2 * n - i - 1])


n = int(input())
a = list(map(int, input().split()))
a.sort()
for i in range(n):
	print(a[i], a[-i - 1])


n = int(input())
a = [int(x) for x in input().split()]
a.sort()
for i in range(n):
	print(a[i], a[2 * n - 1 - i])


n = int(input())
a = list(map(int, input().split()))
l = sum(a) // n
a.sort()
for i in range(n):
	print(a[i], l - a[i])


n = int(input())
s = list(map(int, input().split()))
s.sort()
for i in range(n):
	print(s[i], s[2 * n - i - 1])


n = int(input())
box = list(map(int, input().split()))
e = sum(box) // 2
box.sort()
for i in range(n):
	print(str(box[0]) + ' ' + str(box[-1]))
	box.pop(0)
	box.pop(-1)


n = int(input())
x = sorted(list(map(int, input().split())))
for i in range(n):
	print(x[i], x[2 * n - i - 1])


from collections import deque
n = int(input())
h = sorted(list(map(int, input().split())))
data = deque(h)
for i in range(n):
	print(data[0], data[-1])
	data.pop()
	data.popleft()


n = int(input())
a = list(map(int, input().split()))
s = 0
for i in range(len(a)):
	s += a[i]
e = s // n
while len(a) != 0:
	u = e - a[0]
	print(a[0], u)
	a.pop(0)
	a.remove(u)


n = int(input())
l = sorted(list(map(int, input().split(' '))))
length = l[0] + l[-1]
for i in range(n):
	print(l[i], length - l[i])


mvalues = 10 ** 5 + 1
n = int(input())
size = list(map(int, input().split()))
length = sum(size) // n
count = [0] * mvalues
for v in size:
	count[v] += 1
for i in range(mvalues):
	while count[i]:
		count[i] -= 1
		count[length - i] -= 1
		print(i, length - i)


n = int(input())
A = list(map(int, input().split()))
a = sum(A) // n
for i in range(n):
	e = a - A[0]
	for j in range(1, 2 * n):
		if A[j] == e:
			print(A[0], A[j])
			del A[j]
			del A[0]
			break


b = int(input())
a = [int(i) for i in input().split()]
c = 0
for i in range(len(a)):
	c += a[i]
c /= b
while len(a) > 0:
	d = a.pop(0)
	for i in range(len(a)):
		if a[i] == c - d:
			f = a.pop(i)
			break
	print(d, f)


n = int(input())
a = input().split()
s = 0
for i in range(len(a)):
	a[i] = int(a[i])
	s = s + a[i]
l = s // n
a.sort()
for i in range(n):
	print(a[i], l - a[i])


n = int(input())
a = list(map(int, input().split()))
d = sum(a) // n
was = [False] * (2 * n)
for i in range(2 * n):
	if was[i]:
		continue
	for j in range(i + 1, 2 * n):
		if was[j]:
			continue
		if a[i] + a[j] == d:
			print(a[i], a[j])
			was[i] = True
			was[j] = True
			break


n = int(input())
s = input().split()
a = []
b = []
for i in range(2 * n):
	a.append(int(s[i]))
a.sort()
for i in range(len(a)):
	b.append(str(a[i]) + ' ' + str(a[-i - 1]))
for i in range(n):
	print(''.join(b[i]))


n = int(input())
a = list(map(int, input().split()))
s = 0
ch = 0
for i in range(2 * n):
	s += a[i]
dl = s // n
for i in range(2 * n - 1):
	for j in range(i + 1, 2 * n):
		if a[i] > a[j]:
			(a[i], a[j]) = (a[j], a[i])
for i in range(n):
	print(a[i], dl - a[i])


n = int(input())
parts = sorted(list(map(int, input().split())))
length = sum(parts) // n
pairs = []
for i in range(len(parts) // 2):
	pairs.append((parts[i], length - parts[i]))
print('\n'.join([' '.join(map(str, pair)) for pair in pairs]))


n = int(input())
a = [int(i) for i in input().split()]
a.sort()
for i in range(0, n):
	print(str(a[i]) + ' ' + str(a[2 * n - 1 - i]))