#0神秘石阵的力量 - 蓝桥云课 (lanqiao.cn)https://www.lanqiao.cn/problems/8683/learning/
t = int(input())
for _ in range(t):
n = int(input())
v1 = []
v2 = []
m1 = 9e18
m2 = -9e18
arr = list(map(int, input().split()))
for x in arr:
if x == 0:
m1 = m2 = 0
elif x < 0:
v1.append(x)
else:
v2.append(x)
v1.sort()
v2.sort()
if v2:
m1 = min(m1, v2[0] * v2[0])
m2 = max(m2, v2[-1] * v2[-1])
if v1:
m1 = min(m1, v1[-1] * v1[-1])
m2 = max(m2, v1[0] * v1[0])
if v1 and v2:
m1 = min(m1, v1[0] * v2[-1])
print(m1, m2)
'''
整数t作为输入,表示测试用例的数量。
然后对于每个测试用例,它接受一个整数n作为输入,表示数组的长度,
以及一个包含n个整数的数组。
接下来,它将数组中的元素分成两个列表v1和v2,分别存储负数和正数。
然后对这两个列表进行排序,并计算出最小值m1和最大值m2。
最后,它根据条件计算出最终的m1和m2,再print出来
'''