...Затем Вадим принялся писать очередное условие, как вдруг...
У некоторого контеста появилось N спонсоров, причём каждый из них хочет увидеть название своей компании в условиях ровно si различных задач. Однако участники этого контеста не хотят видеть в одном и том же условии отсылки более чем к K-м различным спонсорам.
Жюри, несомненно, могут справиться с такими требованиями, но у них возник вопрос другого рода. Пока неизвестно, сколько задач будет в контесте, но вписать название компании можно в любое из условий (например, «ФИИТ»). Жюри не хотят много работать, поэтому хотят разработать наименьшее возможное количество задач, удовлетворив пожелания спонсоров и не разочаровав участников контеста.
Однако же сейчас жюри занято придумыванием идей для комплекта, поэтому задача посчитать это количество задач достаётся Вам. А, в дополнение к этому, приведите пример распределения спонсоров по условиям задач из такого контеста.
Исходные данные
В первой строке даны два целых числа N и K — пожелания спонсоров и пожелания участников (1 ≤ N, K ≤ 1000).
Во второй строке через пробел даны N целых чисел si — пожелания каждого спонсора (1 ≤ si ≤ 1000).
Гарантируется, что суммарно количество пожеланий спонсоров не превосходит 105.
Результат
В первой строке выведите минимальное количество задач в контесте M.
В следующих M строках опишите спонсоров для каждой из задач отдельно. Вначале выведите ki — количество спонсоров в условии i-й задаче, а дальше через пробел выведите ki номеров этих спонсоров. Спонсоры у одной задачи не должны повторяться.
Пример
исходные данные | результат |
---|
5 2
1 1 1 1 1
| 3
1 5
2 2 3
2 4 1
|
Автор задачи: Валентин Зуев
Источник задачи: Уральская командная олимпиада по программированию 2022