| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 2 초 | 256 MB | 3 | 2 | 2 | 66.667% |
При подготовке соревнований по программированию одна из проблем, встающих перед организаторами — выбор задач, которые будут в этом соревновании. Чтобы соревнование было интересным, необходимо, чтобы задачи в нем были разной сложности. Также, необходимо, чтобы задачи были на разные темы. Ведь кому интересно решать одинаковые задачи? К счастью, у организаторов есть множество задач, и им есть, из чего выбирать.
У вас есть несколько задач. Для каждой задачи известна ее уровень сложости — целое число, и то, какие темы она затрагивает. Вам нужно выбрать такое подмножество задач, чтобы выполнялись следующие требования:
Сформируйте из имеющихся у вас задач набор задач на соревнование, удовлетворяющий написанным выше требованиям.
Первая строка содержит три целых числа n (1 ≤ n ≤ 300) — количество задач, d (1 ≤ d ≤ 50) — количество уровней сложности задач и m (1 ≤ m ≤ 18) — количество различных тем. Далее, в n строках задается описание задач.
Каждая задача задается в следующем формате: ci ki ti1 ti2 ... tiki, где ci (1 ≤ ci ≤ d) — сложность i-й задачи, ki (0 ≤ ki ≤ m) — количество тем, которые затрагивает данная задача, tij (1 ≤ tij ≤ m) — темы, которые затрагивает i-я задача. Внутри одной задачи все tij различны.
Выведите в первой строке «OK», если требуемый набор задач найден, и «Impossible» в противном случае. Если ответ есть, выведите в следующей строке d целых чисел — номера задач, которые входят в требуемый набор.
4 2 3 1 1 1 1 2 1 2 2 2 1 2 2 2 2 3
OK 1 4