#include<stdio.h>
#include<stdlib.h>
struct node{
    int data;
    struct node* left;
    struct node*right;
};
struct node* create(int value){
    struct node* newnode= (struct node*)malloc(sizeof(struct node));
    newnode->data=value;
    newnode->left = newnode-> right= NULL;
    return newnode;
}
struct node* insert(struct node* root, int value){
    if(root==NULL)
        return create(value);
    if(value< root->data)
    root->left= insert(root->left,value);
    else if(value> root->data)
    root->right= insert(root->right,value);
    return root;
}
 struct node* min(struct node* root){
        while(root->left!=NULL)
        root=root->left;
 
    return root;
    }
struct node* delete(struct node* root, int key){
    if(root==NULL)
        return NULL;
    
    if(key<root->data)
    root->left= delete(root->left,key);
    else if(key>root->data)
    root->right= delete(root->right,key);
    else{
        if(root->left==NULL){
            struct node* temp =root->right;
            free(root);
            return temp;
        }
        else if(root->right ==NULL{
            struct node*temp=root->left;
            free(root);
            return temp;
        }
        struct node* temp= min(root->right);
        root->data =temp->data;
        root->right= delete(root->right,temp->data);
       
}
return root;
}
void pre(struct node*root){
    if(root!=NULL){
        printf("%d ",root->data);
        pre(root->left);
        pre(root->right);
    }
}
int valid(int  n){
    return(n>=1 && n<=20);
}
int main(){
    int n,value;
    
    if(scanf("%d %d", &n,&value) !=1 || !valid(n)){
        printf("Invalid input");
        return 0;
    }
            struct node* root=NULL;

        
        for(int i=0;i<n;i++){
            printf("Invalid input");
            return 0;
        }
root=insert(root,value);
}
    pre(root);
    printf("\n");
    return 0;
}