#include <bits/stdc++.h>
#define pb push_back
#define mod 1000000007
using namespace std;
typedef long long int ll;
int t, n, prime[1100000], arr[110000], done[1100000], ans = 0, dsu[1100000], rank1[1100000];
vector< vector<int> > divs(1100000);
vector<int> pres;
void init()
{   
    divs[1].pb(1);
    for (ll i = 2; i <= 1e6; i++)
    {
        if (prime[i] != 0)
            continue;
        for (ll j = i; j <= 1e6; j += i)
        {
            divs[j].pb(i);
            prime[j] = 1;
        }
    }
}

ll pow1(ll a, ll b)
{
    if (b == 0)
        return 1ll;
    else if (b == 1)
        return a;
    else
    {
        ll x = pow1(a, b/2);
        x *= x;
        x %= mod;
        if (b%2)
        {
            x *= a;
            x %= mod;
        }
        return x;
    }
}

int root(int ind)
{
    if (dsu[ind] == ind)
        return ind;
    dsu[ind] = root(dsu[ind]);
    return dsu[ind];
}

void join(int a, int b)
{
    int t1 = root(a), t2 = root(b);
    if (t1 == t2)
        return;
    if (rank1[t1] >= rank1[t2])
    {
        dsu[t2] = t1;
        rank1[t1] = max(rank1[t1], 1+rank1[t2]);
    }
    else
    {
        dsu[t1] = t2;
        rank1[t2] = max(rank1[t2], 1+rank1[t1]);
    }
}

int main()
{
    init();
    cin>>t;
    while (t--)
    {
        cin>>n;
        memset(done, 0, sizeof(done));
        for (int i = 1; i <= 1e6; i++)
        {
            dsu[i] = i;
            rank1[i] = 1;
        }
        ans = 0;
        ll ones = 0;
        for (int i = 1; i <= n; i++)
        {
            cin>>arr[i];
            done[divs[arr[i]][0]] = 1;
            if (arr[i] == 1)
                ones++;
            for (int j = 1; j < divs[arr[i]].size(); j++)
            {
                int num = divs[arr[i]][j];
                int num1 = divs[arr[i]][j-1];
                done[num] = 1;
                join(num, num1);
            }
        }
        
        for (int i = 2; i <= 1e6; i++)
            if (dsu[i] == i and done[i])
                ans++;
        
        ans += ones;
        
        ll ans1 = pow1(2, ans);
        ans1 -= 2;
        if (ans1 < 0)
            ans1 += mod;
        cout<<ans1<<endl;
    }
}