#include<bits/stdc++.h>
#define endl '\n'
#define lowbit(x) (x)&(-x)
using namespace std;
typedef double db;
typedef long long ll;
typedef __int128 III;
const db eqs=1e-6;
const int inf=1e9;
void ll_cmax(ll &a,ll b){a=a>b?a:b;}
void ll_cmin(ll &a,ll b){a=a<b?a:b;}
void int_cmax(int &a,int b){a=a>b?a:b;}
void int_cmin(int &a,int b){a=a<b?a:b;}
bool db_eq(db a,db b){return fabs(a-b)<eqs;}
bool number(char ch){return ch>='0' && ch<='9';}
bool lowerchar(char ch){return ch>='a' && ch<='z';}
int sqlong(int n){int sq=sqrt(n)+1;return min(sq,n);}
const int MAXN=20+5;
int n,m,a[MAXN],c[MAXN],bf[MAXN],d[MAXN];
pair<int,int>b1[MAXN],b2[MAXN],b[MAXN];
vector<int>peo1,peo2;
void beifen()
{
for(int i=1;i<=n;i++) bf[i]=c[i],b2[i]=b1[i];
}
void huanyuan()
{
for(int i=1;i<=n;i++) c[i]=bf[i],b1[i]=b2[i];
for(int i=0;i<peo1.size();i++) b[peo1[i]].second=b[peo1[i]].first=0;
}
void shanchu(int x)
{
for(int i=peo1.size()-1;i>=0;i--)
{
int f=peo1[i];
peo1.pop_back();
if(x==f)
{
for(int j=0;j<peo2.size();j++) peo1.push_back(peo2[j]);
peo2.clear();
break;
}
peo2.push_back(f);
}
d[x]=0;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>m>>n;
for(int i=1;i<=n;i++) cin>>a[i];
int t;
for(int k=1;k<=m;k++)
{
peo1.clear();beifen();for(int i=1;i<=n;i++) d[i]=0;
cin>>t;
int id,id1,id2,j=t;
bool flag=0;
for(int i=1;i<=t;i++)
{
cin>>id>>id1>>id2;
if(id1==2)
{
return -1;
}
if(id==0)
{
if(a[id1]!=1 || id1==id2 || b[id1].first || b[id2].first || c[id1]==k)
{
flag=1;
j=i;
break;
}
c[id1]=k;
b[id2].first=1;
b[id2].second=k;
peo1.push_back(id2);
if(a[id2]==3) d[id2]=1;
}
if(id==3)
{
if(a[id1]!=3 || b[id1].second!=k || b[id2].first || c[id1]==k)
{
flag=1;
j=i;
break;
}
d[id1]=0;
c[id1]=k;
b[id2].first=1;
b[id2].second=k;
peo1.push_back(id2);
}
if(id==2)
{
if(a[id1]!=4 || b[id2].second!=k || b1[id1].first || b1[id1].second==k)
{
flag=1;
j=i;
break;
}
if(b[id1].first && id2!=id1)
{
flag=1;
j=i;
break;
}
b1[id1].first=k;
b[id2].first=0;
b[id2].second=0;
shanchu(id2);
if(a[id2]==3) c[id2]=0;
}
if(id==1)
{
if(a[id1]!=4 || id1==id2 || b[id1].first || b[id2].first || b1[id1].second || b1[id1].first==k)
{
flag=1;
j=i;
break;
}
b1[id1].second=k;
b[id2].first=1;
b[id2].second=k;
peo1.push_back(id2);
if(a[id2]==3) d[id2]=1;
}
}
int p,q,m;
for(int i=j+1;i<=t;i++) cin>>p>>q>>m;
for(int i=1;i<=n;i++) if(d[i]) {flag=1;;break;}
if(flag)
{
cout<<"Wrong\n";
huanyuan();
}
else if(peo1.size()==0) cout<<"Safe\n";
else
{
sort(peo1.begin(),peo1.end());
cout<<peo1.size()<<" ";
for(int i=0;i<peo1.size();i++) cout<<peo1[i]<<" ";
cout<<endl;
}
}
return 0;
}