import sys input = sys.stdin.readline sys.setrecursionlimit(2000000) def read_values(): return tuple(map(int, input().split())) def read_list(): return list(read_values()) def scc(N, G, RG): order = [] used = [0]*N group = [None]*N def dfs(s): used[s] = 1 for t in G[s]: if not used[t]: dfs(t) order.append(s) def rdfs(s, col): group[s] = col used[s] = 1 for t in RG[s]: if not used[t]: rdfs(t, col) for i in range(N): if not used[i]: dfs(i) used = [0]*N label = 0 for s in reversed(order): if not used[s]: rdfs(s, label) label += 1 return label, group def main(): n = int(input()) g = [list() for _ in range(n)] rg = [list() for _ in range(n)] for i in range(n): a = read_list() for j in range(1,a[0]+1): g[i].append(a[j]-1) rg[a[j]-1].append(i) r,res = scc(n,g,rg) if res[0]: print("No") return l = [False] * r l[-1] = True for i in range(n): lab = res[i] for v in g[i]: l[lab] |= lab + 1 == res[v] if all(l): print("Yes") else: print("No") if __name__ == "__main__": main()