https://www.luogu.com.cn/record/134337986
#include<bits/stdc++.h>
#define fr(ii,ss,tt) for(int ii=ss;ii<=tt;ii++)
#define pii pair<int,int>
#define pt printf
#define fi first
#define eb emplace_back
#define Int long long
#define se second
using namespace std;
void rd(){}template<typename T, typename... args> void rd(T&x, args&...y) {char ch;bool f = 0;for (ch = getchar(); ch < '0' || '9' < ch; ch = getchar())if (ch == '-')f = 1;for (x = 0; '0' <= ch && ch <= '9'; ch = getchar())x = (x << 1) + (x << 3) + ch - '0';if (f)x = -x;rd(y...);}
const int N = 1e6 + 33,inf=2e9;
int vis[N];vector<int> s[N];
void so(){
int n;
rd(n);
fr(i,1,n){
vis[i]=0;
s[i].clear();
int cnt;
rd(cnt);
s[i].reserve(cnt);
fr(j,1,cnt){
int x;
rd(x);
s[i].eb(x);
}
}
vector<int>o(n+1);
iota(o.begin(),o.end(),1);
sort(o.begin(),o.end(),[&](int i,int j){
return s[i].size()>s[j].size();
});
for(int&i:o){
if(s[i].empty())continue;
int all=vis[*s[i].begin()];
auto it=find_if(s[i].begin(),s[i].end(),[&](int x){
return vis[x]!=all;
});
if(it==s[i].end()){
for(int&x:s[i]){
vis[x]=i;
}
}else{
int ans=-1;
for(int&ti:s[i]){
if(!vis[ti])continue;
if(ans==-1||s[vis[ti]].size()<s[ans].size()){
ans=vis[ti];assert(ans!=i);
}
}
assert(ans!=-1);
pt("YES\n%d %d\n",ans,i);
return;
}
}
pt("NO\n");
//output:Y/N sol
}
int main() {
int T;
rd(T);
fr(i,1,T)so();
return 0;
}