#include<bits/stdc++.h>
using namespace std;
using INT = long long;
const int NN = 1e6 + 100;
int dp[NN][21],a[NN],p[NN];
int main() {
#ifndef ONLINE_JUDGE
freopen("in.in", "r", stdin);
#endif
int n,mod=1000000007;
cin>>n;
for(int i=1;i<=n;i++) scanf("%d",a+i),dp[a[i]][0]++;
for(int j=1;j<=20;j++){
for(int i=0;i<NN;i++){
dp[i][j]=dp[i][j-1];
if(i&(1<<j-1)) continue;
if(i+(1<<j-1)<NN) dp[i][j]+=dp[i+(1<<j-1)][j-1];
}
}
p[0]=1;
for(int i=1;i<NN;i++) p[i]=p[i-1]*2%mod;
int ans=0;
for(int i=0;i<NN;i++){
int id=p[dp[i][20]]-1;
int k=__builtin_popcount(i);
if((k%2)) id=mod-id;
ans=(ans+id)%mod;
}
printf("%d\n",ans);
return 0;
}
545B - Equidistant String | 1244C - The Football Season |
1696B - NIT Destroys the Universe | 1674A - Number Transformation |
1244E - Minimizing Difference | 1688A - Cirno's Perfect Bitmasks Classroom |
219A - k-String | 952A - Quirky Quantifiers |
451B - Sort the Array | 1505H - L BREAK into program |
171E - MYSTERIOUS LANGUAGE | 630D - Hexagons |
1690D - Black and White Stripe | 1688D - The Enchanted Forest |
1674C - Infinite Replacement | 712A - Memory and Crow |
1676C - Most Similar Words | 1681A - Game with Cards |
151C - Win or Freeze | 1585A - Life of a Flower |
1662A - Organizing SWERC | 466C - Number of Ways |
1146A - Love "A" | 1618D - Array and Operations |
1255A - Changing Volume | 1710C - XOR Triangle |
415C - Mashmokh and Numbers | 8A - Train and Peter |
591A - Wizards' Duel | 1703G - Good Key Bad Key |