#include <stdio.h>
int main(){
int la[200], lb[100]; // 定义存储集合A与集合B的变量
int m, n; // 定义存储集合A与集合B元素数目的变量
int i, j, iCase=0; // 定义迭代变量i、j,iCase用来记录测试数据的组数
// 读取每组测试数据的第一行,因为测试数据没有告诉几行,
// 所以用判断是否读到了文件结尾来判断是否读取数据结束
while(scanf("%d", &m) != EOF){
// 用iCase已输出几行来判断是否需要输出一个空行
if(iCase++){
putchar('\n');
}
// 读入集合 A 的元素
for(i=0;i<m;i++){
scanf("%d", &la[i]);
}
// 读入集合 B 的元素数目和元素
scanf("%d", &n);
for(i=0;i<n;i++){
scanf("%d", &lb[i]);
}
// 输出集合 A 的元素
for(i=0;i<m;i++){
if(i){
putchar(' ');
}
printf("%d", la[i]);
}
putchar('\n');
// 输出集合 B 的元素
for(i=0;i<n;i++){
if(i){
putchar(' ');
}
printf("%d", lb[i]);
}
putchar('\n');
// 依次从集合 B 中取出元素插入到集合 A 的尾部
for(i=0;i<n;i++){
// 判断集合 B 中第 i 个元素是不是在集合 A 中也有
for(j=0;j<m;j++){
if(lb[i] == la[j]){
break;
}
}
// 如果找完集合 A 中 m 个元素仍未找到集合 B 中的第 i 个元素,
// 说明在集合 A 中不存在该元素,则将其插入到尾部。同时集合 A 的总数目加 1。
if(j >= m){
la[m] = lb[i];
m++;
}
// 将集合 B 中的元素插入到集合 A 的尾部后,将集合 A 的所有元素输出
for(j=0;j<m;j++){
if(j){
putchar(' ');
}
printf("%d", la[j]);
}
putchar('\n');
}
}
return 0;
}
/**************************************************************
Problem: 2135
User: admin
Language: C
Result: Accepted
Time:11 ms
Memory:1144 kb
****************************************************************/