# include <bits/stdc++.h>
using namespace std;
const int maxn=10000100;
string s;
int x[maxn],n,q,cnt=0;
int len;
int number[maxn];
stack <int> a;
int doit(int ch)
{
x[ch]=!x[ch];
for (int i=0;i<len;i++)
{
if (s[i]=='x')
{
++cnt;
int j=i+1,tmp=0;
while (s[j]!=' ')
{
number[cnt]+=tmp*10+(s[j]-'0');
tmp++;j++;
}
a.push(x[number[cnt]]);
}
if (s[i]=='|')
{
int t1=a.top();
a.pop();
int t2=a.top();
a.pop();
int tmp=t1|t2;
a.push(tmp);
}
if (s[i]=='&')
{
int t1=a.top();
a.pop();
int t2=a.top();
a.pop();
int tmp=t1&t2;
a.push(tmp);
}
if (s[i]=='!')
{
int tmp=a.top();
a.pop();
tmp=!tmp;
a.push(tmp);
}
}
int result=a.top();
a.pop();
x[ch]=!x[ch];
return result;
}
int main()
{
getline(cin,s);
len=s.length();
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>x[i];
}
cin>>q;
while(q--)
{
int temp;
cin>>temp;
int ans=doit(temp);
cout<<ans<<endl;
}
return 0;
}