A prime number is number x which has only divisors as 1 and x itself.
Harsh is playing a game with his friends, where his friends give him a few numbers claiming that they are divisors of some number x but divisor 1 and the number x itself are not being given as divisors.
You need to help harsh find which number's divisors are given here.
His friends can also give him wrong set of divisors as a trick question for which no number exists.
Simply, We are given the divisors of a number x ( divisors except 1 and x itself ) , you have to print the number if only it is possible.
You have to answer t queries.
(USE LONG LONG TO PREVENT OVERFLOW)
-----Input:-----
- First line is T queires.
- Next are T queries.
- First line is N ( No of divisors except 1 and the number itself )
- Next line has N integers or basically the divisors.
-----Output:-----
Print the minimum possible x which has such divisors and print -1 if not possible.
-----Constraints-----
- 1<= T <= 30
- 1<= N <= 350
- 2<= Di <=10^6
-----Sample Input:-----
3
2
2 3
2
4 2
3
12 3 2
-----Sample Output:-----
6
8
-1
-----EXPLANATION:-----
Query 1 : Divisors of 6 are ( 1,2,3,6) Therefore, Divisors except 1 and the number 6 itself are ( 2 , 3). Thus, ans = 6.
Query 2 : Divisors of 8 are ( 1,2,4,8) Therefore, Divisors except 1 and the number 8 itself are ( 2 , 4). Thus, ans = 8.
Query 3 : There is no such number x with only ( 1,2,3,12,x ) as the divisors.
def solve():
    x = a[0] * a[-1]

    vec = []
    i = 2
    while i * i <= x:
        if x % i == 0:
            vec.append(i)
            if (x // i) != i:
                vec.append(x // i)
        i += 1

    vec.sort()

    if len(vec) != n:
        return -1
    else:
        j = 0
        for it in range(n):
            if a[j] != vec[it]:
                return -1
            else:
                j += 1

    return x

for _ in range(int(input())):
    n = int(input())
    a = sorted(map(int, input().split()))

    print(solve())

def solve():
    x = a[0] * a[-1]

    vec = []
    i = 2
    while i * i <= x:
        if x % i == 0:
            vec.append(i)
            if (x // i) != i:
                vec.append(x // i)
        i += 1

    vec.sort()

    if len(vec) != n:
        return -1
    else:
        j = 0
        for it in range(n):
            if a[j] != vec[it]:
                return -1
            else:
                j += 1

    return x

for _ in range(int(input())):
    n = int(input())
    a = sorted(map(int, input().split()))

    print(solve())
