#include <bits/stdc++.h>
#define N 200050
using namespace std;
int n, m, i, j, k, x, y;
set <int> a[N];//盒子去重
multiset <int> b[N];//盒子中的数字不去重
int main(){
scanf("%d%d", &n, &m);
for(i=1; i<=m; i++){
scanf("%d%d", &k, &x);
if(k == 1){
scanf("%d", &y);
a[x].insert(y);//数字x出现在盒子y中
b[y].insert(x);//盒子有中增加数字x
}
else if(k == 2){
for(auto p=b[x].begin(); p!=b[x].end(); p++){
printf("%d ", *p);
}//遍历输出盒子x的数字
printf("\n");
}
else{
for(auto p=a[x].begin(); p!=a[x].end(); p++){
printf("%d ", *p);
}//遍历输出数字x所在盒子
printf("\n");
}
}
return 0;
}