#include <bits/stdc++.h> #define ll long long #define mod 1000000007 #define inf 100000007 #define eps 1e-10 #define PI 3.14159265359 #define sp printf(" ") #define vi vector<int> #define vl vector<long long> #define vc vector<char> #define vs vector<string> #define pii pair<int, int> #define pll pair<long long, long long> #define pcc pair<char, char> #define mp make_pair #define FF first #define SS second #define pb(x) push_back(x) #define sd(x) scanf("%d", &(x)) #define pd(x) printf("%d", (x)) #define pdn(x) printf("%d\n", (x)) #define sld(x) scanf("%ld", &(x)) #define pld(x) printf("%ld", (x)) #define pldn(x) printf("%ld\n", (x)) #define slf(x) scanf("%lf", &(x)) #define plf(x) printf("%.9lf", (x)) #define plfn(x) print("%.8lf\n", (x)) #define sch(x) scanf("%c", &(x)) #define pch(x) printf("%c", (x)) #define pchn(x) printf("%c\n", (x)) #define gtl(x) getline(cin, (x)) #define flsh fflush(stdout) #define ios ios::sync_with_stdio(false); cin.tie(0) ; cout.tie(0) #define endl '\n' #define fst first #define snd second #define all(c) ((c).begin()), ((c).end()) #define TEST(s) if (!(s)) { cout << __LINE__ << " " << #s << endl; exit(-1); } using namespace std; const long long INF = 99999999; int a[1000004],size[1000006],v[1000005]; int root(int i) { while(i!=a[i])i=a[a[i]]; return i; } void merge(int i,int j) { i=root(i); j=root(j); if(i==j)return; if(size[i]>size[j]) { a[j]=i; size[i]+=size[j]; } else { a[i]=j; size[j]+=size[i]; } } ll power(ll j) { if(j==0)return 1; ll w=power(j/2); w=(w*w)%mod; if(j%2==1){w=w*2LL;w=w%mod;} return w; } int main() { ios; int t; cin>>t; while(t--) { int n; cin>>n; for(int i=1;i<=1000000;i++){size[i]=0;a[i]=i;v[i]=0;} for(int i=1;i<=n;i++) { int x; cin>>x; size[x]++; } for(int i=2;i<=1000000;i++) { if(v[i]==0) { for(int j=i+i;j<=1000000;j+=i) { v[j]=1; if(size[j]==0)continue; merge(j,i); } } } int cnt=size[1]; for(int i=2;i<=1000000;i++) { int w=root(i); if(size[w]>0){cnt++;size[w]=0;} } cout<<(power(cnt)-2LL+mod)%mod<<endl; } }