#include <bits/stdc++.h>
using namespace std;
int v[100005];
long long qtd[100005];
bool isprime[100005];
vector<int> primes;
long long cnt[100005];
long long ans;
void calc(int i, int t, long long mult) {
  for (int j = i; j < primes.size(); j++) {
    long long aux = mult * primes[j];
    if (aux > 100005) return;
    ans += t * cnt[qtd[aux]];
    calc(j + 1, -t, aux);
  }
}
int main() {
  cnt[0] = 1;
  for (int i = 1; i < 100005; i++) {
    cnt[i] = cnt[i - 1] * 2 % 1000000007;
  }
  for (int i = 0; i < 100005; i++) cnt[i]--;
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", v + i);
  for (int i = 0; i < n; i++) {
    int num = v[i];
    for (int j = 2; j * j <= num; j++) {
      if (num % j == 0) {
        qtd[j]++;
        qtd[num / j]++;
        if (j * j == num) qtd[j]--;
      }
    }
    qtd[num]++;
  }
  for (int i = 2; i < 100005; i++) {
    if (!isprime[i]) {
      primes.push_back(i);
      if (1LL * i * i >= 100005) continue;
      for (int j = i * i; j < 100005; j += i) isprime[j] = true;
    }
  }
  calc(0, 1, 1);
  cout << ((cnt[n] - ans) % 1000000007 + 1000000007) % 1000000007;
  return 0;
}
