#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<queue>
#include<math.h>
#include<set>
#include<vector>
#define MAXN 15
#define INF 1000
int main()
{
int i,j,n,m,t,c;
int first[MAXN];
int u[MAXN],v[MAXN],w[MAXN],next[MAXN];
scanf("%d%d",&n,&m);
for(i=0;i<=n;i++) first[i]=-1;
for(i=0;i<m;i++)
{
scanf("%d%d",&u[i],&v[i]);//u是弧尾,v弧头
next[i]=first[u[i]];//就这万恶的两行
first[u[i]]=i;//短小精悍!
}
//后面为自己理解后添加的。
for(i=1;i<=n;i++)
{
if(first[i]==-1)
{
printf("没有以点<%d>为起点的邻接表。\n",i);
continue;
}
printf("以点<%d>为起点的邻接表:\n",i);
for(j=first[i];j!=-1;j=next[j])
{
printf("<%d %d> ",i,v[j]);
}
printf("\n\n");
}
return 0;
}