#include<iostream>
#include<vector>
using namespace std;
const int N=1e5+5;
int U[N],V[N];//点数,边数
vector<int> G[N];//vector定义的存储树的数组
//vector加边更方便
int main(){
int n,m; cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>U[i]>>V[i];
G[U[i]].push_back(V[i]);
// G[V[i]].push_back(U[i]);//双向加边
}
for(int i=1;i<=n;i++){//点数
cout<<i<<" : ";
for(int j=0;j<G[i].size();j++){//点的对应边
cout<<G[i][j]<<" ";
}
cout<<endl;
}
return 0;
}