#include <stdio.h>
#include <stdlib.h>
struct Node {
    int data;
    struct Node* next;
};
int main() {
    int n = 0;
    struct Node* list = NULL;
    struct Node* tail = NULL;
//输入结点
    int i = 0;
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        int data = 0;
        scanf("%d", &data);
        struct Node* n = (struct Node*)malloc(sizeof(struct Node));
        n->data = data;
        n->next = NULL;
        if (list == NULL) {
            list = n;
            tail = list;
        } else {
            tail->next = n;
            tail = tail->next;
        }
    }
//删除结点
    int del = 0;
    scanf("%d", &del);
    struct Node* cur = list;
    struct Node* prev = NULL;
    while (cur) {
        if (cur->data == del) {
            struct Node* pd = cur;
//如果删除的是第一个结点
            if (cur == list) {
                list = list->next;
                cur = list;
            } else {
//删除的不是第一个结点
                prev->next = cur->next;
                cur = prev->next;
            }
            n--;
            free(pd);
        } else { //找不到
            prev = cur;
            cur = cur->next;
        }
    }
    cur = list;
    printf("%d\n", n);
    while (cur) {
        printf("%d ", cur->data);
        cur = cur->next;
    }
//释放空间
    cur = list;
    while (cur) {
        del = cur;
        cur = cur->next;
        free(del);
    }
    return 0;
}