#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct __LinkedList_ts {
int value;
struct __LinkedList_ts* next;
} LinkedList_ts;
LinkedList_ts* LinkedList_new(int value)
{
LinkedList_ts* result = NULL;
result = (LinkedList_ts*)malloc(sizeof(LinkedList_ts));
result->value = value;
result->next = NULL;
return result;
}
LinkedList_ts* LinkedList_add(LinkedList_ts* head, int value)
{
LinkedList_ts* result = NULL;
LinkedList_ts* curr = NULL;
LinkedList_ts* next = NULL;
LinkedList_ts* node = NULL;
node = LinkedList_new(value);
if (head == NULL) {
head = node;
} else {
for (curr=head; curr!=NULL; curr=curr->next) {
next = curr->next;
if (value < curr->value) {
if (curr == head) {
node->next = head;
head = node;
break;
} else {}
} else if (value > curr->value) {
if (next == NULL) {
curr->next = node;
break;
} else {
if (value < next->value) {
curr->next = node;
node->next = next;
break;
} else {}
}
} else {
free(node);
}
}
}
result = head;
return result;
}
void LinkedList_free(LinkedList_ts* head)
{
LinkedList_ts* curr = NULL;
LinkedList_ts* next = NULL;
for (curr=head; curr!=NULL; curr=next) {
next = curr->next;
free(curr);
}
head = NULL;
}
int main() {
int n;
int i, value;
LinkedList_ts* head = NULL;
LinkedList_ts* curr = NULL;
scanf("%d", &n);
for (i=0; i<n; ++i) {
scanf("%d", &value);
head = LinkedList_add(head, value);
}
scanf("%d", &n);
for (i=0; i<n; ++i) {
scanf("%d", &value);
head = LinkedList_add(head, value);
}
for (curr=head; curr!=NULL; curr=curr->next) {
printf("%d", curr->value);
}
LinkedList_free(head);
return 0;
}