#include<iostream>
#include<vector>
using namespace std;
//第一种 -- 自己写链表
struct element{
int v;
element *next;
};
element *list[5];//假设有5个顶点,对应着5个链表
//在顶点a 和 b之间添加一条边
void add_edge(int a,int b){
element *e = new element();
e->v = b;
e->next = list[a];
list[a] = e;
}
void recursive_delete(element * e){
if(!e)return ;
recursive_delete(e->next);
delete e;
}
void adjacancy_lists(){
for(int i = 0;i<5;i++){
recursive_delete(list[i]);
list[i] = 0;
}
int a,b;
while(cin >> a >> b)
add_edge(a,b);
}
int main(){
adjacancy_lists();
}
#include<iostream>
#include<vector>
using namespace std;
//第二种 -- 利用stl的vector
inline adjacancy_lists(){
for(int i = 0;i<5;i++)
list[i].clear();
int a,b;
while(cin >> a>>b)
list[a].push_back(b);
}
int main(){
vector <int> list[5];
adjacancy_lists();
return 0;
}