#include<stdio.h>
#include<malloc.h>
int main() {
int i,j,n,e,m=0;
int k=0,t;
int a1,b1;
int **a,**b,**c;
scanf("%d",&n);
//开辟空间
a=(int**)malloc(sizeof(int*)*n);
b=(int**)malloc(sizeof(int*)*n);
c=(int**)malloc(sizeof(int*)*n);
for(i=0;i<n;i++)
{
a[i]=(int*)malloc(sizeof(int)*100);
b[i]=(int*)malloc(sizeof(int)*100);
c[i]=(int*)malloc(sizeof(int)*100);
}
//给c[i][0]赋值,计算有多少交集
for(i=0;i<n;i++)
c[i][0]=0;
//输入集合
while(m!=n)
{
if(scanf("%d",&a[m][0])!=EOF) {
for(i=1; i<=a[m][0]; i++)
scanf("%d",&a[m][i]);
}
if(scanf("%d",&b[m][0])!=EOF) {
for(j=1; j<=b[m][0]; j++)
scanf("%d",&b[m][j]);
}
m++;
}
//将交集赋值给数组c
for(i=0; i<n; i++)
{
k=1;
for(j=1; j<=a[i][0]; j++)
for(m=1;m<=b[i][0];m++)
if(a[i][j]==b[i][m])
{
c[i][k]=a[i][j];
c[i][0]++;
k++;
}
}
//排序
for(i=0;i<n;i++)
for(j=1;j<=c[i][0];j++)
for(m=1;m<=c[i][0];m++)
if(c[i][j]<c[i][m])
{
t=c[i][j];
c[i][j]=c[i][m];
c[i][m]=t;
}
//输出
for(i=0; i<n; i++)
{
for(j=1;j<=c[i][0];j++)
printf("%d\t",c[i][j]);
printf("\n");
}
//释放空间
free(a);
free(b);
free(c);
return 0;
}