#include using namespace std; using ll = long long int; using ld = long double; int n, m; vector> pers; vector> acti; int main() { cin >> n >> m; pers = vector>(n); acti = vector>(m+1); for(int i = 0; i < n; i++){ int k; cin >> k; for(int j = 0; j < k; j++){ int in; cin >> in; pers[i].push_back(in); acti[in].push_back(i); } } for(int a = 1; a <= m; a++){ vector> lis; if(acti.size()<=1) continue; for(int p : acti[a]){ lis.push_back({pers[p].size(), p}); } sort(lis.begin(), lis.end()); unordered_map trouve; for(pair i : lis){ int nbacti = trouve.size(); int detect = 0; unordered_set curPersActi; for(int b : pers[i.second]){ // activité aimée curPersActi.insert((b)); if(trouve.contains(b)) detect++; else trouve[b] = i.second; } if(detect != nbacti){ cout << "YES\n"; for(pair j : trouve){ if(!curPersActi.count(j.first)){ cout << i.second+1 << ' ' << j.second+1 << '\n'; return 0; } } } } } cout << "NO\n"; return 0; }