Мир в опасности.
Вам интересно, какая беда грозит нам на этот раз? Это неважно! Ведь в нашем мире есть супергерои, целых n,
и они способны победить любые силы зла!
Чтобы спасти мир, нужна сплочённая команда, но не любая компания супергероев может ей стать.
Например, супергерою-аналитику нужно, по крайней мере, двое товарищей, чтобы в должной мере раскрыть талант,
а супергерой-универсал может и в одиночку сделать всё, что требуется.
Для каждого героя известен минимальный размер команды ai, в которой он хочет работать.
Команда считается эффективной, если удовлетворены пожелания всех входящих в неё супергероев.
Эффективная команда является сплочённой, если при добавлении любого не задействованного в этой команде героя команда перестанет быть эффективной.
Эффективная команда, состоящая из всех героев, также является сплочённой.
Всему миру очень хочется узнать, сколько существует различных сплочённых эффективных команд супергероев.
Исходные данные
В первой строке входных данных единственное целое число n — количество супергероев в мире
(1 ≤ n ≤ 1 000). В следующих n строках по одному в строке целые
числа ai — пожелания героев (1 ≤ ai ≤ 1 000).
Результат
В первой строке выведите число k — количество различных сплочённых команд, которые можно собрать из данных героев.
В следующих k строках выведите описания этих команд. Каждое описание состоит из количества
героев в команде и их номеров во входных данных. Сами команды и номера героев в них можете выводить в произвольном порядке.
Герои нумеруются с единицы в том же порядке, как и во входных данных.
Пример
исходные данные | результат |
---|
5
1
3
3
6
6
| 2
1 1
3 2 1 3
|
Автор задачи: Григорий Назаров
Источник задачи: Уральская региональная командная олимпиада по программированию 2012