#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,n;
struct no{
int sf;
bool dy,jy;
}a[25];
bool vis[25];
int op[25],id1[25],id2[25];
bool ss[25],cz[25];//生死,是否操作
bool nd[25],nj[25];//女巫的毒药,解药是否用过
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>t>>n;
for(int i=1;i<=n;i++){
cin>>a[i].sf;
vis[i]=1;
if(a[i].sf==4){
a[i].dy=1;
a[i].jy=1;
}
}
while(t--){
int m;
cin>>m;
for(int i=1;i<=m;i++){
cin>>op[i]>>id1[i]>>id2[i];
}
//判断是否错误
for(int i=1;i<=n;i++){
ss[i]=vis[i];
cz[i]=0;
if(a[i].sf==4){
nd[i]=a[i].dy;
nj[i]=a[i].jy;
}
}
bool flag=0;
for(int i=1;i<=m;i++){
if(id1[i]>n || id2[i]>n || id1[i]<1 || id2[i]<1){
flag=1;
break;
}
int l=id1[i],r=id2[i];
if(op[i]==0){
if(a[l].sf!=1){
flag=1;
break;
}
if(cz[l]){
flag=1;
break;
}
if(!ss[r]){
flag=1;
break;
}
if(l==r){
flag=1;
break;
}
ss[r]=0;
cz[l]=1;
}
if(op[i]==1){
if(a[l].sf!=4){
flag=1;
break;
}
if(cz[l]){
flag=1;
break;
}
if(!ss[r]){
flag=1;
break;
}
if(!nd[l]){
flag=1;
break;
}
if(l==r){
flag=1;
break;
}
nd[l]=0;
cz[l]=1;
ss[r]=0;
}
if(op[i]==2){//复活吧,我的爱人
if(a[l].sf!=4){
flag=1;
break;
}
if(cz[l]){
flag=1;
break;
}
if(ss[r]){
flag=1;
break;
}
if(!vis[r]){
flag=1;
break;
}
if(!nj[l]){
flag=1;
break;
}
ss[r]=1;
cz[l]=1;
nj[l]=0;
// cz[r]=0;
}
if(op[i]==3){
if(a[l].sf!=3){
flag=1;
break;
}
if(cz[l]){
flag=1;
break;
}
// if(!vis[l]){
// flag=1;
// break;
// }
if(ss[l]){
flag=1;
break;
}
if(!ss[r]){
flag=1;
break;
}
if(l==r){
flag=1;
break;
}
cz[l]=1;
ss[r]=0;
}
if(op[i]<0 || op[i]>3){
flag=1;
break;
}
}
for(int i=1;i<=n;i++){
if(a[i].sf!=3){
continue;
}
if(vis[i] && !ss[i] && !cz[i]){
flag=1;
break;
}
}
if(flag){
cout<<"Wrong\n";
continue;
}
int cnt=0;
for(int i=1;i<=n;i++){
if(vis[i] && !ss[i]){
cnt++;
}
}
if(!cnt){
cout<<"Safe\n";
}else{
cout<<cnt<<' ';
for(int i=1;i<=n;i++){
if(vis[i] && !ss[i]){
cout<<i<<' ';
}
}
cout<<"\n";
}
for(int i=1;i<=n;i++){
vis[i]=ss[i];
if(a[i].sf==4){
a[i].dy=nd[i];
a[i].jy=nj[i];
}
}
}
return 0;
}
/*
2 7
1 2 3 4 1 2 3
1
1 4 2
1
1 4 1
*/
rt