#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <sstream>
#define ll long long
// #define int long long
#define lowbit(x) ((~x+1)&x)
#define inf 0x3f3f3f3f
using namespace std;
const int N = 1e6+1000;
struct node {
int data,nxt,pre;
}sqlist[N];
int main() {
int start,n;
cin>>start>>n;
int as,da,nt;
for(int i=1; i<=n; i++) {
cin>>as>>da>>nt;
sqlist[as].pre = as;
sqlist[as].data=da;
sqlist[as].nxt=nt;
}
int ads=start;
vector<node>ans;
for(int i=start; i!=-1; i=sqlist[i].nxt) {
node t=sqlist[i];
ans.push_back(t);
}
int l=0,r=ans.size()-1;
while(l<=r) {
if(l<=r) {
if(l!=r)
printf("%05d %d %05d\n",ans[r].pre,ans[r].data,ans[l].pre);
else
printf("%05d %d -1\n",ans[r].pre,ans[r].data);
r--;
}
if(l<=r) {
if(l!=r)
printf("%05d %d %05d\n",ans[l].pre,ans[l].data,ans[r].pre);
else
printf("%05d %d -1\n",ans[l].pre,ans[l].data);
l++;
}
}
return 0;
}