#include <stdio.h>
#include <stdlib.h>
#define max 1000
typedef struct Node
{
int data;
struct Node*next;
}Node,*LinkList;//一般linklist表示头指针,node*表示结点指针
/*InitList(LinkList*l)//初始化
{
*l=(LinkList)malloc(sizeof(Node));
(*l)->next=NULL;
}*/
void input (int *ep)//跟头插法配套的小破函数
{
scanf("%d",ep);
}
void CreateLinkF(LinkList l,int n,void(*input)(int*))//头插法包含初始化
{
LinkList s;
// l=(LinkList)malloc(sizeof(Node));
l->next=NULL;
for(;n>0;n--)
{
s=(LinkList)malloc(sizeof(Node));
input(&s->data);
s->next=l->next;
l->next=s;
}
}
int main()
{
int m,n;
scanf("%d",&m);
scanf("%d",&n);
LinkList l,k,l1,k1;
l=(LinkList)malloc(sizeof(Node));
k=(LinkList)malloc(sizeof(Node));
CreateLinkF(l,m,input);
CreateLinkF(k,n,input);
int a[m+n];
int i=0;
l1=(LinkList)malloc(sizeof(Node));
l1->next=l->next;
k1=(LinkList)malloc(sizeof(Node));
k1->next=k->next;
//for(LinkList i=l->next;i!=NULL;i=i->next) printf("%d\n",i->data);
while(i<m+n)
{
if(k1->next!=NULL&&l1->next!=NULL)
{
if(l1->next->data>=k1->next->data)
{
a[i]=l1->next->data;
l1->next=l1->next->next;
i++;
continue;
}
if(l1->next->data<k1->next->data)
{
a[i]=k1->next->data;
k1->next=k1->next->next;
i++;
continue;
}
}
if(l1->next==NULL)
{
a[i]=k1->next->data;
k1->next=k1->next->next;
i++;
continue;
}
if(k1->next==NULL)
{
a[i]=l1->next->data;
l1->next=l1->next->next;
i++;
continue;
}
}
for(int i=0;i<m+n;i++) printf("%d ",a[i]);
return 0;
}