#include<bits/stdc++.h>
using namespace std;
const int T=2e5+55;
const int F=2e5+54;
const int U=2e5+53;
const int N=1e5+9;
int fa[2*N+500];
int vis[2*N+500];
int c,t;
int find(int xx){
if(xx==-F||fa[xx]==-F){
return -F;
}
else if(xx==-U||fa[xx]==-U){
return -U;
}
else if(xx==-T||fa[xx]==-T){
return -T;
}
else if(xx!=fa[xx]){
fa[xx]=find(fa[xx]);
}
return fa[xx];
}
int main(){
freopen("tribool4.in","r",stdin);
freopen("tribool4.out","w",stdout);
cin>>c>>t;
while(t--){
int n,m;
cin>>n>>m;
memset(fa,0,sizeof(fa));
memset(vis,0,sizeof(vis));
fa[T]=T;
fa[F]=F;
fa[U]=U;
int ling=n+1;
for(int i=1;i<=ling+n;i++){
fa[i]=i;
}
for(int i=1;i<=m;i++){
char ch;
cin>>ch;
if(ch=='T'||ch=='U'||ch=='F'){
int a;
cin>>a;
if(ch=='T'){
fa[a+ling]=T;
fa[ling-a]=-T;
}
else if(ch=='F'){
fa[a+ling]=F;
fa[ling-a]=-F;
}
else{
fa[a+ling]=U;
fa[ling-a]=-U;
}
}
else{
int a,b;
cin>>a>>b;
if(ch=='+'){
fa[a+ling]=find(b+ling);
fa[ling-a]=find(ling-b);
}
else if(ch=='-'){
fa[a+ling]=find(ling-b);
fa[ling-a]=find(ling+b);
}
}
}
for(int i=1;i<=ling+n;i++){
int u=find(i);
cout<<i<<" ";
}
cout<<endl;
for(int i=1;i<=ling+n;i++){
cout<<fa[i]<<" ";
}
cout<<endl;
int ans=0;
for(int i=1;i<=n;i++){
if(fa[ling+i]==fa[ling-i]||fa[ling+i]==ling-i||fa[ling-i]==ling+i||fa[ling+i]==U||fa[ling-i]==U||fa[ling+i]==-U||fa[ling-i]==-U||vis[fa[ling-i]]||vis[fa[ling+i]]||vis[ling+i]||vis[ling-i]){
vis[fa[ling-i]]=1;
vis[fa[ling+i]]=1;
vis[ling-i]=1;
vis[ling+i]=1;
}
}
for(int i=1;i<=ling+n;i++){
cout<<vis[i]<<" ";
}
cout<<endl;
cout<<endl;
for(int i=1;i<=n;i++){
if(vis[ling+i]||vis[ling-i]||vis[fa[ling+i]]||vis[fa[ling-i]]||fa[ling+i]==U||fa[ling-i]==U||fa[ling+i]==-U||fa[ling-i]==-U||ling+i==ling-i){
ans++;
cout<<ling+i<<" ";
}
}
cout<<endl<<endl;
cout<<n<<" "<<ling<<" ";
cout<<ans<<endl<<endl;
}
return 0;
}
/*
*/