#include <stdio.h>
typedef struct {
int address;
int data;
int next;
} Node;
int main() {
int addr, N, K;
scanf("%d %d %d", &addr, &N, &K);
Node origin[100001], sort[100001];
for (int i = 0; i < N; i++) {
Node temp;
scanf("%d %d %d", &temp.address, &temp.data, &temp.next);
origin[temp.address] = temp;
}
for (int i = 0; i < N; i++) {
sort[i] = origin[addr];
addr = sort[i].next;
if (addr == -1) {
N = i + 1;
break;
}
}
for (int i = 0; i < N / K; i++) {
for (int j = 0; j < K / 2; j++) {
Node temp;
temp = sort[j + i * K];
sort[j + i * K] = sort[K - 1 - j + i * K];
sort[K - 1 - j + i * K] = temp;
}
}
for (int i = 0; i < N; i++) {
if(i != N - 1) {
sort[i].next = sort[i+1].address;
printf("%05d %d %05d\n", sort[i].address, sort[i].data, sort[i].next);
} else {
sort[i].next = -1;
printf("%05d %d %d\n", sort[i].address, sort[i].data, sort[i].next);
}
}
return 0;
}