#include<stdio.h>
#define maxSize 100
typedef struct
{
int data[maxSize];
int length;
}Sqlist;
void initSqlist(Sqlist &L)
{
L.length=0;
}
void ListInsert(Sqlist &L,int locate,int x)
{
if(L.length==maxSize||locate<0||locate>L.length+1)
return;
//把locate和后面的往后移动
for(int i=L.length;i>locate;i--)
L.data[i+1]=L.data[i];
L.data[locate]=x;
L.length+=1;
}
void ListDel(Sqlist &L,int locate,int &e)
{
if(locate<1||locate>L.length+1)
return;
e=L.data[locate];
for(int i=locate;i<L.length;i++)
L.data[i]=L.data[i+1];
--(L.length);
}
void merge(Sqlist LA,Sqlist LB,Sqlist &LC)
{
int pa,pb;
int i=0,j=0,k=0;
initSqlist(LC);
while(i<LA.length&&j<LB.length)
{
pa=LA.data[i];
pb=LB.data[j];
if(pa<=pb)
{
ListInsert(LC,k,pa);
i++;
}
else
{
ListInsert(LC,k,pb);
j++;
}
k++;
}
while(i<LA.length)
{
pa=LA.data[i];
ListInsert(LC,k,pa);
i++;
k++;
}
while(j<LB.length)
{
pb=LB.data[j];
ListInsert(LC,k,pb);
j++;
k++;
}
}
void show(Sqlist L)
{
for(int i=0;i<L.length;i++)
{
printf("%d ",L.data[i]);
}
}
int main()
{
int temp,len;
Sqlist LA,LB,LC;
initSqlist(LA);
initSqlist(LB);
initSqlist(LC);
scanf("%d",&len);
for(int i=0;i<len;i++)
{
scanf("%d",&temp);
ListInsert(LA,i,temp);
}
scanf("%d",&len);
for(int i=0;i<len;i++)
{
scanf("%d",&temp);
ListInsert(LB,i,temp);
}
merge(LA,LB,LC);
show(LC);
}