#include<stdio.h>
#include<stdlib.h> 
struct Node{
    int data;
    struct Node *l,*r;
};
struct Node* minNode(struct Node* r);
struct Node* n(int d){
    struct Node* t = (struct Node*)malloc(sizeof(struct Node));
    t->data = d; 
    t->l = t->r = NULL;
    return t;
}
struct Node* ins(struct Node* r,int d){
    if(!r) return n(d);
    if(d < r->data)
    r->l = ins(r->l,d);
    else
    r->r = ins(r->r,d);
    return r;
}
struct Node* winNode(struct Node* r){
    while(r && r->l)
    r = r->l;
    return r;
}
struct Node* del(struct Node* r,int k,int *f){
    if(!r) return r;
    if(k < r->data)
    r->l = del(r->l,k,f);
    else if(k > r->data)
    r->r= del(r->l,k,f);
    else{
        *f = 1;
        if(!r->l) return r->r;
        if(!r->r) return r->l;
        struct Node* t = minNode(r->r);
        r->data = t->data;
        r->r = del(r->r,t->data,f);
    }
    return r;
}
void in(struct Node* r){
    if(r){ 
        in(r->l);
        printf("%d ",r->data);
        in(r->r);
        }
}
int main(){
    int n,x,d,f=0;
    struct Node* r = NULL;
    scanf("%d" ,&n);
    while(n--){
        scanf("%d",&x);
        r = ins(r,x);
    }
    scanf("%d",&d);
    r=del(r,d,&f);
    if(!f)
    printf("-1");
    else
    in(r);
    return 0;
}