#include<iostream>
using namespace std;
#define ElemType int
const int MaxSize=100;
typedef struct{
ElemType data[MaxSize];
int length;
}SqList;
//就地逆置
void reverse(SqList &L){
ElemType temp;
for(int i=0;i<L.length/2;i++){
temp=L.data[i];
L.data[i]=L.data[L.length-1-i];
L.data[L.length-1-i]=temp;
}
}
//删除值为x的元素
void del_x(SqList &L,ElemType x){
int k=0;
for(int i=0;i<L.length;i++){
if(L.data[i]!=x)
L.data[k++]=L.data[i];
}
L.length=k;
}
//删除值在s、t之间的元素
void del_s2t(SqList &L,ElemType s,ElemType t){
int k=0;
for(int i=0;i<L.length;i++){
if(L.data[i]>=s&&L.data[i]<=t) k++;
else L.data[i-k]=L.data[i];
}
L.length-=k;
}
//删除有序表中重复的元素
void del_same(SqList &L){
int k=0;
for(int i=1;i<L.length;i++){
if(L.data[i]!=L.data[k])
L.data[++k]=L.data[i];
}
L.length=k+1;
}
//合并两个有序表
void merge(SqList A,SqList B,SqList &C){
int i=0,j=0,k=0;
while(i<A.length&&j<B.length){
if(A.data[i]<=B.data[j])
C.data[k++]=A.data[i++];
else
C.data[k++]=B.data[j++];
}
while(i<A.length)C.data[k++]=A.data[i++];
while(j<B.length)C.data[k++]=B.data[j++];
C.length=k;
}
int main(){
SqList L;
ElemType x;
for(int i=0;i<10;i++){
cin>>x;
L.data[i]=x;
}
L.length=10;
// reverse(L);
// for(int i=0;i<L.length;i++)
// cout<<L.data[i]<<" ";
// cout<<endl;
// del_x(L,77);
// del_s2t(L,21,29);
// for(int i=0;i<L.length;i++)
// cout<<L.data[i]<<" ";
// cout<<endl;
// del_same(L);
// for(int i=0;i<L.length;i++)
// cout<<L.data[i]<<" ";
// cout<<endl;
SqList H,G;
for(int i=0;i<6;i++){
cin>>x;
H.data[i]=x;
}
H.length=6;
merge(L,H,G);
for(int i=0;i<G.length;i++)
cout<<G.data[i]<<" ";
cout<<endl;
return 0;
}
//77 51 34 21 8 14 77 19 28 54
//1 2 2 5 5 8 8 8 15 16
//1 3 5 5 7 8