#include<stdio.h>
#include<stdlib.h>
struct Node{
    int data;
    struct Node *l,*r;
};
struct Node* n(int d){
    struct Node* t=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(ins(r->l,d);
    else r->r=ins(r->r,d);
    return r;
}
struct Node* del(struct Node* r,int k,int *f){
    if(!r) return r;
    if(k<r->data) r->=del(r->l,k,f);
    else{
        *f=1;
        if(!r->l) return r->r;
        if(!r->r) return r->l;
        struct Node* t=min(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->); 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);
}