// #include C { #include #include #include #include #include // } // #include C++ { #include #include #include #include #include #include #include #include #include #include #include #include #include // } using namespace std; // #typedef { typedef long long int64; typedef pair PII; typedef pair PLL; // } // #parameter{ #ifdef DEBUG_MODE #define TYPE decltype #define RF(filename) {freopen((filename), "r", stdin);} #define WF(filename) {freopen((filename), "w", stdout);} #define EF(filename) {freopen((filename), "w", stderr);} #define eprintf(...) fprintf(stderr, __VA_ARGS__) #else #define TYPE __typeof #define RF(filename) {;} #define WF(filename) {;} #define EF(filename) {;} #define eprintf(...) #define fprintf(...) #endif // #define { #define SZ(a) ((int)(a).size()) #define X first #define Y second #define MP make_pair #define L(x) ((x)<<1) #define R(x) ((x)<<1 | 1) #define max3(x, y, z) (max(max((x), (y)), (z))) #define min3(x, y, z) (min(min((x), (y)), (z))) #define BIT(x, i) (((x) >> (i)) & 1) #define ALL(it) (it).begin(), (it).end() #define FILL(__space, __val) memset(__space, __val, sizeof(__space)) #define MOVE(__spaceTo, __spaceFrom) memmove(__spaceTo, __spaceFrom, sizeof(__spaceTo)) #define UNIQUE(__vector) sort(ALL(__vector)), __vector.resize(unique(ALL(__vector)) - __vector.begin()) #define FOR(it, c) for( TYPE((c).begin()) it = (c).begin(); it != (c).end(); it++) ///////////////////////////////////////////////////////////// const double PI = acos(-1.0); const double EPS = 1e-6; #define MAX_N 45000 #define MAX_M 5005 #define MOD (int)(1e9+7) #define INF ((1 << 30) - 1) #define BINF ((1LL << 62) - 1LL) #define NONE -1 #define NIL 0 // } ///////////////////////////////////////////////////////////// vector primes; bitset seive; void Setup(){ for (int64 i = 2; i < MAX_N; i++) if (!seive[i]){ primes.push_back((int)i); for (int64 j = i*i; j < MAX_N; j += i) seive[j] = true; } } ///////////////////////////////////////////////////////////// int main(){ RF("input.txt"); // WF("output.txt"); EF("err.txt"); Setup(); int T; scanf("%d", &T); while (T--){ int n; scanf("%d", &n); vector V; for (int i = 0; i < n; i++){ int a; scanf("%d", &a); for (int k = 0; k < SZ(primes) && a > 1; k++) while (a%primes[k] == 0){ V.push_back(primes[k]); a /= primes[k]; } if (a > 1) V.push_back(a); } sort(ALL(V)); if (SZ(V) <= 1) puts("-1"); else printf("%I64d\n", 1LL * V[0] * V[1]); } return 0; }