#include<bits/stdc++.h>
using namespace std;
int t,n,nu;
int sf[25];
bool li[25];
bool nj[25],nd[25];
int main(){
cin>>t>>n;
int i,j;memset(nj,true,sizeof(nj));memset(nd,true,sizeof(nd));
for(i=1;i<=n;i++){
cin>>sf[i];li[i]=true;
}int tt,us,be,x,dead[25];
bool lit[25];
bool njt[25],ndt[25];
bool dao[25],gu[25],wu[25];
bool pd;
for(i=1;i<=t;i++){
cin>>nu;
for(j=1;j<=n;j++){
lit[j]=li[j];njt[j]=nj[j];ndt[j]=nd[j];
}
memset(dao,false,sizeof(dao));pd=true;
memset(gu,false,sizeof(gu));memset(wu,false,sizeof(wu));x=0;
for(j=1;j<=nu;j++){
cin>>tt>>us>>be;
if(tt>3||tt<0){pd=false;break;}
if(us>n||be>n||us<1||be<1){pd=false;break;}
if(!li[us]||!li[be]){pd=false;break;}
if((!lit[us]&&(sf[us]!=3&&sf[us]!=4))||(!lit[be]&&(sf[us]!=4))){pd=false;break;}
if((tt==0&&dao[us])||((tt==1||tt==2)&&wu[us])||(tt==3&&gu[us])){pd=false;break;}
if((tt==1&&!ndt[us])||(tt==2&&!njt[us])){pd=false;break;}
if(tt==3&&lit[us]){pd=false;break;}
if(sf[us]==2){pd=false;break;}
if(sf[us]==3&&lit[us]){pd=false;break;}
if((tt==2&&!li[be])||(tt==2&&lit[be])){pd=false;break;}
if(tt==1&&!lit[be]){pd=false;break;}
if(tt!=2&&(be==us)){pd=false;break;}
if((tt==0&&sf[us]!=1)||((tt==1||tt==2)&&sf[us]!=4)||(tt==3&&sf[us]!=3)){pd=false;break;}
if(tt==1&&!lit[us]){pd=false;break;}
if(tt==0){
lit[be]=false;dao[us]=true;
}else if(tt==1){
lit[be]=false;wu[us]=true;ndt[us]=false;
}else if(tt==2){
lit[be]=true;wu[us]=true;njt[us]=false;
gu[be]=false;
}else if(tt==3){
gu[us]=true;lit[be]=false;
}
}for(j=j+1;j<=nu;j++)cin>>tt>>us>>be;
for(j=1;j<=n;j++)if(sf[j]==3&&!lit[j]&&li[j]&&!gu[j])pd=false;
if(!pd)cout<<"Wrong\n";
else{
memset(dead,0,sizeof(dead));
for(j=1;j<=n;j++){
if(li[j]&&!lit[j])dead[++x]=j,li[j]=lit[j];
nd[j]=ndt[j];nj[j]=njt[j];
}if(x==0)cout<<"Safe\n";
else {
printf("%d ",x);
for(j=1;j<=x;j++)printf("%d ",dead[j]);
cout<<endl;
}
}
}
return 0;
}