#include<bits/stdc++.h>
using namespace std;
const int N=1000100;
int cnt,k,x[N],w[N],ids[N],ans,root,st[N];
string s;
struct node{
int type,data;
}a[N];
bool isnum(char c){
if(c>='0'&&c<='9') return true;
return false;
}
bool isop(char c){
if(c=='&'||c=='!'||c=='|') return true;
return false;
}
void change(){
int type=1,data=0;
for(int i=0;i<s.size();i++){
char x=s[i];
if(x=='x') type=1,data=0;
else if(isnum(x)) data=data*10+x-'0';
else if(isop(x)) type=0,data=x;
else a[++cnt].type=type,a[cnt].data=data;
}
a[++cnt].type=type,a[cnt].data=data;
}
struct tree{
int l,r,type,data;
}tr[N*2];
void build(){
stack<int >st;
for(int i=1;i<=cnt;i++){
if(a[i].type){
tr[++k].data=a[i].data;
tr[k].l=0,tr[k].r=0,tr[k].type=1;
w[k]=x[a[i].data];
ids[a[i].data]=k;//定位回来,题目告诉你修改的第五个x5 在树上是第K个
st.push(k);
}
else if(a[i].data=='!'){
int t=st.top();
st.pop();
tr[++k].data=a[i].data;
tr[k].l=t,tr[k].r=0,tr[k].type=0;
w[k]=!w[t];
st.push(k);
}
else if(a[i].data=='&'){
int t1=st.top();
st.pop();
int t2=st.top();
st.pop();
tr[++k].data=a[i].data;
tr[k].l=t2,tr[k].r=t1,tr[k].type=0;
w[k]=w[t1]&w[t2];
st.push(k);
}
else if(a[i].data=='|'){
int t1=st.top();
st.pop();
int t2=st.top();
st.pop();
tr[++k].data=a[i].data;
tr[k].l=t2,tr[k].r=t1,tr[k].type=0;
w[k]=w[t1]|w[t2];
st.push(k);
}
}
ans=w[st.top()];
root=st.top();
}
void dfs(int rt){
if(tr[rt].type==1) return;
if(tr[rt].data=='!'){
int l=tr[rt].l,r=tr[rt].r;
st[l]=1;
dfs(l);
}
else if(tr[rt].data=='&'){
int l=tr[rt].l,r=tr[rt].r;
if(w[l]==1&&w[r]==1){
st[l]=1;dfs(l);
st[r]=1;dfs(r);
}
else if(w[l]==1&&w[r]==0){
st[r]=1;dfs(r);
}
else if(w[l]==0&&w[r]==1){
st[l]=1;dfs(l);
}
}
else if(tr[rt].data=='|'){
int l=tr[rt].l,r=tr[rt].r;
if(w[l]==0&&w[r]==0){
st[l]=1;dfs(l);
st[r]=1;dfs(r);
}
else if(w[l]==1&&w[r]==0){
st[l]=1;dfs(l);
}
else if(w[l]==0&&w[r]==1){
st[r]=1;dfs(r);
}
}
}
int main(){
getline(cin,s);
change();
int n;cin>>n;
for(int i=1;i<=n;i++) scanf("%d",&x[i]);
build();
dfs(root);
int q;cin>>q;
for(int i=1;i<=q;i++){
int y;
scanf("%d",&y);
if(st[ids[y]]) cout<<!ans<<"\n";
else cout<<ans<<"\n";
}
return 0;
}