#include <stdio.h>
#include <stdlib.h>
typedef struct __LinkedList_ts {
int value;
struct __LinkedList_ts* next;
} LinkedList_ts;
LinkedList_ts* LinkedList_new(int value)
{
LinkedList_ts* result = NULL;
result = (LinkedList_ts*)malloc(sizeof(LinkedList_ts));
result->value = value;
result->next = NULL;
return result;
}
LinkedList_ts* LinkedList_add(LinkedList_ts* head, int value, int pos)
{
LinkedList_ts* result = NULL;
LinkedList_ts* curr = NULL;
LinkedList_ts* prev = NULL;
LinkedList_ts* next = NULL;
LinkedList_ts* node = NULL;
if (head == NULL) {
node = LinkedList_new(value);
head = node;
} else {
for (curr=head; curr!=NULL; prev=curr,curr=curr->next) {
next = curr->next;
if (curr->value == pos) {
node = LinkedList_new(value);
node->next = next;
curr->next = node;
} else {}
}
}
result = head;
return result;
}
LinkedList_ts* LinkedList_delete(LinkedList_ts* head, int value)
{
LinkedList_ts* result = NULL;
LinkedList_ts* curr = NULL;
LinkedList_ts* prev = NULL;
LinkedList_ts* next = NULL;
if (head != NULL) {
for (curr=head; curr!=NULL; prev=curr,curr=curr->next) {
if (value == curr->value) {
if (curr == head) head = curr->next;
else prev->next = curr->next;
free(curr);
} else {}
}
} else {}
result = head;
return result;
}
int main() {
LinkedList_ts* head = NULL;
LinkedList_ts* curr = NULL;
int nodeNum, headValue, i;
int tempValue, tempPos;
int delValue;
scanf("%d %d", &nodeNum, &headValue);
head = LinkedList_add(head, headValue, 1);
for (i=0; i<nodeNum-1; ++i) {
scanf("%d %d", &tempValue, &tempPos);
head = LinkedList_add(head, tempValue, tempPos);
}
scanf("%d", &delValue);
head = LinkedList_delete(head, delValue);
for (curr=head; curr!=NULL; curr=curr->next) {
printf("%d ", curr->value);
}
return 0;
}