#include<iostream>
#include<memory.h>
using namespace std;
int n, k;
int pi[1020];
int program[120][1020];
int program_size[120];
int virus_candidate[2020][1020];
bool answer = true;
bool virus_check[2020];
int find_pi(int p){
	int i = 0, j = -1;
	pi[0] = -1;
	while(i < k){
		if(j == -1 || virus_candidate[p][i] == virus_candidate[p][j]){
			i++;
			j++;
			pi[i] = j;
		}
		else{
			j = pi[j];
		}
	}
        return 0;
}
bool kmp(int s, int p){
	int i = 0, j = -1;
	memset(pi, 0, sizeof(int) * 1020);
	find_pi(p);
	while(i < program_size[s]){
		if(j == -1 || program[s][i] == virus_candidate[p][j]){
			i++;
			j++;
		}
		else{
			j = pi[j];
		}
		if(j == k){
			return true;
			j = pi[j];
		}
	}
	return false;
}
int main(void)
{
	freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);
	cin>>n>>k;
	for(int i = 0; i<n; i++){
		cin>>program_size[i];
		for(int j = 0; j<program_size[i]; j++){
			cin>>program[i][j];
		}
	}
	int count = 0;
	for(int i = 0; i<program_size[0] - k + 2; i++){
		for(int j = 0; j<k; j++){
			virus_candidate[count][j] = program[0][i + j];
			virus_candidate[count + 1][j] = program[0][i + k - j - 1];
		}
		count += 2;
	}
	
	int m = count;
	for(int i = 1; i<n; i++){
		for(int j = 0; j<m; j+=2){
			if(!virus_check[j] && !kmp(i, j) && !kmp(i, j + 1)){
				virus_check[j] = virus_check[j+1] = true;
				count -= 2;
			}
		}
		if(count == 0){
			answer = false;
			break;
		}
	}
	if(answer)cout<<"YES";
	else cout<<"NO";
}