#include <bits/stdc++.h>
using namespace std;
long long MOD = 1000000007, D1[525000], D2[525000], Dv[600001];
long long Power(long long a, long long k) {
  if (Dv[k] != -1) {
    return Dv[k];
  }
  long long t = 1, S = a, R = 1, K = k;
  while (k > 0) {
    if (k % (2 * t) != 0) {
      k -= t;
      R *= S;
      R %= MOD;
    }
    t *= 2;
    S *= S;
    S %= MOD;
  }
  Dv[K] = R;
  return R;
}
int main() {
  ios::sync_with_stdio(false);
  int n, a;
  cin >> n;
  long long K[71] = {0};
  deque<int> Pr;
  for (int i = 0; i < n; i++) {
    cin >> a;
    K[a]++;
  }
  for (int i = 0; i <= 600000; i++) {
    Dv[i] = -1;
  }
  for (int i = 2; i <= 70; i++) {
    int g = 1;
    for (int y = 2; y < i; y++) {
      if (i % y == 0) {
        g = 0;
        break;
      }
    }
    if (g == 1) {
      Pr.push_back(i);
    }
  }
  for (int i = 0; i <= 70; i++) {
    for (int y = 0; y < 524288; y++) {
      D1[y] = 0;
      D2[y] = 0;
    }
  }
  D1[0] = 1;
  for (int i = 1; i <= 70; i++) {
    if (K[i] == 0) {
      for (int y = 0; y < 524288; y++) {
        D2[y] = D1[y];
      }
    } else {
      long long B = 0;
      a = i;
      for (int y = 0; y < Pr.size(); y++) {
        while (a % Pr[y] == 0) {
          B ^= Power(2, y);
          a /= Pr[y];
        }
      }
      for (int y = 0; y < 524288; y++) {
        D2[y] = Power(2, K[i] - 1) * (D1[y] + D1[(y ^ B)]);
        D2[y] %= MOD;
      }
    }
    for (int y = 0; y < 524288; y++) {
      D1[y] = D2[y];
    }
  }
  cout << D2[0] - 1;
  return 0;
}
