#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<deque>
using namespace std;
const int maxn=30;
vector<int> p[maxn];
int N;
void Afind(int&x,int&y,int a){
for(int i=0;i<N;i++)
for(int j=0;j<p[i].size();j++)
if(p[i][j]==a)x=i,y=j;
}
void ret(int x,int y,int a){
for(int i=y+1;i<p[x].size();i++)
p[p[x][i]].push_back(p[x][i]);
p[x].resize(y+1);
}
void mov(int a,int b){
int ax,ay,bx,by;
Afind(ax,ay,a);
Afind(bx,by,b);
for(int i=ay;i<p[ax].size();i++)
p[bx].push_back(p[ax][i]);
p[ax].resize(ay);
}
void print(){
for(int i=0;i<N;i++){
printf("%d:",i);
for(int j=0;j<p[i].size();j++)
printf(" %d",p[i][j]);
printf("\n");
}
}
int main(){
cin>>N;
for(int i=0;i<N;i++)
p[i].push_back(i);
string s1,s2;
int a,b,K;
while(cin>>s1&&s1[0]!='q'){
cin>>a>>s2>>b;
int ax,ay,bx,by;
Afind(ax,ay,a);
Afind(bx,by,b);
if(ax==bx)continue;
if(s1[0]=='m')
ret(ax,ay,a);
if(s2[1]=='n')
ret(bx,by,b);
mov(a,b);
}
print();
return 0;
}