#include<stdio.h>
int main(){
    int n = 0;
    int m = 0;
    int arr1[1000] = {0};
    int arr2[1000] = {0};
    int arr3[3000] = {0};
    //输入n和m
    scanf("%d %d", &n, &m);
    int i = 0;
    int j = 0;
    //输入两个升序序列
    for (i = 0; i < n; i++) {
        scanf("%d", &arr1[i]);
    }
    for (i = 0; i < m; i++) {
        scanf("%d", &arr2[i]);
    }
    //合并有序序列并输出
    i = 0;
    j = 0;
    int k = 0;
    while (i < n && j < m) {
        if (arr1[i] <arr2[j]) { ///拿arr1中的元素逐个与arr2中的第一个元素比较,小的输出在前
            //printf("%d ", arr1[i]);
            arr3[k] = arr1[i];
            i++;
            k++;
        } else {
            //printf("%d ", arr2[j]); //如果arr2中小的话输出arr2
            arr3[k] = arr2[j];
            j++;
            k++;
        }
    }

    //判断尚未遍历完的数组是否需要打印输出
    if (i == n)
        //for (; j < m; j++)
            //printf("%d ", arr2[j]);
           while(j<m){
            arr3[k] = arr2[j];
            j++;
            k++;
           }
    else
        //for (; i < n; i++)
           // printf("%d ", arr1[i]);
           while(i<n){
            arr3[k] = arr1[i];
            i++;
            k++;
           }
    for(k = 0;k<m+n;k++){
        printf("%d ",arr3[k]);
    }
    return 0;
}