#include <bits/stdc++.h>
using namespace std;
const int DIM = 1005;
char str[DIM];
int pos[DIM];
void solve1(int &it, int &le, int &ri, bool &ok);
void solve2(int &it, int &le, int &ri, bool &ok);
void solve3(int &it, int &le, int &ri, bool &ok);
void solve1(int &it, int &le, int &ri, bool &ok) {
solve2(it, le, ri, ok);
vector<pair<int, int>> lst(1, make_pair(le, ri));
while (str[it] == '#') {
int le1, ri1;
solve2(++it, le1, ri1, ok);
lst.push_back(make_pair(le1, ri1)); }
sort(lst.begin(), lst.end());
le = lst.front().first, ri = lst.back().second;
for (int i = 1; i < lst.size(); ++i) {
if (lst[i - 1].second + 1 != lst[i].first) {
ok = false; } } }
void solve2(int &it, int &le, int &ri, bool &ok) {
solve3(it, le, ri, ok);
while (str[it] == '>') {
int le1, ri1;
solve3(++it, le1, ri1, ok);
if (ri + 1 != le1) {
ok = false; }
ri = ri1; } }
void solve3(int &it, int &le, int &ri, bool &ok) {
if (str[it] == '(') {
solve1(++it, le, ri, ok); ++it; }
else {
int v = 0;
while ('0' <= str[it] and str[it] <= '9') {
v = v * 10 + (str[it++] - '0'); }
le = ri = pos[v]; } }
int main(void) {
freopen("episoade.in", "r", stdin);
freopen("episoade.out", "w", stdout);
cin >> str;
int q, n; cin >> q >> n;
while (q--) {
for (int i = 1; i <= n; ++i) {
int x; cin >> x; pos[x] = i; }
int it = 0, le = 0, ri = 0; bool ok = true;
solve1(it, le, ri, ok); cout << ok << endl; }
return 0; }