#include<bits/stdc++.h>
#define mx 10005
using namespace std;
vector<int>vec1,vec2,vec3,vec4,vec5,vec6;
bool arr1[mx];
bool arr2[mx];
bool arr3[mx];
struct data
{
int num,sz;
} arr[5];
bool cmp(data lhs,data rhs)
{
return lhs.sz>rhs.sz;
}
int main()
{
int test,S1,S2,S3,i,j,k,n,tag,x,a;
scanf("%d",&test);
for(x=1; x<=test; x++)
{
scanf("%d",&S1);
for(i=1; i<=S1; i++)
{
scanf("%d",&n);
vec1.push_back(n);
arr1[n]=true;
}
scanf("%d",&S2);
for(i=1; i<=S2; i++)
{
scanf("%d",&n);
vec2.push_back(n);
arr2[n]=true;
}
scanf("%d",&S3);
for(i=1; i<=S3; i++)
{
scanf("%d",&n);
vec3.push_back(n);
arr3[n]=true;
}
tag=0;
for(i=0; i<S1; i++)
{
a=vec1[i];
if(arr2[a]==false && arr3[a]==false)
{
vec4.push_back(a);
}
}
for(i=0; i<S2; i++)
{
a=vec2[i];
if(arr1[a]==false && arr3[a]==false)
{
vec5.push_back(a);
}
}
for(i=0; i<S3; i++)
{
a=vec3[i];
if(arr1[a]==false && arr2[a]==false)
{
vec6.push_back(a);
}
}
sort(vec4.begin(),vec4.end());
sort(vec5.begin(),vec5.end());
sort(vec6.begin(),vec6.end());
arr[0].sz=vec4.size();
arr[0].num=1;
arr[1].sz=vec5.size();
arr[1].num=2;
arr[2].sz=vec6.size();
arr[2].num=3;
sort(arr,arr+3,cmp);
printf("Case #%d:\n%d",x,arr[0].num);
if(arr[0].num==1)
{
printf(" %d",vec4.size());
for(i=0; i<arr[0].sz; i++)
{
printf(" %d",vec4[i]);
}
printf("\n");
}
else if(arr[0].num==2)
{
printf(" %d",vec5.size());
for(i=0; i<arr[0].sz; i++)
{
printf(" %d",vec5[i]);
}
printf("\n");
}
else if(arr[0].num==3)
{
printf(" %d",vec6.size());
for(i=0; i<arr[0].sz; i++)
{
printf(" %d",vec6[i]);
}
printf("\n");
}
if(arr[0].sz==arr[1].sz)
{
printf("%d",arr[1].num);
if(arr[1].num==1)
{
printf(" %d",vec4.size());
for(i=0; i<arr[0].sz; i++)
{
printf(" %d",vec4[i]);
}
printf("\n");
}
else if(arr[1].num==2)
{
printf(" %d",vec5.size());
for(i=0; i<arr[0].sz; i++)
{
printf(" %d",vec5[i]);
}
printf("\n");
}
else if(arr[1].num==3)
{
printf(" %d",vec6.size());
for(i=0; i<arr[0].sz; i++)
{
printf(" %d",vec6[i]);
}
printf("\n");
}
}
if(arr[0].sz==arr[2].sz)
{
printf("%d",arr[2].num);
if(arr[2].num==1)
{
printf(" %d",vec4.size());
for(i=0; i<arr[0].sz; i++)
{
printf(" %d",vec4[i]);
}
printf("\n");
}
else if(arr[2].num==2)
{
printf(" %d",vec5.size());
for(i=0; i<arr[0].sz; i++)
{
printf(" %d",vec5[i]);
}
printf("\n");
}
else if(arr[2].num==3)
{
printf(" %d",vec6.size());
for(i=0; i<arr[0].sz; i++)
{
printf(" %d",vec6[i]);
}
printf("\n");
}
}
vec1.clear();
vec2.clear();
vec3.clear();
vec4.clear();
vec5.clear();
vec6.clear();
memset(arr1,false,sizeof(arr1));
memset(arr2,false,sizeof(arr2));
memset(arr3,false,sizeof(arr3));
}
return 0;
}