#include #define N 1000005 using namespace std; vector v[N]; vector groups[N]; map, int> mp; int cnt[N]; bool compare(int a, int b){ if(mp[{a,b}]){ return mp[{a,b}] - 1; } int ok = 0; for(auto x:v[b]){ cnt[x]++; } for(auto u:v[a]){ if(cnt[u] == 0) ok = 1; } mp[{a,b}] = ok + 1; if(ok){ cout << "YES" << endl; cout << a << ' ' << b; exit(0); } return ok; } void solve(){ int n,m; cin >> n >> m; map, int> exist; for(int i = 1;i <= n;i++){ int k; cin >> k; for(int j =1; j <= k; j++){ int x; cin >> x; v[i].push_back(x); } sort(v[i].begin(), v[i].end()); if(exist[v[i]]) continue; if(k == 0) continue; // cout << i << endl; exist[v[i]] = 1; groups[v[i][0]].push_back(i); } for(int i = 1;i <= m;i++){ sort(groups[i].begin(), groups[i].end(), [&](int a, int b){ return v[a].size() < v[b].size(); }); if(groups[i].size() < 2) continue; // for(int j = 0; j < groups[i].size(); j++){ // cout << groups[i][j] << endl; // } for(int j = 0; j < groups[i].size()-1; j++){ // cout << groups[i][j] << endl; compare(groups[i][j], groups[i][j+1]); } } cout << "NO"; } int main(){ ios_base::sync_with_stdio(false);cin.tie(NULL); int t = 1; // cin >> t; // comment if not multitest while(t--) solve(); }