#include <bits/stdc++.h> using namespace std; #define MOD 1000000007 int t, n, x[100005], par[1000005], tot, ans; bool np[1000005]; vector<int> p; int ta; int find(int a) { return par[a] == a ? a : par[a] = find(par[a]); } int main() { for (int i = 2; i <= 1000000; i++) if (!np[i]) { p.push_back(i); if (i <= 1000) for (int j = i * i; j <= 1000000; j += i) np[j] = 1; } scanf("%d", &t); while (t--) { tot = 0; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", x + i); if (x[i] == 1) { tot++; } else if (!par[x[i]]) { par[x[i]] = x[i]; tot++; } } for (int i : p) { ta = 0; for (int j = i; j <= 1000000; j += i) if (par[j]) if (ta) { if (ta != find(j)) { tot--; par[par[j]] = ta; } } else ta = find(j); } ans = 1; while (tot--) ans = ans * 2 % MOD; ans = (ans + MOD - 2) % MOD; printf("%d\n", ans); for (int i = 0; i < n; i++) par[x[i]] = 0; } return 0; }