#include <cstdio>
#include <vector>
using namespace std;
//70
const int MAXSIR = 1030;
const int MAXLITERE = 'Z' - 'A' + 2;
char sir[MAXSIR];
bool variabila[MAXLITERE];
void citire()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
gets(sir);
}
int i = 0;
char termen[10];
int l_termen;
void det_termen()
{
l_termen = 0;
while('A' <= sir[i] && sir[i] <= 'Z')
{
termen[++l_termen] = sir[i];
++i;
}
}
const int AND = 1;
const int OR = 2;
/*void adaugare_termen(bool val, bool &rasp, bool &inceput, int idoperator, bool &nu)
{
if (nu)
val = !val;
if (!inceput)
{
inceput = true;
rasp = val;
}
else
{
if (idoperator == AND)
rasp = rasp && val;
if (idoperator == OR)
rasp = rasp || val;
}
nu = false;
}*/
char deeval[MAXSIR];
int leval;
bool eval()
{
bool aux = true;
bool inceput = false;
bool aux2;
int poz = 1;
deeval[leval + 1] = 0;
if (deeval[1] == '1' &&
deeval[2] == 'A' &&
deeval[3] == '1' &&
deeval[4] == 'S' &&
deeval[5] == '0')
deeval[leval + 1] = 0;
while(poz <= leval && (deeval[poz] == '0' || deeval[poz] == '1'))
{
aux2 = (deeval[poz] == '1');
while (deeval[poz + 1] == 'A')
{
poz += 2;
aux2 = aux2 && (deeval[poz] == '1');
}
if (!inceput)
{
aux = aux2;
inceput = true;
}
else aux = aux || aux2;
poz += 2;
}
#ifdef DEBUG
for (poz = 1;poz <= leval;++poz)
printf("%c",deeval[poz]);
printf(" -> %d\n",aux);
#endif
return aux;
}
bool cetermen(bool b, bool &nu)
{
if (nu)
{
nu = false;
return !b;
}
else return b;
}
bool expresie()
{
vector<bool> termeni;
vector<int> operatori;
bool nu = false;
while(sir[i] != 0 && sir[i] != ')')
{
if ('A' <= sir[i] && sir[i] <= 'Z')
{
det_termen();
if (l_termen == 1)
termeni.push_back(cetermen(variabila[termen[1] - 'A'],nu));
if (l_termen == 2 && termen[1] == 'O' && termen[2] == 'R')
operatori.push_back(OR);
if (l_termen == 3 && termen[1] == 'A' && termen[2] == 'N' && termen[3] == 'D')
operatori.push_back(AND);
if (l_termen == 3 && termen[1] == 'N' && termen[2] == 'O' && termen[3] == 'T')
nu = true;
if (l_termen == 4 && termen[1] == 'T' && termen[2] == 'R' && termen[3] == 'U' && termen[4] == 'E')
termeni.push_back(cetermen(true,nu));
if (l_termen == 5 && termen[1] == 'F' && termen[2] == 'A' && termen[3] == 'L' && termen[4] == 'S' && termen[5] == 'E')
termeni.push_back(cetermen(false,nu));
}
if (sir[i] == '(')
{
++i;
termeni.push_back(cetermen(expresie(),nu));
}
if (sir[i] == ' ')
++i;
}
++i;
leval = 0;
deeval[++leval] = '0' + (char)termeni[0];
for (int poz = 0;poz < operatori.size();++poz)
{
deeval[++leval] = (operatori[poz] == AND)?'A':'S';
deeval[++leval] = '0' + (char)termeni[poz + 1];
}
return eval();
}
int main()
{
int n;
char c;
citire();
scanf("%d\n",&n);
for (int test = 1;test <= n;++test)
{
if (test == 70)
test = 70;
#ifdef DEBUG
printf("=%d=\n",test);
#endif // DEBUG
scanf("%c",&c);
variabila[c - 'A'] = !variabila[c - 'A'];
i = 0;
#ifdef DEBUG
printf("||\n\\/\n%d\n_______________\n",expresie()?1:0);
#else
printf("%d",expresie()?1:0);
#endif
}
return 0;
}