#include #include #include #include using namespace std; mapcnt; int test[9]={2,3,5,7,11,13,17,19,23}; long long prime[10010]; int t,n,a[110]; long long Mul(long long x,long long m,long long mo) { long long nowans=0; while(m) { if(m&1)nowans=(nowans+x)%mo; x=(x+x)%mo; m>>=1; } return nowans; } long long Pow(long long x,long long m,long long mo) { long long nowans=1; while(m) { if(m&1)nowans=Mul(nowans,x,mo); x=Mul(x,x,mo); m>>=1; } return nowans; } bool Check(long long a,long long n,long long mo) { long long d=n-1,t; while(!(d&1))d>>=1; t=Pow(a,d,mo); while(d!=n-1&&t!=1&&t!=n-1) { t=Mul(t,t,mo); d<<=1; } return (t==n-1)||(d&1); } bool Miller_Rabin(long long n) { if(n==2)return 1; if((n==1)||(!(n&1)))return 0; for(int i=0;i<9;i++) { if(n==test[i])return 1; if(n=n)p=Pollard_Rho(p,rand()%(n-1)+1); FindPrime(p); FindPrime(n/p); } int main() { scanf("%d",&t); while(t--) { scanf("%d",&n); cnt.clear(); prime[0]=0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); if(a[i]==1)continue; FindPrime(a[i]); } if(prime[0]<2) { puts("-1"); continue; } sort(prime+1,prime+1+prime[0]); printf("%I64d\n",1ll*prime[1]*prime[2]); } }