#include using namespace std; #pragma GCC target("avx2") #pragma GCC optimize("O3") const int DIM = 200005; const int MXM = 1000005; vector val[DIM], ord; int lst[MXM], idx[DIM]; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, m; cin >> n >> m; for (int i = 1; i <= n; ++i) { int k; cin >> k; for (int j = 1; j <= k; ++j) { int x; cin >> x; val[i].push_back(x); } // sort(begin(val[i]), end(val[i])); ord.push_back(i); } sort(begin(ord), end(ord), [](int x, int y) { return val[x].size() > val[y].size(); }); int it = 1; for (int x : ord) { int b = -1; idx[x] = it++; vector sol; for (int bit : val[x]) { sol.push_back(lst[bit]); lst[bit] = x; } sort(begin(sol), end(sol)); sol.erase(unique(sol.begin(), sol.end()), sol.end()); sort(begin(sol), end(sol), [](int x, int y) { return idx[x] > idx[y]; }); if (sol.size() >= 2) { cout << "YES\n" << x << " " << sol[0] << "\n"; return 0; } } cout << "NO\n"; return 0; }