#include<bits/stdc++.h>
using namespace std;
int firstL1,firstL2,n,address;
int main(){
cin>>firstL1>>firstL2>>n;
//如何区分L1和L2
int data[100000],next[100000],list[100000],list1[100000],list2[100000];
for(int i=0;i<n;i++){
cin>>address;
cin>>data[address]>>next[address];
}
int sumL1 = 0;
while(firstL1!=-1){
list1[sumL1++] = firstL1;
firstL1 = next[firstL1];
}
int sumL2 = 0;
while(firstL2!=-1){
list2[sumL2++] = firstL2;
firstL2 = next[firstL2];
}
if(sumL1<sumL2){//L1短
reverse(list1,list1+sumL1);
int L=0,L1=0,L2=0;
while(L<sumL1+sumL2){
list[L++] = list2[L2++];
list[L++] = list2[L2++];
if(L1<sumL1)
list[L++] = list1[L1++];
}
for(int i=0;i<sumL1+sumL2;i++){
if(i!=sumL1+sumL2-1)
printf("%05d %d %05d\n",list[i],data[list[i]],list[i+1]);
else
printf("%05d %d -1\n",list[i],data[list[i]]);
}
}
else if(sumL2<sumL1){//L2短
reverse(list2,list2+sumL2);
int L=0,L1=0,L2=0;
while(L<sumL1+sumL2){
list[L++] = list1[L1++];
list[L++] = list1[L1++];
if(L2<sumL2)
list[L++] = list2[L2++];
}
for(int i=0;i<sumL1+sumL2;i++){
if(i!=sumL1+sumL2-1)
printf("%05d %d %05d\n",list[i],data[list[i]],list[i+1]);
else
printf("%05d %d -1\n",list[i],data[list[i]]);
}
}
return 0;
}