#include <bits/stdc++.h>
#define int long long
using namespace std;
const int mod=10086;
int base[32],b[32],tot;
bool add(int x){
for (int i=31;i>=0;i--){
if (x&(1ll<<i)){
if (!base[i]){base[i]=x;return 1;}
x^=base[i];
}
}
return 0;
}
void rebuild(){
for (int i=0;i<32;i++){
for (int j=i-1;j>=0;j--){
if (base[i]&(1ll<<j)) base[i]^=base[j];
}
}
for (int i=0;i<32;i++){
if (base[i]) b[tot++]=base[i];
}
return;
}
int qrank(int x){
int ret=0;
for (int i=0;i<tot;i++){
if ((x&b[i])==b[i]) ret+=(1ll<<i);
}
return ret;
}
int qpow(int a, int k){
if (k==0) return 1;
if (k==1) return a;
int ret=qpow(a,k/2);
if (k%2) (ret*=qpow(a,k-k/2)%mod)%=mod;
else (ret*=ret)%=mod;
return ret;
}
signed main(){
int n,tmp=1;cin>>n;
for (int i=1;i<=n;i++){
int x;cin>>x;add(x);
}
rebuild();
int k;cin>>k;
int ans=qrank(k)%mod*qpow(2,n-tot)+1;
cout<<ans%mod;
return 0;
}