t = int(input())
for _ in range(t):
n = int(input())
arr = []
d = {}
for i in range(n):
l = list(map(int,input().split()))
for j in range(1,len(l)):
d[l[j]] = d.get(l[j],0) + 1
arr.append(l)
ans = 'NO'
for i in range(n):
flag = 0
a = arr[i]
l = a[1:]
for j in l:
if d[j] == 1:
flag = 1
break
if flag == 0:
ans = 'YES'
break
print(ans)
#include<bits/stdc++.h>
using namespace std;
#define int long long
int mod=1000000007;
vector<int>setbits[100100];
signed main(){
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int t;cin>>t;
while(t--){
//setbits.clear();setbits.resize(100100);
int n;cin>>n;
map<int,int>mp;
for(int i=0;i<n;i++) {
int k;cin>>k;
while(k--){
int x;cin>>x;
setbits[i].push_back(x);
mp[x]++;
}
}
bool ans=0;
for(int i=0;i<n;i++) {
bool flag=0;
for(int v:setbits[i]){
if(mp[v]==1)flag=1;
}
ans=ans|(!flag);
}
if(ans)cout<<"YES";
else cout<<"NO";
cout<<endl;
for(int i=0;i<n;i++)setbits[i].clear();
}
}
1044. Longest Duplicate Substring | 1032. Stream of Characters |
987. Vertical Order Traversal of a Binary Tree | 952. Largest Component Size by Common Factor |
212. Word Search II | 174. Dungeon Game |
127. Word Ladder | 123. Best Time to Buy and Sell Stock III |
85. Maximal Rectangle | 84. Largest Rectangle in Histogram |
60. Permutation Sequence | 42. Trapping Rain Water |
32. Longest Valid Parentheses | Cutting a material |
Bubble Sort | Number of triangles |
AND path in a binary tree | Factorial equations |
Removal of vertices | Happy segments |
Cyclic shifts | Zoos |
Build a graph | Almost correct bracket sequence |
Count of integers | Differences of the permutations |
Doctor's Secret | Back to School |
I am Easy | Teddy and Tweety |