#include <bits/stdc++.h>
using namespace std;
#define inf64 INT64_MAX/2
#define inf32 INT32_MAX/2
#define ll long long
#define int ll
#define pii pair<int,int>
#define endl '\n'
#define vv vector
#define cy cout<<"Yes"<<endl
#define cn cout<<"No"<<endl
#define its(a) a.begin() + 1,a.end()
#define minV *min_element
#define maxV *max_element
int _;
ll lcm(ll a, ll b) { return a / __gcd(a, b) * b; }
ll mpow(ll x, ll y, ll mod);
void solve() {
int n; cin >> n;
int m; cin >> m;
vv<pair<int, vv<int>>>all(n + 1);
for (int i = 1; i <= n; i++) {
int sz; cin >> sz;
while (sz--) {
int a; cin >> a;
all[i].second.push_back(a);
}
sort(all[i].second.begin(), all[i].second.end());
all[i].first = i;
}
auto cmp = [&](pair<int,vv<int>>& a, pair<int,vv<int>>& b)->int {
return a.second.size() > b.second.size();
};
sort(its(all), cmp);
vv<int>f(m + 1);
for (int i = 1; i <= n; i++) {
int pos = f[all[i].second[0]];
for (auto a : all[i].second) {
if (f[a] != pos){
cout << "Yes" << endl;
cout << all[pos].first << " " << all[i].first << endl;
return;
}
else {
f[a] = i;
}
}
}
cout << "NO" << endl;
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
_ = 1;
while (_--) {
solve();
}
return 0;
}
ll mpow(ll x, ll y, ll mod) {
x %= mod;
ll s = 1;
while (y) {
if (y & 1) {
s *= x;
s %= mod;
}
x *= x;
x %= mod;
y >>= 1;
}
return s;
}