#include <stdio.h>
int a[100];
int b[100];
int res[100];
/*
选择排序
*/
void sortBySelect2(int *array,int len)
{
for(int i=0;i<len - 1;i++)
{
int t = 0;
int tmp;
for(int j=i;j<len;j++)
{
if(array[j] < array[i])
{
t = j;
tmp = array[i];//每次都得交换
array[i] = array[t];
array[t] = tmp;
}
}
}
}
/*
错误的选择排序
*/
void sortBySelect(int *array,int len)
{
for(int i=0;i<len - 1;i++)
{
int t = 0;
int tmp;
for(int j=i;j<len;j++)
{
if(array[j] < array[i])
t = j;
}
tmp = array[i];
array[i] = array[t];
array[t] = tmp;
}
}
/*
两个元素中的相同元素被设置成 -1,由于集合中只有正数,没有负数
*/
void reversDifference(int len1,int len2)
{
for(int i=0;i<len1;i++)
{
for(int j=0;j<len2;j++)
{
if(a[i] == b[j])
{
a[i] = -1;
b[j] = -1;
}
}
}
int k = 0;
i = 0;
for(i=0;i<len1;i++)
{
if(a[i] == -1)
continue;
res[k] = a[i];
k++;
}
for(i=0;i<len2;i++)
{
if(b[i] == -1)
continue;
res[k] = b[i];
k++;
}
if(k == 0)
{
printf("{}\n");
return;
}
sortBySelect2(res,k);
printf("{");
for(i=0;i<k-1;i++)
printf("%d,",res[i]);
printf("%d}\n",res[i]);
}
/*
这种思路是找两个集合的不同元素,得找两次
所以的两次双重循环
*/
void difference(int len1,int len2)
{
int k = 0;
for(int i=0;i<len1;i++)
{
for(int j=0;j<len2;j++)
{
if(a[i] == b[j])
break;
}
if(j >= len2)
{
res[k] = a[i];
k++;
}
}
for( i=0;i<len2;i++)
{
for(int j=0;j<len1;j++)
{
if(b[i] == a[j])
break;
}
if(j >= len1)
{
res[k] = b[i];
k++;
}
}
for(int m=0;m<k;m++)
printf("%d,",res[m]);
printf("}\n");
}
int main()
{
int time;
freopen("in.txt","r",stdin);
scanf("%d",&time);
for(int i=0;i<time;i++)
{
int i = 0;
while(scanf("%d",&a[i]),a[i])
i++;
int j = 0;
while(scanf("%d",&b[j]),b[j])
j++;
//difference(i , j ); //注意此时的数组长度是i,j不用在减去1
reversDifference(i,j);
}
fclose(stdin);
return 0;
}