#include using namespace std; #define tsolve int t; cin >> t; while (t--) solve #define all(x) ::begin(x), ::end(x) #define sz(x) (ll)::size(x) using ll = long long; using ld = long double; void solve() { int n, m; cin >> n >> m; vector> v(n); for(int i = 0; i < n; i++){ int k; cin >> k; for(int j = 0; j < k; j++){ int x; cin >> x; x--; v[i].push_back(x); } } vector mark(m, -1); vector ord(n); iota(all(ord), 0); sort(all(ord), [&](int i, int j){return sz(v[i]) > sz(v[j]);}); vector inv(n); for(int i = 0; i < n; i++) inv[ord[i]] = i; for(int i : ord){ set s; for(int x : v[i]){ s.insert(mark[x]); mark[x] = i; } if(sz(s) > 1){ int ma = -1; for(int x : s){ if(x != -1) ma = max(ma, inv[x]); } cout << "YES\n"; cout << i+1 << " " << ord[ma]+1 << "\n"; return; } } cout << "NO\n"; } int main() { cin.tie(0)->sync_with_stdio(false); cout << setprecision(16); solve(); }