#include<stdio.h>
#define N 400
int map[N][N],use[N],link[N],m,n;
void initial()
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
map[i][j]=0;
link[i]=-1;
}
}
bool dfs(int x){
int i,j;
for(i=1;i<=m;i++){
if (use[i]==0 && map[x][i]) {
use[i]=1;
j=link[i];
link[i]=x;
if (j==-1|| dfs(j))
{
return true;
}
link[i]=j;
}
}
return false;
}
int hungary()
{
int num=0;
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
use[j]=0;
if (dfs(i))
num++;
}
return num;
}
int main()
{
int t,number,i,j,v,x;
scanf("%d",&t);
while(t--)
{
initial();
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&number);
for(j=1;j<=number;j++)
{
scanf("%d",&v);
map[i][v]=1;
}
}
x=hungary();
if(x==n)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}