60分
#include<bits/stdc++.h>
#define ll long long
#define ios ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);
using namespace std;
const int M=1e4+2,N=3005;
struct node
{
string name;
int output;
vector<int>input;
}a[N];
int Q,m,n,S,in[N];
vector<int>g[N],ans,res[M];
void tuopu()
{
queue<int>q;
for(int i=1;i<=n+m;i++)
if(in[i]==0)
q.push(i);
while(!q.empty())
{
int u=q.front();
q.pop();
ans.push_back(u);
for(int i=0;i<g[u].size();i++)
{
int v=g[u][i];
in[v]--;
if(in[v]==0)
q.push(v);
}
}
}
void update(int u)
{
int o=a[u].output;
for(int j=0;j<g[u].size();j++)
{
int v=g[u][j];
a[v].input.push_back(o);
}
}
void process(int u)
{
string name=a[u].name;
vector<int>input=a[u].input;
if(name=="NOT")
a[u].output=~input[0];
else if(name=="AND")
{
a[u].output=input[0];
for(int i=1;i<input.size();i++)
a[u].output= a[u].output&input[i];
}
else if(name=="OR")
{
a[u].output=input[0];
for(int i=1;i<input.size();i++)
a[u].output=a[u].output|input[i];
}
else if(name=="XOR")
{
int sum=0;
a[u].output=input[0];
for(int i=1;i<input.size();i++)
a[u].output=a[u].output^input[i];
//cout<<a[u].output<<endl;
}
else if(name=="NAND")
{
a[u].output=input[0];
for(int i=1;i<input.size();i++)
a[u].output=a[u].output&input[i];
a[u].output=~a[u].output;
}
else if(name=="NOR")
{
a[u].output=input[0];
for(int i=1;i<input.size();i++)
a[u].output=a[u].output|input[i];
a[u].output=~a[u].output;
}
cout<<a[u].output<<endl;
}
int main()
{
cin>>Q;
while(Q--)
{
cin>>m>>n;
for(int i=1;i<=n;i++)//o´Ó1µ½n£¬i´Ón+1µ½n+m
{
cin>>a[i].name;
int k;
char l[100];
cin>>k;
while(k--)
{
//int u;
scanf("%s", l);
int u = atoi(l + 1);
if(l[0]=='I')
u+=n;
g[u].push_back(i);
in[i]++;
}
}
tuopu();
int f=0;
if(ans.size()!=n+m)
f=1;
else
{
cin>>S;
for(int i=0;i<S;i++)
{
for(int j=1;j<=m+n;j++)
{
a[j].input.clear();
a[j].output=0;
}
for(int j=1;j<=m;j++)
cin>>a[j+n].output;
for(int j=0;j<ans.size();j++)
{
int u=ans[j];
if(u>n)
update(u);
else
{
process(u);
update(u);
}
}
for(int j=1;j<=n;j++)
res[i].push_back(a[j].output);
}
for(int i=0;i<S;i++)
{
int s_i;
cin>>s_i;
for(int j=0;j<s_i;j++)
{
int query;
cin>>query;
cout<<res[i][query-1]<<" ";
}
cout<<endl;
}
}
if(f==1)
cout<<"LOOP"<<endl;
for(int i=0;i<S;i++)
res[i].clear();
for(int i=1;i<=n+m;i++)
g[i].clear();
memset(in,0,sizeof(in));
ans.clear();
for(int i=1;i<=n+m;i++)
a[i].input.clear();
}
return 0;
}