#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; } }