#include<bits/stdc++.h>
using namespace std;
#define LL long long int
#define mod 1000000007
vector<LL>prime,b;
LL a[109],seive[1000009]={0};
LL power(LL a, LL b)
{
if(b==0)return 1;
LL c=power(a,b/2);
c=(c*c)%mod;
if(b%2==1)
c=(c*a)%mod;
return c;
}
LL gcd(LL a,LL b)
{
if(a==0)return b;
else return gcd(b%a,a);
}
void pre()
{
//function to compute seive
LL i,j;
seive[0]=seive[1]=1;
for(i=2;i*i<=1000000;i++)
{
if(!seive[i])
{
for(j=i*2;j<=1000000;j+=i)
seive[j]=1;
}
}
for(i=2;i<=1000000;i++)
if(!seive[i])prime.push_back(i);
}
int main()
{
int t;
pre();
cin>>t;
while(t--)
{
LL n,i,j;
cin>>n;
b.clear();
b.resize(prime.size(),0);
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<=n;i++)
{
LL curr=a[i];
for(j=0;prime[j]<=curr && j<prime.size();j++)
{
while(a[i]%prime[j]==0)
{
b[j]++;
a[i]=a[i]/prime[j];
}
}
}
vector<LL> prime2;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(i==j)
{
if(a[i]>1)
{
LL xyz=(LL)sqrt(a[i]);
if(xyz*xyz==a[i])prime2.push_back(xyz);
}
continue;
}
LL x=gcd(a[i],a[j]);
if(x>1)prime2.push_back(x);
}
sort(prime2.begin(),prime2.end());
int ns=unique(prime2.begin(),prime2.end())-prime2.begin();
prime2.resize(ns);
vector<LL> b2;
b2.resize(prime2.size(),0);
for(i=0;i<=n;i++)
{
LL curr=a[i];
for(j=0;j<prime2.size() && j<prime2.size();j++)
{
cout<<prime2[j]<<endl;
while(a[i]%prime2[j]==0)
{
b2[j]++;
a[i]=a[i]/prime2[j];
}
}
}
LL ans=1;
for(i=0;i<prime.size();i++)
{
LL x=b[i];
if(x%3==1)
{
x+=2;
}
else
if(x%3==2)
{
x+=1;
}
ans=(ans*power(prime[i],x))%mod;
}
for(i=0;i<prime2.size();i++)
{
LL x=b2[i];
if(x%3==1)
{
x+=2;
}
else
if(x==2)
{
x+=1;
}
ans=(ans*power(prime2[i],x))%mod;
}
for(i=0;i<n;i++)
{
if(a[i]>1)ans=(ans*power(a[i],3))%mod;
}
cout<<ans<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBMTCBsb25nIGxvbmcgaW50CiNkZWZpbmUgbW9kIDEwMDAwMDAwMDcKdmVjdG9yPExMPnByaW1lLGI7CkxMIGFbMTA5XSxzZWl2ZVsxMDAwMDA5XT17MH07CkxMIHBvd2VyKExMIGEsIExMIGIpCnsKICAgIGlmKGI9PTApcmV0dXJuIDE7CiAgICBMTCBjPXBvd2VyKGEsYi8yKTsKICAgIGM9KGMqYyklbW9kOwogICAgaWYoYiUyPT0xKQogICAgICAgIGM9KGMqYSklbW9kOwogICAgcmV0dXJuIGM7Cn0KTEwgZ2NkKExMIGEsTEwgYikKewogICAgaWYoYT09MClyZXR1cm4gYjsKICAgIGVsc2UgcmV0dXJuIGdjZChiJWEsYSk7Cn0Kdm9pZCBwcmUoKQp7CiAgICAvL2Z1bmN0aW9uIHRvIGNvbXB1dGUgc2VpdmUKICAgIExMIGksajsKICAgIHNlaXZlWzBdPXNlaXZlWzFdPTE7CiAgICBmb3IoaT0yO2kqaTw9MTAwMDAwMDtpKyspCiAgICB7CiAgICAgICBpZighc2VpdmVbaV0pCiAgICAgICB7CiAgICAgICAgICAgZm9yKGo9aSoyO2o8PTEwMDAwMDA7ais9aSkKICAgICAgICAgICAgc2VpdmVbal09MTsKICAgICAgIH0KICAgIH0KICAgIGZvcihpPTI7aTw9MTAwMDAwMDtpKyspCiAgICAgICAgaWYoIXNlaXZlW2ldKXByaW1lLnB1c2hfYmFjayhpKTsKfQppbnQgbWFpbigpCnsKICAgIGludCB0OwogICAgcHJlKCk7CiAgICBjaW4+PnQ7CiAgICB3aGlsZSh0LS0pCiAgICB7CiAgICAgICAgTEwgbixpLGo7CiAgICAgICAgY2luPj5uOwogICAgICAgIGIuY2xlYXIoKTsKICAgICAgICBiLnJlc2l6ZShwcmltZS5zaXplKCksMCk7CiAgICAgICAgZm9yKGk9MDtpPG47aSsrKQogICAgICAgICAgICBjaW4+PmFbaV07CiAgICAgICAgZm9yKGk9MDtpPD1uO2krKykKICAgICAgICB7CiAgICAgICAgICAgIExMIGN1cnI9YVtpXTsKICAgICAgICAgICAgZm9yKGo9MDtwcmltZVtqXTw9Y3VyciAmJiBqPHByaW1lLnNpemUoKTtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHdoaWxlKGFbaV0lcHJpbWVbal09PTApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgYltqXSsrOwogICAgICAgICAgICAgICAgICAgIGFbaV09YVtpXS9wcmltZVtqXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB2ZWN0b3I8TEw+IHByaW1lMjsKCiAgICAgICAgZm9yKGk9MDtpPG47aSsrKQogICAgICAgICAgICBmb3Ioaj0wO2o8bjtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGk9PWopCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgaWYoYVtpXT4xKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTEwgeHl6PShMTClzcXJ0KGFbaV0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZih4eXoqeHl6PT1hW2ldKXByaW1lMi5wdXNoX2JhY2soeHl6KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBMTCB4PWdjZChhW2ldLGFbal0pOwogICAgICAgICAgICAgICAgaWYoeD4xKXByaW1lMi5wdXNoX2JhY2soeCk7CiAgICAgICAgICAgIH0KICAgICAgICBzb3J0KHByaW1lMi5iZWdpbigpLHByaW1lMi5lbmQoKSk7CiAgICAgICAgaW50IG5zPXVuaXF1ZShwcmltZTIuYmVnaW4oKSxwcmltZTIuZW5kKCkpLXByaW1lMi5iZWdpbigpOwogICAgICAgIHByaW1lMi5yZXNpemUobnMpOwogICAgICAgIHZlY3RvcjxMTD4gYjI7CiAgICAgICAgYjIucmVzaXplKHByaW1lMi5zaXplKCksMCk7CgogICAgICAgIGZvcihpPTA7aTw9bjtpKyspCiAgICAgICAgewogICAgICAgICAgICBMTCBjdXJyPWFbaV07CiAgICAgICAgICAgIGZvcihqPTA7ajxwcmltZTIuc2l6ZSgpICAmJiBqPHByaW1lMi5zaXplKCk7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3V0PDxwcmltZTJbal08PGVuZGw7CiAgICAgICAgICAgICAgICB3aGlsZShhW2ldJXByaW1lMltqXT09MCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBiMltqXSsrOwogICAgICAgICAgICAgICAgICAgIGFbaV09YVtpXS9wcmltZTJbal07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgTEwgYW5zPTE7CiAgICAgICAgZm9yKGk9MDtpPHByaW1lLnNpemUoKTtpKyspCiAgICAgICAgewogICAgICAgICAgICBMTCB4PWJbaV07CiAgICAgICAgICAgIGlmKHglMz09MSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgeCs9MjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIGlmKHglMz09MikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgeCs9MTsKICAgICAgICAgICAgfQogICAgICAgICAgICBhbnM9KGFucypwb3dlcihwcmltZVtpXSx4KSklbW9kOwogICAgICAgIH0KICAgICAgICBmb3IoaT0wO2k8cHJpbWUyLnNpemUoKTtpKyspCiAgICAgICAgewogICAgICAgICAgICBMTCB4PWIyW2ldOwogICAgICAgICAgICBpZih4JTM9PTEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHgrPTI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICBpZih4PT0yKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB4Kz0xOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGFucz0oYW5zKnBvd2VyKHByaW1lMltpXSx4KSklbW9kOwogICAgICAgIH0KCiAgICAgICAgZm9yKGk9MDtpPG47aSsrKQogICAgICAgIHsKICAgICAgICAgICAgaWYoYVtpXT4xKWFucz0oYW5zKnBvd2VyKGFbaV0sMykpJW1vZDsKICAgICAgICB9CiAgICAgICAgY291dDw8YW5zPDxlbmRsOwogICAgfQp9Cg==