#include using namespace std; #define rep(i,a,b) for(int i=a;i<(b);++i) #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() typedef long long ll; typedef pair pii; typedef vector vi; #define pb push_back #define ff first #define ss second void solve(){ ll n, m; cin >> n >> m; vector> a(n); for(ll i = 0; i < n; ++i){ ll k; cin >> k; for(ll ii = 0; ii < k; ++ii){ ll ai; cin >> ai; ai--; a[i].insert(ai); } } vector>> mc(m); for(ll i = 0; i < n; ++i){ for(ll mi : a[i]){ mc[mi].insert({-a[i].size(), i}); } } set> st; map mp; for(ll curj = 0; curj < m; curj++){ if(mc[curj].empty()) continue; ll i = mc[curj].begin()->ss; if(mp.count(i) == 0) mp[i] = -a[i].size(); mp[i]++; } for(auto[i, cnt] : mp) st.insert({cnt, i}); while(!st.empty()){ auto[cnt, i] = *st.begin(); if(cnt < 0){ for(ll mi : a[i]){ ll j = mc[mi].begin()->ss; if(j != i){ cout << "YES\n"; cout << i+1 << " " << j+1 << "\n"; return; } } assert(0==1); } st.erase(st.begin()); for(ll mi : a[i]){ mc[mi].erase(mc[mi].begin()); if(mc[mi].empty()) continue; ll j = mc[mi].begin()->ss; if(mp.count(j) == 0) mp[j] = -a[j].size(); else st.erase({mp[j], j}); mp[j]++; st.insert({mp[j], j}); } } cout << "NO\n"; } int main(){ cin.tie(0); ios_base::sync_with_stdio(0); cout<