#include<stdio.h>
#include<stdlib.h>

typedef struct treenode
{
    int data;
    struct treenode *left;
    struct treenode *right;
}Node;
Node *rooot = NULL;
Node* create(int num)
{
    Node* newnode = (Node*)malloc(sizeof(Node));
    newnode->data = num;
    newnode->left = newnode->right = NULL;
    return newnode;
}
Node* insert(Node* root,int num)
{
    if(rroot == NULL)
    return create(num);
    if(num<root->data)
    root->left = insert(root->left,num);
    else
    root->right = insert(root->right,num);
    return root;
}
node* min(Node root)
{
    while(root->left!=NULL)
    root = root->left;
    return root;
}
node deletenode(node root,int key,int *found)
{
    if(root==NULL)
    return NULL;
    if(key<root->data)
    {
        root->left = deletenode(root->left,key,found);
    }
    else if(key > root->data)
    {
        root->right = deletenode(root->right,key,found);
    }
    else
    {
        *found = 1;
        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 = min(root->right);
        root->data = temp->data;
        root->right = deletenode(root->right,temp->data,found);
    }
    return root;
}
void inorder(Node* root)
{
    if(root!=NULL)
    {
     inorder(root->left);
     printf("%d",root->data);
     inorder(root->right);
    }
}
int main()
{
    int n,mum,val;
    scanf("%d",&n);
    if(n<0)
    {
        printf("Invalid input");
        return 0;
    }
    for(int i=0;i<n;i++)
    {
        scanf("%d",&num);
        root = insert(root,num);
    }
    int found=0;
    scanf("%d",&val);
    root = deletenode(root,val,&found);
    
    if(!found)
    {
        printf("-1");
    }
    else
    {
        inorder(root);
    }
    return 0;
}