#include<bits/stdc++.h>
using namespace std;
long long n,m,d,q;
long long a1[100005],c[100005];
bool f[25][100005];
long long a[100005],modd[6],ans[100005];
long long lg[100005];
long long b[100005],cnt;
long long id[100005];
int main()
{
lg[0]=0;
cin>>n>>m;
for(long long i=1;i<=n;i++)
lg[i]=lg[i/2]+1;
for(long long i=1;i<=n;i++)
cin>>a1[i];
for(long long i=1;i<=m;i++)
cin>>c[i];
while((1<<d)<n)
d++;
n=(1<<d);
for(long long i=1;i<=d;i++)
for(long long j=1;j<=1<<(d-i);j++)
{
char c;
cin>>c;
f[i][j]=(c=='1');
}
cin>>q;
for(long long i=0;i<4;i++)
cin>>modd[i];
for(long long i=1;i<=n;i++)
a[i]=a1[i]^modd[i%4];
long long nn=n;
ans[1]=1;
for(long long i=1;i<=n;i++)
id[i]=i;
for(long long i=1;i<=d;i++)
{
cnt=0;
for(long long j=1;j<=nn;j+=2)
{
if(f[i][j/2+1])
{
if(a[j+1]>=i)
b[++cnt]=a[j+1],id[cnt]=id[j+1];
else
b[++cnt]=a[j],id[cnt]=id[j];
}
else
{
if(a[j]>=i)
b[++cnt]=a[j],id[cnt]=id[j];
else
b[++cnt]=a[j+1],id[cnt]=id[j+1];
}
}
ans[i+1]=id[1];
nn=cnt;
for(long long i=1;i<=nn;i++)
a[i]=b[i];
}
long long sum=0;
for(long long i=1;i<=m;i++)
sum=sum^(ans[lg[c[i]]]*i);
cout<<sum<<endl;
return 0;
}
/*
4 3
0 0 0 0
1 2 4
10
1
1
2 1 0 0
*/
求问题在哪儿,谢谢dl