#include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n, m; cin>>n>>m; vector> g(m); vector> v(n); for(int i = 0; i < n; i++){ int k; cin>>k; v[i].resize(k); for(int &x : v[i]) { cin>>x; --x; } sort(v[i].begin(), v[i].end()); for(int j : v[i]){ g[j].push_back(i); } } vector sz(n, 1e9), nxt(n, -1); for(int i = 0; i < m; i++){ sort(g[i].begin(), g[i].end(), [&v](int i, int j) -> bool { return v[i].size() != v[j].size() ? v[i].size() < v[j].size() : i < j; }); for(int j = 1; j < (int)g[i].size(); j++){ if(v[g[i][j]].size() < sz[g[i][j-1]]){ sz[g[i][j-1]] = v[g[i][j]].size(); nxt[g[i][j-1]] = g[i][j]; } } } auto check = [](const vector &a, const vector &b) -> bool { for(int x : a){ auto it = lower_bound(b.begin(), b.end(), x); if(it == b.end() || (*it) != x) return false; } return true; }; for(int i = 0; i < n; i++){ if(nxt[i] != -1 && !check(v[i], v[nxt[i]])){ cout << "YES\n"; cout << i+1 << ' ' << nxt[i] + 1 << '\n'; return 0; } } cout << "NO\n"; return 0; } /* 3 5 3 1 2 4 5 1 2 3 4 5 2 1 5 */