#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn = 10010;
bool h[maxn] = {false};
struct Node{
int add,key,next,flag;
}node[100010],valid[100010];
int main()
{
int p,n,ad;
scanf("%d %d",&p,&n);
if(n== 0)
{
printf("\n");
return 0;
}
for(int i = 0; i < n; i++)
{
scanf("%d",&ad);
node[ad].add = ad;
scanf("%d %d",&node[ad].key,&node[ad].next);
}
int k1 = 0, k2 = 0;
int m = p;
while(p != -1)
{
if(h[abs(node[p].key)] == false)
{
h[abs(node[p].key)] = true;
k1++;
node[p].flag = 1;
}
else {
node[p].flag = 2;k2++;
}
p = node[p].next;
}
int num = 0,num2 = 0;
while(m != -1)
{
if(node[m].flag == 1)
{
valid[num++] = node[m];
}
else
{
valid[k1+num2] = node[m];
num2++;
}
m = node[m].next;
}
for(int i = 0; i < k1-1; i++)
{
printf("%05d %d %05d\n",valid[i].add,valid[i].key,valid[i+1].add);
}
if(k1 >= 1)
printf("%05d %d -1\n",valid[k1-1].add,valid[k1-1].key);
for(int i = k1; i < k1+k2-1; i++)
{
printf("%05d %d %05d\n",valid[i].add,valid[i].key,valid[i+1].add);
}
if(k2 >= 1)
printf("%05d %d -1\n",valid[k1 + k2-1].add,valid[k1+k2-1].key);
return 0;
}