#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; signed main() { cin.tie(0)->sync_with_stdio(0); cin.exceptions(cin.failbit); int n, k; cin >> n >> k; srand(42); vector> vals(n); rep(i,0,n) { int c; cin >> c; vals[i]= {vi(c), i + 1 }; rep(j,0,c) cin >> vals[i].first[j]; sort(all(vals[i].first)); } sort(all(vals)); vi mapping(k + 1, -1); int a = -1; int b = -1; int last = 0; rep(i,1,n + 1) { if (i == n || vals[i].first[0] != vals[i-1].first[0]) { rep(j,0,sz(vals[i-1].first) - 1) { int el = vals[i-1].first[j]; if (mapping[el] != -1) { cerr << "f" << el << endl; a = vals[mapping[el]].second; b = vals[i-1].second; goto woohoo; } } rep(x, last, i) { int lel = vals[x].first[sz(vals[x].first) - 1]; if (mapping[lel] != -1) { int imi = mapping[lel]; rep(j,0,min(sz(vals[i].first), sz(vals[imi].first))) { if (vals[i].first[j] != vals[imi].first[j]) { cerr << lel << endl; a = vals[i].second; b = vals[imi].second; goto woohoo; } } } mapping[lel] = x; } last = i; continue; } if (i == n) continue; rep(j,0,min(sz(vals[i].first), sz(vals[i-1].first))) { if (vals[i].first[j] != vals[i-1].first[j]) { a = vals[i].second; b = vals[i-1].second; goto woohoo; } } } woohoo:; if (a == -1) { cout << "NO" << endl; } else { cout << "YES" << endl; cout << a << " " << b << endl; } return 0; }