#include #include using namespace std; using namespace atcoder; using mint=modint998244353;//modint1000000007 #define rep(i,n) for(int i=0;i<(int)(n);i++) #define ALL(v) v.begin(),v.end() typedef long long ll; template using V=vector; template using VV=V>; //B(n,V(n)) V A[100100]; int main(){ ios::sync_with_stdio(false); std::cin.tie(nullptr); int n; cin>>n; scc_graph g(n); V M(n); rep(i,n){ cin>>M[i]; rep(j,M[i]){ int a; cin>>a; a--; g.add_edge(i,a); A[i].push_back(a); } } auto scc=g.scc(); V G(n); int a=scc.size(); rep(i,a){ for(auto j:scc[i]) G[j]=i; } V> to(a),from(a); rep(i,n){ for(auto x:A[i]){ if(G[x]==G[i]) continue; from[G[x]].insert(G[i]); to[G[i]].insert(G[x]); } } V dp(a),out(a); queue que; rep(i,a){ if(to[i].size()==0){ que.push(i); dp[i]=1; } else out[i]=to[i].size(); } while(que.size()){ auto b=que.front(); que.pop(); for(auto x:from[b]){ dp[x]=max(dp[x],dp[b]+1); out[x]--; if(out[x]==0) que.push(x); } } if(dp[G[0]]==a) cout<<"Yes"<