#include <stdio.h>
using namespace std;

struct Node {
    int data;
    Node* left;
    Node* right;
    Node(int val) {
        data = val;
        left = right = NULL;
    }
};

Node* insert(Node* root, int val) {
    if(root == NULL) return new Node(val);
    if(val < root->data)
        root->left = insert(root->left, val);
    else if(val > root->data)
        root->right = insert(root->right, val);
    return root;
}

void postorder(Node* root, int skip) {
    if(root == NULL) return;
    postorder(root->left, skip);
    postorder(root->right, skip);
    if(root->data != skip)   // skip printing root
        cout << root->data << " ";
}

int main() {
    int n, rootVal;
    cin >> n >> rootVal;
    
    Node* root = new Node(rootVal);
    for(int i=0; i<n; i++) {
        int val; cin >> val;
        if(val != rootVal)  // avoid duplicate root insertion
            insert(root, val);
    }
    
    postorder(root, rootVal);
    return 0;
}