#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node* prev;
    struct Node* next;
} Node;

Node* insertEnd(Node* head, int data) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->next = NULL;
    if (!head) {
        newNode->prev = NULL;
        return newNode;
    }
    Node* temp = head;
    while (temp->next)
        temp = temp->next;
    temp->next = newNode;
    newNode->prev = temp;
    return head;
}

void printList(Node* head) {
    Node* temp = head;
    while (temp) {
        printf("%d", temp->data);
        if (temp->next)
            printf(" ");
        temp = temp->next;
    }
    printf("
");
}

Node* merge(Node* l1, Node* l2) {
    Node* merged = NULL;
    Node* tail = NULL;
    while (l1 && l2) {
        Node* node;
        if (l1->data <= l2->data) {
            node = l1;
            l1 = l1->next;
        } else {
            node = l2;
            l2 = l2->next;
        }
        node->prev = tail;
        node->next = NULL;
        if (!merged) {
            merged = tail = node;
        } else {
            tail->next = node;
            tail = node;
        }
    }
    Node* rest = l1 ? l1 : l2;
    while (rest) {
        Node* node = rest;
        rest = rest->next;
        node->prev = tail;
        node->next = NULL;
        if (!merged) {
            merged = tail = node;
        } else {
            tail->next = node;
            tail = node;
        }
    }
    return merged;
}

int main() {
    int n1, n2, i, x;
    scanf("%d", &n1);
    if (n1 <= 0) {
        scanf("%*s");
        printf("Invalid input
");
        return 0;
    }
    Node* l1 = NULL;
    for (i = 0; i < n1; i++) {
        scanf("%d", &x);
        l1 = insertEnd(l1, x);
    }
    scanf("%d", &n2);
    if (n2 <= 0) {
        printf("Invalid input
");
        return 0;
    }
    Node* l2 = NULL;
    for (i = 0; i < n2; i++) {
        scanf("%d", &x);
        l2 = insertEnd(l2, x);
    }
    Node* merged = merge(l1, l2);
    printList(merged);
    return 0;
}