#include <bits/stdc++.h>
using namespace std;
const int N=25;
int t,n;
int career[N];// 1 狼人 2 平民 3 猎人 4 女巫
int alive[N];
int b[N];
bool jineng[N];
bool jy[N],dy[N];
bool bjy[N],bdy[N];
int main(){
cin>>t>>n;
for(int i=1;i<=n;i++){
cin>>career[i];
alive[i]=1;
if(career[i]==4) jy[i]=1;dy[i]=1;
}
while(t--){
int m;
cin>>m;
bool wrong=0;
for(int i=1;i<=n;i++) b[i]=alive[i],jineng[i]=0;//存一下夜晚开始前的状态
for(int i=1;i<=n;i++){
bjy[i]=jy[i];
bdy[i]=dy[i];
}
vector<int> v;
vector<int> v2;//
while(m--){
int o;
cin>>o;
int id1,id2;
cin>>id1>>id2;
if(wrong) continue;
if(id1>n||id2>n||id1<1||id2<1) wrong=1;
if((o!=2&&o!=3)&&(!alive[id1]||!alive[id2])) wrong=1;
if(career[id1]!=2&&jineng[id1]) wrong=1;
if(o==3&&alive[id1]) wrong=1;
if(career[id1]==2) wrong=1;
bool r=0;
for(int i=0;i<v.size()&&!r;i++) r=r||v[i]==id2;
if(o==2&&(alive[id2]||!r)) wrong=1;
if(o!=2&&id1==id2) wrong=1;
if(o==1&&!dy[id1]) wrong=1;
if(o==2&&!jy[id1]) wrong=1;
if(o==0&&career[id1]!=1) wrong=1;
if((o==1||o==2)&&career[id1]!=4) wrong=1;
if(o==3&&career[id1]!=3) wrong=1;
if(jineng[id1]) wrong=1;
if(wrong) continue;
if(o==0){
jineng[id1]=1;
alive[id2]=0;
if(career[id2]==3) v2.push_back(id2);
v.push_back(id2);
}else if(o==1){
jineng[id1]=1;
alive[id2]=0;
if(career[id2]==3) v2.push_back(id2);
v.push_back(id2);
dy[id1]=0;
if(career[id2]==3) jineng[id2]=0;
}else if(o==2){
jineng[id1]=1;
alive[id2]=1;
for(int i=0;i<v.size();i++){
if(v[i]==id2) v.erase(v.begin()+i,v.begin()+i+1);
}
jy[id1]=0;
}else{
jineng[id1]=1;
alive[id2]=0;
if(career[id2]==3) v2.push_back(id2);
v.push_back(id2);
}
}
for(int i=0;i<v2.size()&&(!wrong);i++){
if(!jineng[v2[i]]&&!alive[v2[i]]) wrong=1;
}
for(int i=1;i<=n;i++) if(bjy[i]==1&&bdy[i]==1&&jy[i]==0&&dy[i]==0) wrong=1;
if(wrong){
puts("Wrong");
for(int i=1;i<=n;i++) alive[i]=b[i];
for(int i=1;i<=n;i++) jy[i]=bjy[i],dy[i]=bdy[i];
}else{
if(v.size()){
cout<<v.size()<<" ";
sort(v.begin(),v.end());
for(int i=0;i<v.size();i++) cout<<v[i]<<" ";
puts("");
}else puts("Safe");
}
}
return 0;
}