#include<bits/stdc++.h>
#define int long long
using namespace std;
int t, n, a[55];
map<int,int> mp;
map<int,int> vis;
map<int,int> used, used1[55], used2[55];
vector<int> v[55];
signed main()
{
cin>>t>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
while(t--)
{
int m;
cin>>m;
bool f=0;
vis.clear();
used.clear();
for(int i=1;i<=n;i++)
{
v[i].clear();
}
for(int i=1;i<=m;i++)
{
int op, id1, id2;
cin>>op>>id1>>id2;
for(int j=1;j<=n;j++)
{
used2[1][j]=used2[2][j]=0;
}
if(f)continue;
if(a[id1]==2)
{
f=1;
continue;
}
if(op==0)
{
if(a[id1]!=1||used[id1]||id1>n||id2>n||mp[id1]||mp[id2]||id1==id2||id1<1||id2<1)
{
f=1;
continue;
}
vis[id2]=1;
used[id1]=1;
mp[id2]=1;
}
if(op==1)
{
if(a[id1]!=4||used[id1]||mp[id2]||id1>n||id2>n||mp[id1]||id1==id2||used1[1][id1]||id1<1||id2<1)
{
f=1;
continue;
}
vis[id2]=1;
used[id1]=1;
mp[id2]=1;
used1[1][id1]=1;
used2[1][id1]=1;
}
if(op==2)
{
if(a[id1]!=4||used[id1]||!vis[id2]||id1>n||id2>n||used1[2][id1]||id1<1||id2<1)
{
f=1;
continue;
}
if(a[id2]==3)
{
used[id2]=0;
}
mp[id2]=0;
vis[id2]=0;
used[id1]=1;
used1[2][id1]=1;
used2[2][id1]=1;
}
if(op==3)
{
if(a[id1]!=3||!vis[id1]||used[id1]||id1==id2||mp[id2]||id1>n||id2>n||id1<1||id2<1)
{
f=1;
continue;
}
vis[id2]=1;
mp[id2]=1;
used[id1]=1;
v[id1].push_back(id2);
}
}
for(int i=1;i<=n;i++)
{
if(vis[i]&&a[i]==3&&!used[i])
{
f=1;
break;
}
}
if(f)
{
cout<<"Wrong\n";
for(int i=1;i<=n;i++)
{
if(vis[i])
{
mp[i]=0;
vis[i]=0;
}
}
for(int i=1;i<=n;i++)
{
if(used2[1][i])used1[1][i]=0;
if(used2[2][i])used1[2][i]=0;
}
continue;
}
int cnt=0;
for(int i=1;i<=n;i++)
{
if(vis[i])
{
cnt++;
}
}
if(!cnt)
{
cout<<"Safe\n";
continue;
}
else
{
cout<<cnt<<" ";
for(int i=1;i<=n;i++)
{
if(vis[i])
{
cout<<i<<" ";
}
}
cout<<"\n";
}
}
}