#include <bits/stdc++.h>

using namespace std;

typedef unsigned long long ull;
typedef long long ll;

#define MAX 100000

vector<int> l[MAX], e[MAX];
vector<bool> b(MAX, false);

void dfs(int s){
	b[s]=true;
	for(int i=0; i<e[s].size(); i++){
		if(!b[e[s][i]]){
			dfs(e[s][i]);
		}
	}
	return;
}

int main(){
	int n, m;
	cin >> n >> m;

	for(int i=0; i<n; i++){
		int k;
		cin >> k;
		for(int j=0; j<k; j++){
			int t;
			cin >> t;
			l[t-1].push_back(i);
		}
	}

	for(int i=0; i<MAX; i++){
		for(int j=1; j<l[i].size(); j++){
			e[l[i][j]].push_back(l[i][j-1]);
			e[l[i][j-1]].push_back(l[i][j]);
		}
	}

	int cnt=0;
	for(int i=0; i<n; i++){
		if(!b[i]){
			dfs(i);
			cnt++;
		}
	}
	if(cnt==1) cout << "YES" << endl;
	else cout << "NO" << endl;
	return 0;
}