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