#include using namespace std; typedef long long ll; const int M = 1e6 + 2; const int N = 2e5 + 2; int n, m; vector v[N], idx[M]; unordered_map bio, um; bool cmp(int i, int j) { if (v[i].size() != v[j].size()) return v[i].size() < v[j].size(); return i < j; } bool subs(int x, int y) { if (bio[(ll)x * n + y]) return 1; bio[(ll)x * n + y] = 1; bool ok = 1; for (int i = 0; i < v[x].size(); ++i) { ok &= um[(ll)y * m + v[x][i]]; } return ok; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> m; for (int i = 0; i < n; ++i) { int k; cin >> k; v[i].resize(k); for (int j = 0; j < k; ++j) { cin >> v[i][j], --v[i][j]; idx[v[i][j]].push_back(i); um[(ll)i * m + v[i][j]] = 1; } } for (int i = 0; i < m; ++i) { sort(idx[i].begin(), idx[i].end(), cmp); for (int j = 0; j < (int)idx[i].size() - 1; ++j) { if (!subs(idx[i][j], idx[i][j + 1])) { cout << "YES\n"; cout << idx[i][j] + 1 << " " << idx[i][j + 1] + 1 << "\n"; return 0; } } } cout << "NO\n"; return 0; }