#include <stdio.h>
#include <stdlib.h>

//单向循环链表
typedef struct node
{
    int data;
    struct node *next;
}node;

//创建链表头节点
node *add_head()
{
    node *Head = (node *)malloc(sizeof(node));
    if(Head == NULL)
        return NULL;
    Head->next = Head;
    return Head;     
}

//尾插法
void add_node(node *Head,int data)
{
    node *new = (node*)malloc(sizeof(node));
    if(new == NULL)
        return;
    //节点成员赋值
    new->data = data;
    new->next = NULL;
    
    //链接
    node *pT = NULL;
    for(pT = Head;pT->next != Head;pT = pT->next);

    new->next = pT->next;
    pT->next = new;
}

//删除节点
void delete_node(node *Head,int data)
{
    node *del = Head->next;
    while(del != Head)
    {
        //找到要删除节点的前一个节点
        if(del->next->data == data)
        {
            node *ptemp = del->next;//要删除的节点
            del->next = ptemp->next;
            free(ptemp);
        }
        del = del->next;
    }
}


//输出链表
void output(node *Head)
{
    if(Head->next == Head)
        return;
    node *pT = Head->next;
    while(pT != Head)
    {
        printf("%d ",pT->data);
        pT = pT->next;
    }
}

int main(void)
{
    node *Head = add_head();//链表头节点
    int n,i,j,x;
    scanf("%d",&n);
    int arr[n];
    scanf("%d",&x);
    //将键盘键入的数据存放到数组中
    for(i = 0;i < n;i++)
        scanf("%d",&arr[i]);
    
    //将数据插入链表
    for(j = 0;j < n;j++)
        add_node(Head, arr[j]);
    
    //删除节点
    delete_node(Head, x);
    //输出链表
    output(Head);
    
    return 0;
}