#include <bits/stdc++.h>
 
using namespace std;

const int SZ = 1e6 + 1;

int main() {
    ios_base::sync_with_stdio(false);
    int t;
    cin >> t;
    vector<vector<int>> ds(SZ);
    int mx = 0;
    for (int p = 2; p < SZ; p++) {
        if (ds[p].size() > 0) {
            continue;
        }
        for (int j = p; j < SZ; j += p) {
            ds[j].push_back(p);
        }
    }
    while (t--) {
        int n;
        cin >> n;
        vector<vector<int>> g(n);
        vector<int> last(SZ, -1);
        for (int i = 0; i < n; i++) {
            int v;
            cin >> v;
            for (auto d: ds[v]) {
                if (last[d] != -1) {
                    int j = last[d];
                    g[i].push_back(j);
                    g[j].push_back(i);
                }
                last[d] = i;
            }
        }
        long long cnt = 0;
        vector<bool> was(n);
        for (int i = 0; i < n; i++) {
            if (was[i]) {
                continue;
            }
            was[i] = true;
            cnt++;
            vector<int> q = {i};
            for (int qi = 0; qi < q.size(); qi++) {
                int cur = q[qi];
                for (auto v: g[cur]) {
                    if (!was[v]) {
                        was[v] = true;
                        q.push_back(v);
                    }
                }
            }
        }
        long long ans = 1, mod = 1e9+7;
        for (int i = 0; i < cnt; i++) {
            ans = (2*ans)%mod;
        }
        ans -= 2;
        cout << ans << endl;
    }
}