#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
int main(){
ll n;
cin>>n;
ll arr[10005];
for(ll i=1;i<=n;i++)
cin>>arr[i];
ll dp[2][2048];
for(ll i=0;i<2048;i++)
dp[0][i]=-1;
dp[0][0]=0;
ll max1=*max_element(arr+1,arr+n+1);
for(ll i=1;i<=n;i++)
{
ll it=i&1;
for(ll j=0;j<(1<<10);j++)
{
if(dp[!it][j] != -1)
dp[it][j^arr[i]]=max(dp[!it][j^arr[i]],dp[!it][j]+1);
else
dp[it][j^arr[i]]=dp[!it][j^arr[i]];
}
}
ll arr3[1005];
arr3[0]=1;
ll mod=pow(10,9)+7;
for(ll i=1;i<1005;i++)
arr3[i]=(arr3[i-1]*31)%mod;
ll res=0;
for(ll i=0;i<=max1;i++)
{
res=(res+(arr3[i]*dp[n&1][i])%mod)%mod;
}
cout<<res<<endl;
return 0;
}
CgoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgbGw7CmludCBtYWluKCl7CgogICAgbGwgbjsKICAgIGNpbj4+bjsKICAgIGxsIGFyclsxMDAwNV07CgogICAgZm9yKGxsIGk9MTtpPD1uO2krKykKICAgIGNpbj4+YXJyW2ldOwogICAgCiAgICBsbCBkcFsyXVsyMDQ4XTsKICAgIGZvcihsbCBpPTA7aTwyMDQ4O2krKykKICAgIGRwWzBdW2ldPS0xOwoKICAgIGRwWzBdWzBdPTA7CgogICAgbGwgbWF4MT0qbWF4X2VsZW1lbnQoYXJyKzEsYXJyK24rMSk7CiAgICAKICAgIGZvcihsbCBpPTE7aTw9bjtpKyspCiAgICB7CiAgICAgICAgbGwgaXQ9aSYxOwogICAgICAgIGZvcihsbCBqPTA7ajwoMTw8MTApO2orKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKGRwWyFpdF1bal0gIT0gLTEpCiAgICAgICAgICAgIGRwW2l0XVtqXmFycltpXV09bWF4KGRwWyFpdF1bal5hcnJbaV1dLGRwWyFpdF1bal0rMSk7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgZHBbaXRdW2peYXJyW2ldXT1kcFshaXRdW2peYXJyW2ldXTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGxsIGFycjNbMTAwNV07CiAgICBhcnIzWzBdPTE7CiAgICBsbCBtb2Q9cG93KDEwLDkpKzc7CiAgICBmb3IobGwgaT0xO2k8MTAwNTtpKyspCiAgICBhcnIzW2ldPShhcnIzW2ktMV0qMzEpJW1vZDsKICAgIAogICAgbGwgcmVzPTA7CiAgICBmb3IobGwgaT0wO2k8PW1heDE7aSsrKQogICAgewogICAgICAgIHJlcz0ocmVzKyhhcnIzW2ldKmRwW24mMV1baV0pJW1vZCklbW9kOwogICAgfQogICAgY291dDw8cmVzPDxlbmRsOwogICAgCiAgICAgICAgcmV0dXJuIDA7Cn0KCg==