func_code_string: #include <bits/stdc++.h>   using namespace std;   long long spf[100001];   long long fac[100001];   void sieve() {     spf[1] = 1;     for (long long i = 2; i < 100001; i++) spf[i] = i;     for (long long i = 4; i < 100001; i += 2) spf[i] = 2;     for (long long i = 3; i * i < 100001; i++) {       if (spf[i] == i) {         for (long long j = i * i; j < 100001; j += i)           if (spf[j] == j) spf[j] = i;       }     }   }   map<long long, long long> getfactor(long long a) {     map<long long, long long> m;     while (a > 1) {       m[spf[a]]++;       a /= spf[a];     }     return m;   }   long long power(long long x, long long y, long long p) {     long long res = 1;     x = x % p;     if (x == 0) return 0;     while (y > 0) {       if (y & 1) res = (res * x) % p;       y = y >> 1;       x = (x * x) % p;     }     return res;   }   long long gcd(long long a, long long b) {     if (a == 0) return b;     return gcd(b % a, a);   }   long long inverse(long long a, long long p) { return power(a, p - 2, p); }   long long ncr(long long n, long long r, long long p) {     if (r == 0) return 1;     return (fac[n] * inverse(fac[r], p) % p * inverse(fac[n - r], p) % p) % p;   }   void solve() {     long long n;     cin >> n;     long long a[n];     long long hah[100001] = {0}, ans[100001] = {0};     for (long long i = 0; i < n; i++) {       cin >> a[i];       hah[a[i]]++;     }     for (long long i = 100000; i >= 1; i--) {       long long sum = 0;       for (long long j = i; j <= 100000; j += i) {         sum += hah[j];         ans[i] = (ans[i] - ans[j] + 1000000007) % 1000000007;         if (ans[i] < 0) ans[i] = (ans[i] + 1000000007) % 1000000007;       }       ans[i] = (ans[i] % 1000000007 + power(2, sum, 1000000007) - 1 + 1000000007 +                 1000000007) %                1000000007;     }     cout << ans[1] <<   n ;   }   signed main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     long long t = 1;     while (t--) {       solve();     }   }   