2
1 31
 2
1 0
 10
450661 128600 993228 725823 293549 33490 843121 903634 556169 448234
 1
1
 5
1 3 5 7 9
 6
524 529 5249 524 529 529
 3
1 2 3
 2
0 1
 55
0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 3 4 5 6 7 8 9 4 5 6 7 8 9 5 6 7 8 9 6 7 8 9 7 8 9 8 9 9
 16
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
 3
128 1024 2048
 10
3 3 3 5 5 3 3 3 3 5
 1
0
 2
1 2
 2
0 0
 2
1 1

0
 2
 632
 0
 0
 24
 2
 2
 621247139
 64594
 4
 0
 1
 1
 3
 0

#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define F first
#define S second
int const M=1e6+10,mod=1e9+7;
int a[M],dp[M],pw[M];
int check(int tmp)
{
	return (pw[tmp]-1+mod)%mod;
}
main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i],dp[a[i]]++;
	for(int i=0;i<=20;i++)
	{
		for(int j=0;j<=1e6;j++)
		{
			if(j & (1<<i))
			{
				dp[j xor (1<<i)]+=dp[j];
			}
		}
	}
	pw[0]=1;
	for(int i=1;i<=n;i++)
		pw[i]=pw[i-1]*2,pw[i]%=mod;
	int ans=(pw[n]-1+mod)%mod;
	for(int i=1;i<=1e6;i++)
	{
		int tmp=0;
		for(int j=0;j<=20;j++)
		{
			if(i& (1<<j))
				tmp++;
		}
		if(tmp%2==1)
		{
			ans-=check(dp[i]);
		}
		else
			ans+=check(dp[i]);
		ans%=mod;
	}
	cout<<ans;
}
