#include <stdio.h>
#include <stdlib.h>
struct Node {
    int data;
    struct Node *prev, *next;
};
struct Node* createNode(int data) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newnode->data = data;
    newNode->prev = NULL;
    newNode->next = NULL;
    return newNode;
}
void insertAfter(struct Node** head, int targetID, int newID) {
    struct Node* temp = *head;
    while (temp != NULL && temp-> data != targetID)
    temp = temp->next;
    if (temp == NULL) {
        printf("Invalid input");
        exit(0);
    }
    struct Node* newNode = createNode(newID);
    newNode->next = temp->next;
    newNode->prev = temp;
    if (temp ->next != NULL)
    temp->next->prev = newNode;
    temp->next = newNode;
}
void printList(struct Node* head) {
    struct Node* temp = head;
    while (temp != NULL) {
        printf("%d ", temp->data);
        temp = temp->next;
    }
    printf("\n");
}
int main() { 
    int n;
    scanf("%d", &n);
    if (n < 0) {
        printf("Invalid input");
        return 0;
    }
    struct Node *head = NULL, *tail = NULL;
    for (int i = 0; i <n; i++) {
        int id;
        scanf("%d", &id);
        struct Node* newNode = createNode(id);
        if (head == NULL) {
            head = newNode;
            tail = newNode;
        } else {
            tail->next = newNode;
            newnode->prev = tail;
            tail = newNode;
        }
    }
    int targetID,newID;
    scanf("%d %d", &targetID, &newID);
    printList(head);
    insertAfter(&head, targetID, newID);
    printList(head);
    return 0;
}