#include <bits/stdc++.h>
using namespace std;
struct node{
int address;
int data;
int next;
}a[100010];
int main(){
int head;int n,k;cin>>head>>n>>k;
for(int i=0;i<n;i++){
int address,data,next;cin>>address>>data>>next;
a[address].address=address;a[address].data=data;a[address].next=next;
}
int temp=head;int cnt=0;
vector<vector<node>>result;
vector<node>v;
while(temp!=-1){
v.push_back(a[temp]);
cnt++;
temp=a[temp].next;
if(cnt==k){
result.push_back(v);
v.clear();
cnt=0;
}
}
result.push_back(v);
vector<node>ans;
for(int i=result.size()-1;i>=0;i--){
for(int j=0;j<result[i].size();j++){
ans.push_back(result[i][j]);
}
}
for(int i=0;i<ans.size();i++){
if(i==ans.size()-1)
printf("%.5d %d -1\n",ans[i].address,ans[i].data);
else
printf("%.5d %d %.5d\n",ans[i].address,ans[i].data,ans[i+1].address);
}
}
04-09
6270