// editor3
#include<stdio.h>
#include<stdlib.h>

typedef struct Node {
    int data;
    struct Node* next;
    struct Node* prev;
} Node;

Node* createNode(int data) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->next = newNode->prev = NULL;
    return newNode;
}

void printList(Node* head) {
    if (!head) return;
    Node* temp = head;
    do{
        printf("%d", temp->data);
        temp = temp->next;
    }while (temp != head);
    printf("\n");
}

Node* deleteNode(Node* head, int x) {
    if (!head) return NULL;
    Node* curr = head;
    Node* toDelete = NULL;
    
    do{
        if (curr->data == x) {
            toDelete = curr;
            break;
        }
        curr = curr->next;
    }while (curr != head);
    
    if (!toDelete) {
        printf("Node not found.\n")
        return head;
    }
    if (toDelete->next == toDelete)
    free(toDelete);
    return NULL;
}
toDelete->prev->next = toDelete->next;
toDelete->next->prev = toDelete->prev;

if (toDelete == head)
head = toDelete->next;

free(toDelete);
return head;
}

int main() {
    int n, x;
    scanf("%d", &n);
    Node *head = NULL, *tail = NULL;
    
    for (int i = 0; i < n; i++) {
        int val;
        scanf("%d", &val);
        Node* newNode = createNode(val);
        if (!head) {
            head = tail = newNode;
            head->next = head->prev = head;
        }else{
            newNode->prev = tail;
            newNode->next = head;
            tail->next = newNode;
            head->prev = newNode;
            tail = newNode;
        }
    }
    scanf("%d", &x);
    head = deleteNode(head, x);
    if (head)
    printList(head);
    
    return 0;
}