#include <iostream>
using namespace std;

typedef long long lint;

int uni[200001];
const int lang=100000;

int root(int a){
    if(uni[a]<0) return a;
    else return uni[a]=root(uni[a]);
}
bool connect(int ia,int ib){
    int a=root(ia),b=root(ib);
    if(a==b) return false;
    if(uni[a]>uni[b]){
        uni[b]+=uni[a];
        uni[a]=b;
    }else{
        uni[a]+=uni[b];
        uni[b]=a;
    }
    return true;
}

int main(){
    int N,M;
    cin >> N >> M;

    for(int i=0;i<=200000;i++) uni[i]=-1;
    for(int i=0;i<N;i++){
        int K;
        cin >> K;
        for(int j=0;j<K;j++){
            int L;
            cin >> L;
            connect(i,L+lang);
        }
    }
    int r=root(0);
    for(int i=0;i<N;i++){
        if(root(i)!=r){
            cout << "NO" << endl;
            return 0;
        }
    }
    cout << "YES" << endl;

    return 0;
}//