// editor1
#include<stdio.h>
#include<stdlib.h>
typedef struct TreeNode{
    int data;
    struct TreeNode *left;
    struct TreeNode *right;
}node;

node *root=NULL;
node *create(int v){
    node *newnode=(node*)malloc(sizeof(node));
    newnode->data=v;
    newnode->left=newnode->right=NULL;
    return newnode;
}

node* insert(node *root,int v){
    if(root==NULL)
      return create(v);
    if(v<root->data)
      root->left=insert(root->left,v);
    else
      root->right=insert(root->right,v);
      return root;
}

int 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);
    if(key>root->data)
       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 0;
}