3743 {
3744 string h1;
3745 string h2;
3746 int n;
3747 cin >> h1 >> h2 >> n;
3748 unordered_map<string, node> um;
3749 for(int i = 0; i < n; i++) {
3750 string address;
3751 cin >> address;
3752 um[address].address = address;
3753 cin >> um[address].data >> um[address].next;
3754 }
3755 vector<node> l1;
3756 vector<node> l2;
3757 for(string addr = h1; addr != "-1"; addr = um[addr].next) {
3758 l1.push_back(um[addr]);
3759 }
3760 for(string addr = h2; addr != "-1"; addr = um[addr].next) {
3761 l2.push_back(um[addr]);
3762 }
3763 if(l1.size() < l2.size()) {
3764 swap(l1, l2);
3765 }
3766 l2 = vector(l2.rbegin(), l2.rend());
3768 for(int cnt = 0, i1 = 0, i2 = 0; i1 < l1.size() || i2 < l2.size(); cnt++, cnt %= 3) {
3769 if(cnt <= 1) {
3770 if(i1 < l1.size()) {
3771 ans.push_back(l1[i1++]);
3772 }
3773 } else {
3774 if(i2 < l2.size()) {
3775 ans.push_back(l2[i2++]);
3776 }
3777 }
3778 }
3779 for(
int i = 0; i <
ans.size(); i++) {
3780 cout <<
ans[i].address <<
' ' <<
ans[i].data <<
' ' << (i + 1 <
ans.size() ? ans[i + 1].address :
"-1") << endl;
3781 }
3782 return 0;
3783 }
vector< vector< int > > ans