#include<bits/stdc++.h>
using namespace std;
vector<int> v[3];
int first,n,k,address;
int main(){
cin>>first>>n>>k;
int data[100000],next[100000],list[100000];
for(int i=0;i<n;i++){
cin>>address;
cin>>data[address]>>next[address];
}
int p = first;
while(p!=-1){
int dat = data[p];
if(dat<0)
v[0].push_back(p);
else if(dat>=0&&dat<=k)
v[1].push_back(p);
else
v[2].push_back(p);
p = next[p];
}
int flag = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < v[i].size(); j++) {
if (flag == 0) {
printf("%05d %d ", v[i][j], data[v[i][j]]);
flag = 1;
} else {
//v[i][j]是上一行的最后一个,也恰恰是当前行的第一个
printf("%05d\n%05d %d ", v[i][j], v[i][j], data[v[i][j]]);
}
}
}
printf("-1");
return 0;
}