//P7073 CSP-J2020 T3
#include<bits/stdc++.h>
using namespace std;
int q[1000006][2],l;
int a[100005];
char c[1000006];
int find(int x)
{
return q[x][1]>=0?q[x][1]:q[x][1]=find(-q[x][1]);
}
int main(){
// freopen("expr12.in","r",stdin);
getchar();int xt;cin>>xt;c[1]=xt;
for(l=2;getchar()==' ';++l) {
c[0]=getchar();
if(c[0]=='x'){
cin>>xt;
c[l]=xt;
}else{
c[l]=-c[0];
}
}--l;//cout<<l<<'-';
cin>>a[0];
int k=1;
for(;k<=a[0];++k) cin>>q[k][0];--k;
//请大家注意下面的for循环
// 每当l数值非常大的时候,l在循环里就会时不时的变小
//导致我这题一直40pts(}(·Д·){)
//请问是为什么
//或百度什么关键词可以查
for(int i=1,j=0;i<=l;++i){
cout<<i<<' '<<l<<endl;
if(c[i]>0){
a[++j]=c[i];
}else{
if(c[i]==-'!'){
q[a[j]][0]=1-q[a[j]][0];
}
if(c[i]==-'|'){
++k;
q[k][0]=(q[a[j]][0]||q[a[j-1]][0]);
if(q[a[j]][0]==1)q[a[j-1]][1]=0;
else q[a[j-1]][1]=-k;
if(q[a[j-1]][0]==1)q[a[j]][1]=0;
else q[a[j]][1]=-k;
a[--j]=k;
}
if(c[i]==-'&'){
++k;
q[k][0]=(q[a[j]][0]&&q[a[j-1]][0]);
if(q[a[j]][0]==0)q[a[j-1]][1]=0;
else q[a[j-1]][1]=-k;
if(q[a[j-1]][0]==0)q[a[j]][1]=0;
else q[a[j]][1]=-k;
a[--j]=k;
}
}
}q[k][1]=1;
int JoBi;cin>>JoBi;
while(JoBi--){
int x;cin>>x;
if(q[x][1]<0)find(x);
cout<<JoBi<<' '<<abs(q[k][0]-q[x][1])<<endl;
}
}