func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long mod = 1e9 + 7;   const long long inf = 1e9;   const long long N = (1 << 20);   long long mod_expo(long long a, long long b, long long c) {     long long ans = 1;     while (b) {       if (b & (long long)1) ans = (ans * a) % c;       a = (a * a) % c;       b = b >> 1;     }     return ans;   }   long long inverse(long long n) { return mod_expo(n, mod - 2, mod); }   int n;   int total;   int a[N];   long long f[N];   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     cin >> n;     total = 1 << 20;     for (int i = 0; i < n; i++) {       int x;       cin >> x;       a[x]++;     }     n = 20;     for (int i = 0; i < total; i++) f[i] = a[i];     for (int i = 0; i < n; i++) {       for (int mask = total - 1; mask >= 0; mask--) {         if ((mask & (1 << i)) == 0) f[mask] += f[mask ^ (1 << i)];       }     }     long long ans = 0;     for (int i = 0; i < total; i++) {       int bits = __builtin_popcount(i);       if (bits % 2)         ans -= mod_expo(2, f[i], mod);       else         ans += mod_expo(2, f[i], mod);       ans %= mod;       ans += mod;       ans %= mod;     }     cout << ans;     return 0;   }   