#include "iostream"

using namespace std;

int n,m,sum=0;// n是输入数据的个数 m是所要删除的数据 sum用来记录删除之后所剩的数的个数
const int m_size=100;//设置链表的长度为100
int arr[m_size];//定义链表
//以上的变量可以写在main函数中 为了减少函数调用所需的参数 设置为全局变量可以减少难度
typedef struct Link{
    int date;
    struct Link *next;
}link;//链表节点的结构体定义

link * init_link(){//此函数用来创建一个单链表并将初始化
    link *p=nullptr;//头结点定义
    link *temp=(link *)malloc(sizeof(link));//首元结点定义
    temp->date=0;
    temp->next= nullptr;
    p=temp;
    for(int i=0;i<n;i++){
        link *q=(link *)malloc(sizeof(link));
        q->date=arr[i];
        q->next=nullptr;
        temp->next=q;
        temp=temp->next;
    }//此for循环将输入的n个数据赋值到链表节点
    return p;//返回链表的首地址
}

link * fun(link *l){//实现链表中数据的查找并删除 最后输出(也可以写一个函数 实现输出功能)
    link *r=(link *)malloc(sizeof(link));
    r=l;
    while (n--){//遍历链表
        if(r->next->date==m){//若该节点的下一个节点的date值和m相等 进行链表删除操作
            link * k= r->next;//表示当前节点
            r->next=r->next->next;//进行链表节点的删除
            free(k);//释放当前节点 避免内存泄漏
        }
        else{
            r=r->next;//若该节点不满足条件 遍历下一个
        }
    }
    link * v=l;
    while (v){//实现剩于节点的计数
        sum++;
        v=v->next;
    }
    cout<<sum-1<<endl;
    link *w = l->next;
    while (w){//实现链表节点数据的shuchu
        cout<<w->date<<" ";
        w=w->next;
    }
    return r->next;
}
int main() {
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>arr[i];
    cin>>m;
    link *P;
    P=init_link();
    fun(P);
}