#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<queue>
#include<algorithm>
#include<stack>
#include<cstring>
#include<vector>
#include<list>
#include<set>
#include<map>
using namespace std;
#define ll long long
#define mod 1000000007
#define inf 999999999
int scan()
{
int res = 0 , ch ;
while( !( ( ch = getchar() ) >= ‘0‘ && ch <= ‘9‘ ) )
{
if( ch == EOF ) return 1 << 30 ;
}
res = ch - ‘0‘ ;
while( ( ch = getchar() ) >= ‘0‘ && ch <= ‘9‘ )
res = res * 10 + ( ch - ‘0‘ ) ;
return res ;
}
ll a[55];
ll ans;
int y,len;
ll maxx=1e9;
ll gcd(ll x,ll y)
{
if(x%y==0)
return y;
else
return gcd(y,x%y);
}
void dfs(ll lcm,int pos,int step)
{
if(lcm>maxx)
return;
if(pos==len)
{
if(step==0)
return;
if(step&1)
ans+=(maxx/lcm);
else
ans-=(maxx/lcm);
return;
}
dfs(lcm*a[pos]/gcd(lcm,a[pos]),pos+1,step+1);
dfs(lcm,pos+1,step);
}
int main()
{
int x,i;
scanf("%d",&x);
while(x--)
{
scanf("%d",&y);
int lenn=0;
for(i=0;i<y;i++)
{
scanf("%lld",&a[i]);
if(a[i])
a[lenn++]=a[i];
}
sort(a,a+lenn);
len=0;
for(int i=0;i<lenn;i++) {
int f = 0;
for(int j=0;j<len;j++) {
if(a[i]%a[j]==0) f=1;
}
if(!f) a[len++] = a[i];
}
ans=0;
dfs(1,0,0);
printf("%lld\n",maxx-ans);
}
return 0;
}