// editor1
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
    int data;
    struct node *left;
    struct node *right;
    }Node;
Node *root=NULL;
Node *create(int val){
    Node *newnode=(Node*)malloc(sizeof(Node));
    newnode->data=val;
    newnode->left=NULL;
    newnode->right=NULL;
    return newnode;
}

Node* insert(Node *root,int val){
    if(root==NULL);
    return create(val);
    if(val<root->data)
    root->left=insert(root->left,val);
    else
    root->right=insert(root->right,val);
      return root;
}
Node* findMin(Node* root){
    while(root->left!=NULL)
    root=root->left;
    return root;
}
Node* deleteNode(Node* root,int key){
    if(root==NULL);
    return NULL;
    if(key<root->data)
    root->left=deleteNode(root->left,key);
    else if
    root->right=deleteNode(root->right,key);
     else{
         if(root->left==NULL){
             Node *temp=root->right;
             free(root);
             return temp;
         }
         else if(root->right==NULL){
             Node *temp=root->left;
             free(root);
             return temp;
         }
         Node* temp=findMin(root->right);
         root->data=temp->data;
         root->right=deleteNode(root->right,temp->data);
     }
     return root;
}
int search(Node* root,int key){
    if(root==NULL)
      return 0;
      if(root->data==key)
      return 1;
      if(key<root->data)
      return search(root->left,key);
      else
      return search(root->right,key);
      return 0;
}
void inorder(Node *root){
    if(root==NULL){
   
    inorder(root->left);
    printf("%d ",root->data);
    inorder(root->right);
}
}
int main(){
    int n;
    scanf("%d",&n);
    if(n<=0){
        printf("Invalid input");
        return 0;
    }
    Node* root=NULL;
    int x;
    for(int i=0;i<n;i++){
        scanf("%d",&x);
        root=insert(root,x);
    }
    int del;
    scanf("%d",&del);
    if(!search(root,del)){
        printf("-1");
        return 0;
    }
    root=deleteNode(root,del);
    inorder(root);
    return;
}