#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct node{
char course_name[50];
char course_number[50],next_course_number[50],prior_course_number[50];
struct node* next;
struct node* prior;
}node;
int main(){
int n;
if(scanf("%d",&n
)!=1||n
<=0)return 0; node
* course_list
=(node
*)malloc(sizeof(node
)*n
); if(course_list==NULL)return 1;
for(int i=0;i<n;i++){
(course_list+i)->next=NULL;
(course_list+i)->prior=NULL;
if(scanf("%s %s %s %s",(course_list
+i
)->course_number
,(course_list
+i
)->next_course_number
,(course_list
+i
)->prior_course_number
,(course_list
+i
)->course_name
)!=4){ return 1;
}
}
node* temp=NULL;
for(int i=0;i<n;i++){
if(strcmp((course_list
+i
)->prior_course_number
,"0")==0){ temp=course_list+i;
break;
}
}
node* head=temp;
if(head
==NULL
){free(course_list
);return 0;} node* current_link=head;
current_link->prior=NULL;
for(int i=0;i<n;i++){
if(strcmp(current_link
->next_course_number
,"0")==0){ current_link->next=NULL;
break;
}
int found=0;
for(int k=0;k<n;k++){
if(strcmp((course_list
+k
)->course_number
,current_link
->next_course_number
)==0){ (course_list+k)->prior=current_link;
current_link->next=(course_list+k);
current_link=(course_list+k);
found=1;
break;
}
}
if(!found)break;
}
if(current_link
!=NULL
&&strcmp(current_link
->next_course_number
,"0")==0){ current_link->next=NULL;
}
char start_id[50],direction[20];
if(scanf("%s %s",start_id
,direction
)!=2){ return 1;
}
node* current=head;
while(current
!=NULL
&&strcmp(current
->course_number
,start_id
)!=0){ current=current->next;
}
if(current==NULL){
return 0;
}else{
if(strcmp(direction
,"next")==0){ while(current!=NULL){
printf("%s\n",current
->course_name
); current=current->next;
}
}else if(strcmp(direction
,"prior")==0){ while(current!=NULL){
printf("%s\n",current
->course_name
); current=current->prior;
}
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgp0eXBlZGVmIHN0cnVjdCBub2RlewogICAgY2hhciBjb3Vyc2VfbmFtZVs1MF07CiAgICBjaGFyIGNvdXJzZV9udW1iZXJbNTBdLG5leHRfY291cnNlX251bWJlcls1MF0scHJpb3JfY291cnNlX251bWJlcls1MF07CiAgICBzdHJ1Y3Qgbm9kZSogbmV4dDsKICAgIHN0cnVjdCBub2RlKiBwcmlvcjsKfW5vZGU7CmludCBtYWluKCl7CiAgICBpbnQgbjsKICAgIGlmKHNjYW5mKCIlZCIsJm4pIT0xfHxuPD0wKXJldHVybiAwOwogICAgbm9kZSogY291cnNlX2xpc3Q9KG5vZGUqKW1hbGxvYyhzaXplb2Yobm9kZSkqbik7CiAgICBpZihjb3Vyc2VfbGlzdD09TlVMTClyZXR1cm4gMTsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgICAgIChjb3Vyc2VfbGlzdCtpKS0+bmV4dD1OVUxMOwogICAgICAgIChjb3Vyc2VfbGlzdCtpKS0+cHJpb3I9TlVMTDsKICAgICAgICBpZihzY2FuZigiJXMgJXMgJXMgJXMiLChjb3Vyc2VfbGlzdCtpKS0+Y291cnNlX251bWJlciwoY291cnNlX2xpc3QraSktPm5leHRfY291cnNlX251bWJlciwoY291cnNlX2xpc3QraSktPnByaW9yX2NvdXJzZV9udW1iZXIsKGNvdXJzZV9saXN0K2kpLT5jb3Vyc2VfbmFtZSkhPTQpewogICAgICAgICAgICBmcmVlKGNvdXJzZV9saXN0KTsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgfQogICAgbm9kZSogdGVtcD1OVUxMOwogICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgaWYoc3RyY21wKChjb3Vyc2VfbGlzdCtpKS0+cHJpb3JfY291cnNlX251bWJlciwiMCIpPT0wKXsKICAgICAgICAgICAgdGVtcD1jb3Vyc2VfbGlzdCtpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBub2RlKiBoZWFkPXRlbXA7CiAgICBpZihoZWFkPT1OVUxMKXtmcmVlKGNvdXJzZV9saXN0KTtyZXR1cm4gMDt9CiAgICBub2RlKiBjdXJyZW50X2xpbms9aGVhZDsKICAgIGN1cnJlbnRfbGluay0+cHJpb3I9TlVMTDsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgICAgIGlmKHN0cmNtcChjdXJyZW50X2xpbmstPm5leHRfY291cnNlX251bWJlciwiMCIpPT0wKXsKICAgICAgICAgICAgY3VycmVudF9saW5rLT5uZXh0PU5VTEw7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpbnQgZm91bmQ9MDsKICAgICAgICBmb3IoaW50IGs9MDtrPG47aysrKXsKICAgICAgICAgICAgaWYoc3RyY21wKChjb3Vyc2VfbGlzdCtrKS0+Y291cnNlX251bWJlcixjdXJyZW50X2xpbmstPm5leHRfY291cnNlX251bWJlcik9PTApewogICAgICAgICAgICAgICAgKGNvdXJzZV9saXN0K2spLT5wcmlvcj1jdXJyZW50X2xpbms7CiAgICAgICAgICAgICAgICBjdXJyZW50X2xpbmstPm5leHQ9KGNvdXJzZV9saXN0K2spOwogICAgICAgICAgICAgICAgY3VycmVudF9saW5rPShjb3Vyc2VfbGlzdCtrKTsKICAgICAgICAgICAgICAgIGZvdW5kPTE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZighZm91bmQpYnJlYWs7CiAgICB9CiAgICBpZihjdXJyZW50X2xpbmshPU5VTEwmJnN0cmNtcChjdXJyZW50X2xpbmstPm5leHRfY291cnNlX251bWJlciwiMCIpPT0wKXsKICAgICAgICBjdXJyZW50X2xpbmstPm5leHQ9TlVMTDsKICAgIH0KICAgIGNoYXIgc3RhcnRfaWRbNTBdLGRpcmVjdGlvblsyMF07CiAgICBpZihzY2FuZigiJXMgJXMiLHN0YXJ0X2lkLGRpcmVjdGlvbikhPTIpewogICAgICAgIGZyZWUoY291cnNlX2xpc3QpOwogICAgICAgIHJldHVybiAxOwogICAgfQogICAgbm9kZSogY3VycmVudD1oZWFkOwogICAgd2hpbGUoY3VycmVudCE9TlVMTCYmc3RyY21wKGN1cnJlbnQtPmNvdXJzZV9udW1iZXIsc3RhcnRfaWQpIT0wKXsKICAgICAgICBjdXJyZW50PWN1cnJlbnQtPm5leHQ7CiAgICB9CiAgICBpZihjdXJyZW50PT1OVUxMKXsKICAgICAgICBmcmVlKGNvdXJzZV9saXN0KTsKICAgICAgICByZXR1cm4gMDsKICAgIH1lbHNlewogICAgICAgIGlmKHN0cmNtcChkaXJlY3Rpb24sIm5leHQiKT09MCl7CiAgICAgICAgICAgIHdoaWxlKGN1cnJlbnQhPU5VTEwpewogICAgICAgICAgICAgICAgcHJpbnRmKCIlc1xuIixjdXJyZW50LT5jb3Vyc2VfbmFtZSk7CiAgICAgICAgICAgICAgICBjdXJyZW50PWN1cnJlbnQtPm5leHQ7CiAgICAgICAgICAgIH0KICAgICAgICB9ZWxzZSBpZihzdHJjbXAoZGlyZWN0aW9uLCJwcmlvciIpPT0wKXsKICAgICAgICAgICAgd2hpbGUoY3VycmVudCE9TlVMTCl7CiAgICAgICAgICAgICAgICBwcmludGYoIiVzXG4iLGN1cnJlbnQtPmNvdXJzZV9uYW1lKTsKICAgICAgICAgICAgICAgIGN1cnJlbnQ9Y3VycmVudC0+cHJpb3I7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBmcmVlKGNvdXJzZV9saXN0KTsKICAgIHJldHVybiAwOwp9