#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
struct node
{
int to;
int next;
int w;
}edge[100];
int head[100];
int t = 0;
void AddEdge(int u, int v, int w)
{
edge[t].to = v;
edge[t].w = w;
edge[t].next = head[u];
head[u] = t++;
}
int main()
{
int n;
cin >> n;
int u, v, w;
memset(head, -1, sizeof(head));
for(int i = 1; i <= n; i++)
{
cin >> u >> v >> w;
AddEdge(u, v, w);
}
for(int i = head[3]; i != -1; i = edge[i].next)//输出以3为起点的边
{
cout << 3<< " ";
cout << edge[i].to << endl;
}
cout << "***" << endl;
for(int i = 1; i <= n; i++)//输出以i为起点的多条边
{
for(int j = head[i]; j != -1; j = edge[j].next)
{
cout << i << " " << edge[i].to << " " << edge[i].w << endl;
}
}
return 0;
}
/*
6
1 2 1
2 4 1
2 5 1
1 3 1
3 6 1
3 7 1
*/