#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int rollNumber;
    struct Node* next;
} Node;
Node* createNode(int rollNumber) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    if(!newNode) {
        printf("Memory error\n");
        return NULL;
    }
    newNode->rollNumber = rollNumber;
    newNode->next = NULL;
    return newNode;
}
void insertNode(Node** head,int rollNumber) {
    Node* newNode = createNode(rollNumber);
    if(*head == NULL) {
        *head = newNode;
    } else {
        Node* temp = *head;
        while (temp->next != NULL) {
            temp = temp->next;
        }
        temp->next = newNode;
    }
}
void delete(Node** head, int toDelete) {
    if(*head == NULL) {
        printf("List is empty\n");
        return;
    }
    if ((*head)->rollNumber == toDelete) {
        Node* temp = *head;
        *head = (*head)->next;
        free(temp);
        return;
    }
    
    Node* temp = *head;
    while (temp->next != NULL) {
        if(temp->next->rollNumber == toDelete) {
            Node* nodeToDelete = temp->next;
            temp->next = temp->next->next;
            free(nodeToDelete);
            return;
        }
        temp = temp->next;
    }
    printf("Not Found\n");
}

void printList(Node* head) {
    if(head == NULL) {
        printf("List is empty\n");
        return;
    }
    while (head != NULL) {
        printf("%d ", head->rollNumber);
        head = head->next;
    }
    printf("\n");
}
int main(){
    int n;
    scanf("%d",&n);
    Node* head = NULL;
    
    for (int i = 0; i < n; i++) {
        int rollNumber;
        scanf("%d", &rollNumber);
        insertNode(&head, rollNumber);
    }
    int toDelete;
    scanf("%d", &toDelete);
    deleteNode(&head,toDelete);
    printList(head);
    
    return 0;
}