#include <iostream>
using namespace std;
struct Witch{
bool anti=1,pois=1,tpois=1,tanti=1;
};
int main(){
int t,n,m;
cin >> t >> n;
int role[n+1];
Witch witch[n+1];
bool life[n+1],nowdie[n+1];
for(int i=1;i<=n;i++)cin >> role[i],life[i]=1;
while(t--){
for(int i=1;i<=n;i++)nowdie[i]=0;
bool isWrong=false,skill3=false;
cin >> m;
int ans=0;
bool rec[4][n+1];
for(int j=0;j<4;j++)for(int k=1;k<=n;k++)rec[j][k]=0;
for(int i=0;i<m;i++){
int a,id1,id2;
cin >> a >> id1 >> id2;
if(id1>n or id1<1 or id2>n or id2<1)isWrong=true;
if(isWrong)continue;
if(role[id1]==4)if(rec[2][id1]!=0 or rec[1][id1]!=0)isWrong=true;
if(rec[a][id1]!=0)isWrong=true;
else rec[a][id1]=1;
if(role[id1]==2)isWrong=true;
else switch(a){
case 0:{if((nowdie[id1] or !life[id1] or nowdie[id2] or !life[id2]) or
(id1==id2) or (role[id1]!=1))isWrong=true;break;
}case 1:{if((nowdie[id1] or !life[id1] or nowdie[id2] or !life[id2]) or
(id1==id2) or (role[id1]!=4) or !witch[id1].pois)isWrong=true;break;
}case 2:{if((!nowdie[id2]) or
(role[id1]!=4)or !witch[id1].anti or (nowdie[id1] && id2!=id1))isWrong=true;break;
}case 3:{if((!nowdie[id1] or nowdie[id2] or !life[id2]) or
(role[id1]!=3))isWrong=true;break;
}
}
if(!isWrong)switch(a){
case(0):nowdie[id2]=true,ans++;break;
case(1):nowdie[id2]=true,witch[id1].tpois=false,ans++;break;
case(2):nowdie[id2]=false,witch[id1].tanti=false,ans--;break;
case(3):nowdie[id2]=true,ans++,skill3=true;break;
}
}
bool Wrong1=false;
for(int i=1;i<=n;i++)if(role[i]==3 && nowdie[i] && !skill3)Wrong1=true;
if(isWrong or Wrong1){
cout << "Wrong" << endl;
for(int i=1;i<=n;i++)if(role[i]==4)
witch[i].tanti=witch[i].anti,witch[i].tpois=witch[i].pois;
}else if (ans==0)cout << "Safe" << endl;
else{
cout << ans << ' ';
for(int i=1;i<=n;i++){
if(nowdie[i])cout << i << ' ',life[i]=0;
}
cout << endl;
}
if(!(isWrong or Wrong1))for(int i=1;i<=n;i++)if(role[i]==4)
witch[i].anti=witch[i].tanti,witch[i].pois=witch[i].tpois;
}
}