#include <bits/stdc++.h>   using namespace std;   using ll = long long;   const ll mod = 1e9 + 7;   const int maxn = 1e5 + 5, maxa = 71, lim = 1 << 19;   ll ev[maxn], od[maxn], dp[2][lim];   int n, a, f[lim], comp[maxa];   vector<int> p;   int calc_msk(int x) {     int msk = 0, b = 1;     for (int y : p) {       while (x % (y * y) == 0) x /= y * y;       msk = (x % y == 0) * b + msk;       b *= 2;     }     return msk;   }   int main() {     ios_base::sync_with_stdio(0);     for (int i = (2); i < (maxa); i++)       for (int j = i + i; j < maxa; j += i) comp[j] = 1;     for (int i = (2); i < (maxa); i++)       if (!comp[i]) p.push_back(i);     ev[0] = ev[1] = 1;     for (int i = (2); i < (maxn); i++) ev[i] = ev[i - 1] * 2 % mod;     od[0] = 0;     od[1] = 1;     for (int i = (2); i < (maxn); i++) od[i] = od[i - 1] * 2 % mod;     cin >> n;     for (int i = (0); i < (n); i++) {       cin >> a;       f[calc_msk(a)]++;     }     dp[0][0] = 1;     for (int i = (1); i < (maxa); i++) {       int x = calc_msk(i);       for (int msk = (0); msk < (lim); msk++)         dp[i & 1][msk] =             (dp[i & 1 ^ 1][msk] * ev[f[x]] + dp[i & 1 ^ 1][msk ^ x] * od[f[x]]) %             mod;       f[x] = 0;     }     cout << (dp[maxa & 1 ^ 1][0] + mod - 1) % mod <<   n ;   }   