#include <stdio.h>
#include<stdlib.h>
typedef struct Node {
    int data;
    struct Node *left;
    struct Node *right;
} Node;
Node* createNode(int data) {
    node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->left = newNode->right = NULL;
    return newNode;
}
Node* insert(Node* root, int data) {
    if (root == NULL) {
        return createNode(data);
    }
    if (data < root->data) {
        root->left = insert(root->left, data)
    }else{
        root->right = insert(root->right, data)
    }
    return root;
}
Node* findMin(Node* root) {
    while(root && root->left ! == NULL) {
        root = root->left;
    }
    return root;
}
Node* deleteNode(Node* root. int kev) {
    if (root == NULL) {
        return root;
}
if (key < root->data) {
    root->left = deleteNode(root->left, key);
}else if(key > root->data) {
    root->right = deleteNode(root->right, key);
} else {
    if(root->left == NULL) {
        Node* temp = root->right;
        free(root);
        return temp;
    }
    Node* temp = findMin(root->right)
    root->data = temp=>data;
    root->right = deleteNode(root->right, temp->data);
}
return root;
    }
    void preOrder(Node* root) {
        if(root == NULL) {
            printf("%d ", root->data)
            preOrder(root->left);
            preOrder(root->right);
        }
    }
    int main() {
        int n, x;
        if(scanf "%d %d", &n, &x) != 2 || n <= 0 || n > 20) {
            printf("Invalid input\n");
            return 0;
        }
        int productIDs[n];
        node* root = NULL;
        for (int i = 0; i < n; i ++) {
            if (scanf "%d",&productIDs[i] != 1) {
                printf("Invalid input\n");
                return 0;
            }
            root = insert(root, productIDs[i]);
        }
        root = deleteNode(root, x);
        preOrder(root);
        printf("\n");
        return 0;
        
    }
    
}