#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
int main()
{
int n, m, i, j;
scanf("%d %d", &n, &m);
struct node *h1, *h2, *h, *q1, *q2, *p, *q;
h1 = (struct node *)malloc(sizeof(struct node));
h1 -> next = NULL;
q1 = h1;
h2 = (struct node *)malloc(sizeof(struct node ));
h2 -> next = NULL;
q2 = h2;
for(i = 0; i < n; i++)
{
p = (struct node *)malloc(sizeof(struct node ));
p -> next = NULL;
scanf("%d", &p -> data);
q1 -> next = p;
q1 = p;
}
for(i = 0; i < m; i++)
{
p = (struct node *)malloc(sizeof(struct node ));
p -> next = NULL;
scanf("%d", &p -> data);
q2 -> next = p;
q2 = p;
}
q1 = h1; q2 = h2;
h = (struct node *)malloc(sizeof(struct node));
h -> next = NULL;
q = h;
for(i = 0; i < n + m; i++)
{
if(q1 -> next == NULL)
{
p = q2 -> next;
q2 -> next = p -> next;
p -> next = NULL;
q -> next = p;
q = p;
}
else if(q2 -> next == NULL)
{
p = q1 -> next;
q1 -> next = p -> next;
p -> next = NULL;
q -> next = p;
q = p;
}
else
{
if((q1 -> next -> data) > (q2 -> next -> data))
{
p = q2 -> next;
q2 -> next = p -> next;
p -> next = NULL;
q -> next = p;
q = p;
}
else
{
p = q1 -> next;
q1 -> next = p -> next;
p -> next = NULL;
q -> next = p;
q = p;
}
}
}
p = h -> next;
printf("%d", p -> data);
p = p -> next;
while(p)
{
printf(" %d", p -> data);
p = p -> next;
}
return 0;
}