#include<stdlib.h>
int cmp_int(const void* e1, const void* e2)
{
    //规定e1<e2时,返回负数;e1=e2,返回0;e1>e2,返回正数;这样这里就是实现的升序效果
    //若想实现降序,e1<e2时,返回正数;e1=e2,返回0;e1>e2,返回负数
    //void类型的指针可接受任意类型的指针,缺点是无法进行计算
    return *(int*)e2 - *(int*)e1;
}
int main()
{
    int arr[2000] = { 0 };
    int n = 0;
    int m = 0;
    scanf("%d %d", &n, &m);
    int i = 0;
    for (i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    for (i = n; i < n + m; i++)
    {
        scanf("%d", &arr[i]);
    }
    qsort(arr,sizeof(arr)/sizeof(arr[0]),sizeof(arr[0]),cmp_int);
    for (i = n + m - 1; i >= 0; i--)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}