#include<bits/stdc++.h>
using namespace std;
const int MAXN=1005;
struct edge{
int v,next;
}e[MAXN];
int tot,head[MAXN],din[MAXN];
void addedge(int u,int v){
e[++tot]=(edge){v,head[u]};
head[u]=tot;
din[v]++;
return;
}
int n,u[MAXN];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int m;
cin>>u[i]>>m;
for(int i=1;i<=m;i++){
int v;
cin>>v;
addedge(u[i],v);
}
}
queue<int> q;
vector<int>l;
for(int j=1;j<=n;j++){
if(din[j]==0) q.push(j);
}while(!q.empty()){
int x=q.front();q.pop();
for(int i=head[x];i;i=e[i].next){
int v=e[i].v;
if(--din[v]) continue;
for(int i=1;i<=n;i++)
if(u[i]==v) q.push(v);
}
l.push_back(x);
}
if(l.size()==n) cout<<"YES"<<endl;
else cout<<n-l.size()<<endl;
return 0;
}