#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
vector<int> p;
long long dp1[555555];
long long dp2[555555];
long long fp(long long x) {
  long long ret = 1;
  long long mul = 2;
  while (x) {
    if (x & 1) {
      ret *= mul;
      ret %= mod;
    }
    mul *= mul;
    mul %= mod;
    x >>= 1;
  }
  return ret;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  p.push_back(2);
  p.push_back(3);
  p.push_back(5);
  p.push_back(7);
  p.push_back(11);
  p.push_back(13);
  p.push_back(17);
  p.push_back(19);
  p.push_back(23);
  p.push_back(29);
  p.push_back(31);
  p.push_back(37);
  p.push_back(41);
  p.push_back(43);
  p.push_back(47);
  p.push_back(53);
  p.push_back(59);
  p.push_back(61);
  p.push_back(67);
  int k = p.size();
  int cnt[80] = {};
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) {
    int add;
    cin >> add;
    cnt[add]++;
  }
  dp1[0] = 1;
  for (int i = 1; i < 70 + 1; i++) {
    if (!cnt[i]) continue;
    int shift = 0;
    int rem = i;
    for (int j = 0; j < k; j++) {
      while (rem % p[j] == 0) {
        shift ^= (1 << j);
        rem /= p[j];
      }
    }
    memset(dp2, 0, sizeof(dp2));
    ;
    long long add = fp(cnt[i] - 1);
    for (int j = 0; j < 1 << k; j++) {
      dp2[j] += dp1[j] * add % mod;
      dp2[j] %= mod;
      dp2[j ^ shift] += dp1[j] * add % mod;
      dp2[j ^ shift] %= mod;
    }
    for (int j = 0; j < 1 << k; j++) {
      dp1[j] = dp2[j];
    }
  }
  cout << (dp1[0] + mod - 1) % mod << endl;
}
