#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF 0x3f3f3f3f #define mem(a, b) memset(a, b, sizeof(a)) #define FIN freopen("in.txt", "r", stdin) #define FOUT freopen("out.txt", "w", stdout) //typedef __int64 LL; typedef long long LL; const int MAXN = 4002; const int MAXM = 110000; const double eps = 1e-12; const double PI = 4.0 * atan(1.0); const int MOD = 1000000007; LL f, s, x; int n, T; void fun(LL p, int num) { if(p < f) { if(num == 1) s = f, f = p; else s = f = p; } else if(p < s) s = p; } void calc(LL x) { LL m = (LL) sqrt(1.0 * x + 0.5); for (LL i = 2; i <= m; i ++) if(x % i == 0) { int cnt = 0; while(x % i == 0) { cnt ++; x /= i; } fun(i, cnt); } if(x > 1) fun(x, 1); } int main() { cin >> T; while(T--) { cin >> n; f = s = (1LL << 33); for(int i = 1; i <= n; i ++) { cin >> x; calc(x); } if(s == (1LL << 33)) { puts("-1"); } else { cout << (f * s) << endl; } } return 0; }