#include<cstdio>#include<queue>#define maxn 505usingnamespace std;struct node{int to, next;}e[maxn * maxn <<1];int tot, head[maxn];voidaddedge(int u,int v){
e[++tot]=(node){v, head[u]};
head[u]= tot;}int n, id[maxn], index[maxn];voidToposort(){
queue <int> q;while(!q.empty()) q.pop();for(int i =1; i <= n; i++)if(!index[id[i]]) q.push(id[i]);while(!q.empty()){int cur = q.front(); q.pop();for(int i = head[cur]; i; i = e[i].next){if(index[e[i].to]){
index[e[i].to]--;if(!index[e[i].to]) q.push(e[i].to);}}}}intmain(){scanf("%d",&n);for(int m, i =1; i <= n; i++){scanf("%d%d",&id[i],&m);for(int to, j =1; j <= m; j++){scanf("%d",&to);
index[to]++;addedge(id[i], to);}}Toposort();int ans =0;for(int i =1; i <= n; i++){if(index[id[i]]) ans++;}if(ans)printf("%d\n", ans);elseprintf("YES\n");return0;}