// Written by Gemini
#include <bits/stdc++.h>
using namespace std;
int n, k, mx;
vector<int> c;
vector<vector<int>> opts;
int dp[505][505];
void get_sums(int i, bitset<250005>& bs) {
if (i == c.size()) return;
bs |= (bs << c[i]);
get_sums(i + 1, bs);
}
bool solve(int i, int sum) {
if (sum > n) return false;
if (i == n) return (sum == n);
if (dp[i][sum] != -1)
return dp[i][sum];
bool ok = false;
for (int m : opts[i]) {
if (solve(i + 1, sum + m)) {
ok = true;
break;
}
}
return dp[i][sum] = ok;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
if (!(cin >> n >> k)) return 0;
mx = n * k;
opts.resize(n);
memset(dp, -1, sizeof(dp));
bitset<250005> bs;
for (int i = 0; i < n; i++) {
int l;
cin >> l;
c.clear();
for (int j = 0; j < l; j++) {
int x;
cin >> x;
if (x <= mx) {
c.push_back(x);
}
}
bs.reset();
bs[0] = 1;
get_sums(0, bs);
for (int m = 0; m <= n; m++) {
if (bs[m * k]) {
opts[i].push_back(m);
}
}
}
if (solve(0, 0)) {
cout << "YES\n";
} else {
cout << "NO\n";
}
return 0;
}
Ly8gV3JpdHRlbiBieSBHZW1pbmkKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG4sIGssIG14Owp2ZWN0b3I8aW50PiBjOwp2ZWN0b3I8dmVjdG9yPGludD4+IG9wdHM7CmludCBkcFs1MDVdWzUwNV07Cgp2b2lkIGdldF9zdW1zKGludCBpLCBiaXRzZXQ8MjUwMDA1PiYgYnMpIHsKICAgIGlmIChpID09IGMuc2l6ZSgpKSByZXR1cm47CiAgICBicyB8PSAoYnMgPDwgY1tpXSk7CiAgICBnZXRfc3VtcyhpICsgMSwgYnMpOwp9Cgpib29sIHNvbHZlKGludCBpLCBpbnQgc3VtKSB7CiAgICBpZiAoc3VtID4gbikgcmV0dXJuIGZhbHNlOyAKICAgIGlmIChpID09IG4pIHJldHVybiAoc3VtID09IG4pOyAKCiAgICBpZiAoZHBbaV1bc3VtXSAhPSAtMSkgCiAgICAgICAgcmV0dXJuIGRwW2ldW3N1bV07CgogICAgYm9vbCBvayA9IGZhbHNlOwogICAgZm9yIChpbnQgbSA6IG9wdHNbaV0pIHsKICAgICAgICBpZiAoc29sdmUoaSArIDEsIHN1bSArIG0pKSB7CiAgICAgICAgICAgIG9rID0gdHJ1ZTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBkcFtpXVtzdW1dID0gb2s7Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwoKICAgIGlmICghKGNpbiA+PiBuID4+IGspKSByZXR1cm4gMDsKICAgIG14ID0gbiAqIGs7CgogICAgb3B0cy5yZXNpemUobik7CiAgICBtZW1zZXQoZHAsIC0xLCBzaXplb2YoZHApKTsKICAgIAogICAgYml0c2V0PDI1MDAwNT4gYnM7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBpbnQgbDsKICAgICAgICBjaW4gPj4gbDsKICAgICAgICAKICAgICAgICBjLmNsZWFyKCk7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBsOyBqKyspIHsKICAgICAgICAgICAgaW50IHg7CiAgICAgICAgICAgIGNpbiA+PiB4OwogICAgICAgICAgICBpZiAoeCA8PSBteCkgewogICAgICAgICAgICAgICAgYy5wdXNoX2JhY2soeCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGJzLnJlc2V0KCk7CiAgICAgICAgYnNbMF0gPSAxOyAKCiAgICAgICAgZ2V0X3N1bXMoMCwgYnMpOwoKICAgICAgICBmb3IgKGludCBtID0gMDsgbSA8PSBuOyBtKyspIHsKICAgICAgICAgICAgaWYgKGJzW20gKiBrXSkgewogICAgICAgICAgICAgICAgb3B0c1tpXS5wdXNoX2JhY2sobSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKHNvbHZlKDAsIDApKSB7CiAgICAgICAgY291dCA8PCAiWUVTXG4iOwogICAgfSBlbHNlIHsKICAgICAgICBjb3V0IDw8ICJOT1xuIjsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=