import sys sys.setrecursionlimit(10**6) N = int(input()) FG = {i:[] for i in range(1,N+1)} for i in range(1,N+1): A = list(map(int,input().split())) for j in range(1,A[0]+1): FG[i].append(A[j]) A = [0]*(N+1) invA = [0]*(N+1) visited = [0]*(N+1) cnt = 1 def dfs1(v): global cnt visited[v] = 1 for u in FG[v]: if visited[u]==0: dfs1(u) A[v] = cnt invA[cnt] = v cnt += 1 for i in range(1,N+1): if visited[i]==0: dfs1(i) BG = {i:[] for i in range(1,N+1)} for i in range(1,N+1): for j in FG[i]: BG[j].append(i) Col = [0]*(N+1) cnt = 1 def dfs2(v,cnt): Col[v] = cnt for u in BG[v]: if Col[u]==0: dfs2(u,cnt) for i in range(N,0,-1): if Col[invA[i]]==0: dfs2(invA[i],cnt) cnt += 1 G = {c:set([]) for c in range(1,cnt)} for i in range(1,N+1): c = Col[i] for j in FG[i]: if Col[j]!=c: G[c].add(Col[j]) if cnt-1==1: print("Yes") else: outdeg = 0 for c in G: outdeg += len(G[c]) if outdeg==cnt-2: print("Yes") else: print("No")