link
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100010;
struct Node{
int begin, val, next;
}node[MAXN];
int nbegin, n;
vector<Node> ans, tmp;
int main(){
scanf("%d%d", &nbegin, &n);
for(int i = 1; i <= n; i++){
int begin, data, next;
cin >> begin >> data >> next;
node[begin] = {begin, data, next};
}
while(nbegin != -1){
tmp.push_back(node[nbegin]);
nbegin = node[nbegin].next;
}
int l = 0, r = tmp.size() - 1;
while(1){
ans.push_back(tmp[r]);
r--;
if(r - l == -1) break;
ans.push_back(tmp[l]);
l++;
if(r - l == -1) break;
}
for(int i = 0; i < ans.size(); i++){
if(i != ans.size() - 1)
printf("%05d %d %05d\n", ans[i].begin, ans[i].val, ans[i + 1].begin);
else{
printf("%05d %d %d\n", ans[i].begin, ans[i].val, -1);
}
}
return 0;
}