/*
合并数组后快速排序
打印过的数不再打印
*/
#include<stdio.h>
#include<string.h>
int cmp(const void *a, const void *b){
if(*(int*)a > *(int*)b) return 1;
else return -1;
}
int main(){
int n1 = 0;
scanf("%d\n",&n1);
int nums1[n1];
//接收第一个数组
for(int i = 0; i < n1; i++){scanf("%d",&nums1[i]);}
int n2 = 0;
scanf("%d\n",&n2);
int n3 = n1 + n2;
int nums2[n3];
//合并第一个数组到新数组
for(int i = 0; i < n1; i++){
nums2[i] = nums1[i];
}
//接收第二个数组到第一个数组末尾
for(int i = n1; i < n3; i++){scanf("%d",&nums2[i]);}
//快速排序
qsort(nums2,n3,sizeof(int),cmp);
//重复值不打印,防止第一个数字出现问题,额外先打印第一个数
int temp = nums2[0];
printf("%d",nums2[0]);
for(int i = 1; i < n3; i++){
if(nums2[i]!=temp){
printf("%d",nums2[i]);
temp = nums2[i];
}
}
return 0;
}