#include <iostream>
#include <cstring>
using namespace std;
const int N = 100010;
int e[N], ne[N], h1, h2;
int dfs(int p1, int p2){
if( ne[p2]!=-1 ) p1 = dfs(p1, ne[p2]); //L2没走到最后一个结点就继续走
p1 = ne[p1]; //假设L1现在走到a1, L2走到了bm,要连接a2->bm->a3,L1先向后走一个到a2
ne[p2]=ne[p1], ne[p1]=p2; //bm->a3, a2->bm
return ne[p2]; //返回a3的位置
}
int main(){
int n=0, m=0, addr, data, next;
scanf("%05d %05d %d", &h1, &h2, &n);
while( n-- ){
scanf("%05d %d %05d", &addr, &data, &next);
e[addr] = data, ne[addr] = next;
}
int p=h1;
while( p!=-1 ){
n++, p=ne[p];
}
p=h2;
while( p!=-1 ){
m++, p=ne[p];
}
if( m>=n*2 ) swap(h1, h2); //默认L1比L2长
dfs(h1, h2);
p = h1;
while( p!=-1 ){
printf("%05d %d ", p, e[p]);
if( ne[p]!=-1 ) printf("%05d\n",ne[p]);
else puts("-1");
p = ne[p];
}
return 0;
}
//00100->00001->-1
//6->7
//01000->02233->34891->10086->00033->-1
//1->2->3->4->5
//1->2->7->3->4->6->5