#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MOD = 1e9 + 7;
const int MAXV = 1000005;
long long a[MAXV], b[MAXV], r[MAXV];
long long mul_mod(long long x, long long y){
long long res = 0;
while(y){
if(y&1) res = (res + x) % MOD;
x = (x + x) % MOD;
y >>= 1;
}
return res;
}
long long pow_mod(long long x, long long n){
long long res = 1;
x %= MOD;
while(n){
if(n&1) res = mul_mod(res, x);
x = mul_mod(x, x);
n >>= 1;
}
return res;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
int mx = 0;
memset(a, 0, sizeof a);
memset(b, 0, sizeof b);
memset(r, 0, sizeof r);
for(int i = 0, x; i < n; i++){
cin >> x;
a[x]++;
mx = max(mx, x);
}
for(int i = 1; i <= mx; i++){
for(int j = i; j <= mx; j += i){
b[i] += a[j];
}
}
for(int i = mx; i >= 1; i--){
r[i] = (pow_mod(2, b[i]) - 1 + MOD) % MOD;
for(int j = i + i; j <= mx; j += i){
r[i] = (r[i] - r[j] + MOD) % MOD;
}
}
cout << r[1] << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKY29uc3QgaW50IE1BWFYgPSAxMDAwMDA1OwoKbG9uZyBsb25nIGFbTUFYVl0sIGJbTUFYVl0sIHJbTUFYVl07Cgpsb25nIGxvbmcgbXVsX21vZChsb25nIGxvbmcgeCwgbG9uZyBsb25nIHkpewogICAgbG9uZyBsb25nIHJlcyA9IDA7CiAgICB3aGlsZSh5KXsKICAgICAgICBpZih5JjEpIHJlcyA9IChyZXMgKyB4KSAlIE1PRDsKICAgICAgICB4ID0gKHggKyB4KSAlIE1PRDsKICAgICAgICB5ID4+PSAxOwogICAgfQogICAgcmV0dXJuIHJlczsKfQoKbG9uZyBsb25nIHBvd19tb2QobG9uZyBsb25nIHgsIGxvbmcgbG9uZyBuKXsKICAgIGxvbmcgbG9uZyByZXMgPSAxOwogICAgeCAlPSBNT0Q7CiAgICB3aGlsZShuKXsKICAgICAgICBpZihuJjEpIHJlcyA9IG11bF9tb2QocmVzLCB4KTsKICAgICAgICB4ID0gbXVsX21vZCh4LCB4KTsKICAgICAgICBuID4+PSAxOwogICAgfQogICAgcmV0dXJuIHJlczsKfQoKc2lnbmVkIG1haW4oKXsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaW50IG47IAogICAgY2luID4+IG47CiAgICBpbnQgbXggPSAwOwoKICAgIG1lbXNldChhLCAwLCBzaXplb2YgYSk7CiAgICBtZW1zZXQoYiwgMCwgc2l6ZW9mIGIpOwogICAgbWVtc2V0KHIsIDAsIHNpemVvZiByKTsKCiAgICBmb3IoaW50IGkgPSAwLCB4OyBpIDwgbjsgaSsrKXsKICAgICAgICBjaW4gPj4geDsKICAgICAgICBhW3hdKys7CiAgICAgICAgbXggPSBtYXgobXgsIHgpOwogICAgfQoKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbXg7IGkrKyl7CiAgICAgICAgZm9yKGludCBqID0gaTsgaiA8PSBteDsgaiArPSBpKXsKICAgICAgICAgICAgYltpXSArPSBhW2pdOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IoaW50IGkgPSBteDsgaSA+PSAxOyBpLS0pewogICAgICAgIHJbaV0gPSAocG93X21vZCgyLCBiW2ldKSAtIDEgKyBNT0QpICUgTU9EOwogICAgICAgIGZvcihpbnQgaiA9IGkgKyBpOyBqIDw9IG14OyBqICs9IGkpewogICAgICAgICAgICByW2ldID0gKHJbaV0gLSByW2pdICsgTU9EKSAlIE1PRDsKICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCByWzFdIDw8ICJcbiI7CiAgICByZXR1cm4gMDsKfQo=