#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
typedef struct node{
int info;
node* lchild;
node* rchild;
}node,*Pnode;
Pnode creat(){
int m;
cin>>m;
Pnode t;
if(m==-1) t=NULL;
else{
t=(Pnode)malloc(sizeof(node));
t->info=m;
t->lchild=creat();
t->rchild=creat();
}
return t;
}
void output(Pnode t){
if(t){
output(t->lchild);
cout<<t->info<<" ";
output(t->rchild);
}
}
void insert(Pnode t,int c){
if(t->info<c){
if(t->rchild==NULL){
t->rchild=(Pnode)malloc(sizeof(node));
t->rchild->info=c;
t->rchild->lchild=t->rchild->rchild=NULL;
return;
}
else insert(t->rchild,c);
}
else if(t->info>c){
if(t->lchild==NULL){
t->lchild=(Pnode)malloc(sizeof(node));
t->lchild->info=c;
t->lchild->lchild=t->lchild->rchild=NULL;
return;
}
else insert(t->lchild,c);
}
}
void tree(Pnode t1,Pnode t2){
if(t2){
tree(t1,t2->lchild);
insert(t1,t2->info);
tree(t1,t2->rchild);
}
}
int main(){
Pnode t1,t2;
t1=creat();
t2=creat();
tree(t1,t2);
output(t1);}