#include<bits/stdc++.h>
using namespace std;
#define MAXN 10000001
long long int power(long long int a,long long int b)
{
if(b==1)
return a;
else
return a*power(a,b-1);
}
long long int spf[MAXN];
void sieve()
{
spf[1] = 1;
for (long long int i=2; i<MAXN; i++)
spf[i] = i;
for (long long int i=4; i<MAXN; i+=2)
spf[i] = 2;
for (long long int i=3; i*i<MAXN; i++)
{
if (spf[i] == i)
{
for (long long int j=i*i; j<MAXN; j+=i)
if (spf[j]==j)
spf[j] = i;
}
}
}
vector<long long int> getFactorization(long long int x)
{
vector<long long int> ret;
while (x != 1)
{
ret.push_back(spf[x]);
x = x / spf[x];
}
return ret;
}
int main()
{
sieve();
long long int t;
cin>>t;
while(t--)
{
long long int n;
cin>>n;
long long int val;
vector<long long int> v;
for(long long int i=0;i<n;i++)
{
cin>>val;
v.push_back(val);
}
map<long long int,long long int> m;
for(long long int i=0;i<n;i++)
{
vector<long long int> vec=getFactorization(v[i]);
for(long long int j=0;j<vec.size();j++)
{long long int p=1;
while((v[i]%(long long int)power(vec[j],p)==0))
{
m[v[i]]++;
p++;
}
}
for(long long int j=i+1;j<n;j++)
{
for(long long int k=0;k<vec.size();k++)
{
if(v[j]%vec[k]==0)
{
v[j]/=vec[k];
m[vec[k]]++;
}
}
}
}
long long int prod=1;
map<long long int,long long int>::iterator i;
for(i=m.begin();i!=m.end();i++)
if(i->first!=1)
prod*=(i->second+1);
cout<<prod<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBNQVhOICAgMTAwMDAwMDEKbG9uZyBsb25nIGludCBwb3dlcihsb25nIGxvbmcgaW50IGEsbG9uZyBsb25nIGludCBiKQp7CmlmKGI9PTEpCnJldHVybiBhOwplbHNlCnJldHVybiBhKnBvd2VyKGEsYi0xKTsKfQpsb25nIGxvbmcgaW50IHNwZltNQVhOXTsKdm9pZCBzaWV2ZSgpCnsKICAgIHNwZlsxXSA9IDE7CiAgICBmb3IgKGxvbmcgbG9uZyBpbnQgaT0yOyBpPE1BWE47IGkrKykKICAgICAgICBzcGZbaV0gPSBpOwoKICAgIGZvciAobG9uZyBsb25nIGludCBpPTQ7IGk8TUFYTjsgaSs9MikKICAgICAgICBzcGZbaV0gPSAyOwoKICAgIGZvciAobG9uZyBsb25nIGludCBpPTM7IGkqaTxNQVhOOyBpKyspCiAgICB7CgogICAgICAgIGlmIChzcGZbaV0gPT0gaSkKICAgICAgICB7CgogICAgICAgICAgICBmb3IgKGxvbmcgbG9uZyBpbnQgaj1pKmk7IGo8TUFYTjsgais9aSkKCiAgICAgICAgICAgICAgICBpZiAoc3BmW2pdPT1qKQogICAgICAgICAgICAgICAgICAgIHNwZltqXSA9IGk7CiAgICAgICAgfQogICAgfQp9Cgp2ZWN0b3I8bG9uZyBsb25nIGludD4gZ2V0RmFjdG9yaXphdGlvbihsb25nIGxvbmcgaW50IHgpCnsKICAgIHZlY3Rvcjxsb25nIGxvbmcgaW50PiByZXQ7CiAgICB3aGlsZSAoeCAhPSAxKQogICAgewogICAgICAgIHJldC5wdXNoX2JhY2soc3BmW3hdKTsKICAgICAgICB4ID0geCAvIHNwZlt4XTsKICAgIH0KICAgIHJldHVybiByZXQ7Cn0KCmludCBtYWluKCkKewpzaWV2ZSgpOwpsb25nIGxvbmcgaW50IHQ7CmNpbj4+dDsKd2hpbGUodC0tKQp7CmxvbmcgbG9uZyBpbnQgbjsKY2luPj5uOwpsb25nIGxvbmcgaW50IHZhbDsKdmVjdG9yPGxvbmcgbG9uZyBpbnQ+IHY7CmZvcihsb25nIGxvbmcgaW50IGk9MDtpPG47aSsrKQp7CmNpbj4+dmFsOwp2LnB1c2hfYmFjayh2YWwpOwp9Cm1hcDxsb25nIGxvbmcgaW50LGxvbmcgbG9uZyBpbnQ+IG07CmZvcihsb25nIGxvbmcgaW50IGk9MDtpPG47aSsrKQp7CnZlY3Rvcjxsb25nIGxvbmcgaW50PiB2ZWM9Z2V0RmFjdG9yaXphdGlvbih2W2ldKTsKZm9yKGxvbmcgbG9uZyBpbnQgaj0wO2o8dmVjLnNpemUoKTtqKyspCntsb25nIGxvbmcgaW50IHA9MTsKd2hpbGUoKHZbaV0lKGxvbmcgbG9uZyBpbnQpcG93ZXIodmVjW2pdLHApPT0wKSkKewptW3ZbaV1dKys7CnArKzsKfQp9CmZvcihsb25nIGxvbmcgaW50IGo9aSsxO2o8bjtqKyspCnsKZm9yKGxvbmcgbG9uZyBpbnQgaz0wO2s8dmVjLnNpemUoKTtrKyspCnsKaWYodltqXSV2ZWNba109PTApCnsKdltqXS89dmVjW2tdOwptW3ZlY1trXV0rKzsKfQp9Cn0KfQpsb25nIGxvbmcgaW50IHByb2Q9MTsKbWFwPGxvbmcgbG9uZyBpbnQsbG9uZyBsb25nIGludD46Oml0ZXJhdG9yIGk7CmZvcihpPW0uYmVnaW4oKTtpIT1tLmVuZCgpO2krKykKaWYoaS0+Zmlyc3QhPTEpCnByb2QqPShpLT5zZWNvbmQrMSk7CmNvdXQ8PHByb2Q8PGVuZGw7Cn0KfQoKCgo=