#include<bits/stdc++.h>
typedef long long ll;
const int MAXN=100010;
std::vector<int>edge[MAXN];
int indeg[MAXN],A[MAXN];
bool exist[MAXN];
int main(){
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n;
memset(exist,false,sizeof(exist));
memset(indeg,0,sizeof(indeg));
std::cin>>n;
int n1=n;
int maxs=-1;
while(n--){
int x,m;
std::cin>>x>>m;
maxs=std::max(maxs,x);
exist[x]=true;
while(m--) {
int temp;
std::cin>>temp;
edge[x].push_back(temp);
indeg[temp]++;
}
}
int cnt=0;
std::queue<int>q;
for(int i=0;i<=maxs;i++){
if(indeg[i]==0 &&exist[i]) q.push(i);
}
while(!q.empty()){
int temp=q.front();
q.pop();
A[cnt++]=temp;
for(auto to:edge[temp]){
indeg[to]--;
if(indeg[to]==0&&exist[to]) q.push(to);
}
}
if(cnt==n1) std::cout<<"Yes"<<std::endl;
else std::cout<<n1-cnt<<std::endl;
return 0;
}