a, b = map(int, input().split())
op = set()
oper = list()
for i in range(a):
oper = input().split()
for k in oper[1:]:
op.add(k)
print('YES' if len(op) == b else 'NO')
#include <iostream>
#include <set>
#include <string>
#include <list>
#include <iterator>
#include <algorithm>
using namespace std;
int main() {
set<int>s;
int t, x;
int lump;
cin >> t >> x;
for (int j = 0; j < t; ++j) {
int z;
cin >> z;
while (z--) {
cin >> lump;
s.insert(lump);
}
}
if (s.size() == x) {
cout << "YES" << endl;
}
else
{
cout << "NO" << endl;
}
return 0;
}
1343C - Alternating Subsequence | 1325A - EhAb AnD gCd |
746A - Compote | 318A - Even Odds |
550B - Preparing Olympiad | 939B - Hamster Farm |
732A - Buy a Shovel | 1220C - Substring Game in the Lesson |
452A - Eevee | 1647B - Madoka and the Elegant Gift |
1408A - Circle Coloring | 766B - Mahmoud and a Triangle |
1618C - Paint the Array | 469A - I Wanna Be the Guy |
1294A - Collecting Coins | 1227A - Math Problem |
349A - Cinema Line | 47A - Triangular numbers |
1516B - AGAGA XOOORRR | 1515A - Phoenix and Gold |
1515B - Phoenix and Puzzle | 155A - I_love_username |
49A - Sleuth | 1541A - Pretty Permutations |
1632C - Strange Test | 673A - Bear and Game |
276A - Lunch Rush | 1205A - Almost Equal |
1020B - Badge | 1353A - Most Unstable Array |