#include <bits/stdc++.h>
using namespace std;
using ll = long long;
static const int MAXA = 1000000;
static const int MOD = 1000000007;
int add(int x,int y){ x+=y; if(x>=MOD) x-=MOD; return x; }
int mul(ll x,ll y){ return int((x*y)%MOD); }
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<int> freq(MAXA+1, 0);
for(int i = 0; i < n; i++){
int a;
cin >> a;
freq[a]++;
}
// 1) Sieve phi up to MAXA
vector<int> phi(MAXA+1);
for(int i = 0; i <= MAXA; i++)
phi[i] = i;
for(int p = 2; p <= MAXA; p++){
if(phi[p] == p){
for(int j = p; j <= MAXA; j += p){
phi[j] -= phi[j] / p;
}
}
}
// 2) For each k, count how many a_i are multiples of k
vector<int> cnt(MAXA+1, 0);
for(int k = 1; k <= MAXA; k++){
for(int j = k; j <= MAXA; j += k){
cnt[k] += freq[j];
}
}
// 3) Precompute powers of two mod MOD
vector<int> pw2(n+1, 1);
for(int i = 1; i <= n; i++){
pw2[i] = add(pw2[i-1], pw2[i-1]); // = pw2[i-1]*2 % MOD
}
// 4) Sum up result
ll ans = 0;
for(int k = 2; k <= MAXA; k++){
int c = cnt[k];
if(c == 0) continue;
// sum_{nonempty subsets S of size c} |S| = c * 2^(c-1)
int ways = mul(c, pw2[c-1]);
ans = (ans + (ll)phi[k] * ways) % MOD;
}
cout << ans << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwpzdGF0aWMgY29uc3QgaW50IE1BWEEgPSAxMDAwMDAwOwpzdGF0aWMgY29uc3QgaW50IE1PRCAgPSAxMDAwMDAwMDA3OwoKaW50IGFkZChpbnQgeCxpbnQgeSl7IHgrPXk7IGlmKHg+PU1PRCkgeC09TU9EOyByZXR1cm4geDsgfQppbnQgbXVsKGxsIHgsbGwgeSl7IHJldHVybiBpbnQoKHgqeSklTU9EKTsgfQoKaW50IG1haW4oKXsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaW50IG47IAogICAgY2luID4+IG47CiAgICB2ZWN0b3I8aW50PiBmcmVxKE1BWEErMSwgMCk7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKICAgICAgICBpbnQgYTsgCiAgICAgICAgY2luID4+IGE7CiAgICAgICAgZnJlcVthXSsrOwogICAgfQoKICAgIC8vIDEpIFNpZXZlIHBoaSB1cCB0byBNQVhBCiAgICB2ZWN0b3I8aW50PiBwaGkoTUFYQSsxKTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPD0gTUFYQTsgaSsrKSAKICAgICAgICBwaGlbaV0gPSBpOwogICAgZm9yKGludCBwID0gMjsgcCA8PSBNQVhBOyBwKyspewogICAgICAgIGlmKHBoaVtwXSA9PSBwKXsKICAgICAgICAgICAgZm9yKGludCBqID0gcDsgaiA8PSBNQVhBOyBqICs9IHApewogICAgICAgICAgICAgICAgcGhpW2pdIC09IHBoaVtqXSAvIHA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gMikgRm9yIGVhY2ggaywgY291bnQgaG93IG1hbnkgYV9pIGFyZSBtdWx0aXBsZXMgb2YgawogICAgdmVjdG9yPGludD4gY250KE1BWEErMSwgMCk7CiAgICBmb3IoaW50IGsgPSAxOyBrIDw9IE1BWEE7IGsrKyl7CiAgICAgICAgZm9yKGludCBqID0gazsgaiA8PSBNQVhBOyBqICs9IGspewogICAgICAgICAgICBjbnRba10gKz0gZnJlcVtqXTsKICAgICAgICB9CiAgICB9CgogICAgLy8gMykgUHJlY29tcHV0ZSBwb3dlcnMgb2YgdHdvIG1vZCBNT0QKICAgIHZlY3RvcjxpbnQ+IHB3MihuKzEsIDEpOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICAgIHB3MltpXSA9IGFkZChwdzJbaS0xXSwgcHcyW2ktMV0pOyAgLy8gPSBwdzJbaS0xXSoyICUgTU9ECiAgICB9CgogICAgLy8gNCkgU3VtIHVwIHJlc3VsdAogICAgbGwgYW5zID0gMDsKICAgIGZvcihpbnQgayA9IDI7IGsgPD0gTUFYQTsgaysrKXsKICAgICAgICBpbnQgYyA9IGNudFtrXTsKICAgICAgICBpZihjID09IDApIGNvbnRpbnVlOwogICAgICAgIC8vIHN1bV97bm9uZW1wdHkgc3Vic2V0cyBTIG9mIHNpemUgY30gfFN8ID0gYyAqIDJeKGMtMSkKICAgICAgICBpbnQgd2F5cyA9IG11bChjLCBwdzJbYy0xXSk7CiAgICAgICAgYW5zID0gKGFucyArIChsbClwaGlba10gKiB3YXlzKSAlIE1PRDsKICAgIH0KCiAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwogICAgcmV0dXJuIDA7Cn0K