#include <iostream>
#include <vector>
using namespace std;
struct node
{
int address, key, next;
}linklist[100000];
int flag[10010];
vector<node> v[3];
void print(int index)
{
int i, size = v[index].size();
node nod;
for(i = 0; i < size; i++)
{
nod = v[index][i];
printf("%05d %d ", nod.address, nod.key);
if(i + 1 < size)
{
printf("%05d\n", v[index][i + 1].address);
}
else
{
printf("-1\n");
}
}
}
int main()
{
int begin, n;
scanf("%d%d", &begin, &n);
int i;
node nod;
for(i = 1; i <= n; i++)
{
scanf("%d%d%d", &nod.address, &nod.key, &nod.next);
linklist[nod.address] = nod;
}
while(begin != -1)
{
v[0].push_back(linklist[begin]);
begin = linklist[begin].next;
}
int size = v[0].size(), curkey;
for(i = 0; i < size; i++)
{
nod = v[0][i];
curkey = nod.key;
if(curkey < 0)
{
curkey = -curkey;
}
if(flag[curkey] == 0)
{
flag[curkey] = 1;
v[1].push_back(nod);
}
else
{
v[2].push_back(nod);
}
}
print(1);
print(2);
system("pause");
return 0;
}