C. Карта кобры
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Однажды летом Ёжик отправился в Индокитай, чтобы познакомиться с местными достопримечательностями и найти своих сородичей. Прогуливаясь по джунглям в поисках сородичей, он нашёл кобру и решил её почесать.

Из надёжных источников Ёжик узнал, что кобра делится на $$$n$$$ последовательных сегментов, пронумерованных от $$$1$$$ до $$$n$$$. За один шаг Ёжик может выбрать какой-то один сегмент и почесать его. Ёжик может почесать несколько сегментов один за другим, однако кобра не всегда этому рада. Непосредственно после того, как Ёжик почесал $$$i$$$-й сегмент, недовольство кобры становится равным $$$a_i$$$, и Ёжик не может почесать никакой из первых $$$a_i$$$ сегментов. Иными словами, если Ёжик подряд чешет сегменты $$$i$$$, затем $$$j$$$, то должно выполняться $$$j \gt a_i$$$.

Вместе с тем Ёжик знает, что ночью недовольство кобры опускается до нуля, и на следующее утро кобра снова позволит почесать любой сегмент независимо от того, какой сегмент Ёжик чесал последним в предыдущий день.

Как опытный исследователь, Ёжик решил почесать каждый сегмент кобры ровно по одному разу, даже если на это понадобится несколько дней. Определите, какое минимальное количество дней ему понадобится. Выведите это количество и для каждого дня выведите сегменты, которые в этот день в выбранном вами порядке нужно почесать.

Входные данные

В первой строке задано одно целое число $$$n$$$ ($$$1 \leq n \leq 3 \cdot 10^5$$$) — количество сегментов.

В следующей строке заданы $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$0 \leq a_i \leq n$$$), где $$$a_i$$$ — количество недоступных сегментов после выбора $$$i$$$-го.

Выходные данные

В первой строке выведите минимальное количество дней $$$t$$$, которое нужно, чтобы почесать все сегменты.

Далее выведите $$$t$$$ строк. В $$$i$$$-й строке выведите целое неотрицательное число $$$k_i$$$, затем $$$k_i$$$ целых чисел — номера сегментов, которые нужно почесать в $$$i$$$-й день в соответствующем порядке.

Если существуют несколько оптимальных решений, выведите любое.

Система оценки

Каждый пройденный тест оценивается независимо некоторым количеством баллов. Все тесты разделены на группы, в большинстве из них есть дополнительные ограничения на входные данные. Ниже приведена таблица, где указаны эти ограничения и суммарная стоимость тестов в каждой группе.

ГруппаДоп. ограниченияБаллы
$$$1$$$$$$n \le 8$$$$$$10$$$
$$$2$$$$$$n \le 17$$$$$$7$$$
$$$3$$$$$$a_i \ge i$$$$$$15$$$
$$$4$$$$$$a$$$ содержит все числа от $$$0$$$ до $$$n-1$$$$$$8$$$
$$$5$$$Гарантируется, что существует ответ с $$$t = 1$$$$$$30$$$
$$$6$$$$$$30$$$
Примеры
Входные данные
4
3 2 4 4
Выходные данные
2
2 2 3 
2 1 4 
Входные данные
5
5 1 1 1 2
Выходные данные
2
4 5 4 3 2 
1 1 
Примечание

В первом примере Ёжик может почесать кобру за $$$2$$$ дня, например, так.

  • В начале первого дня недовольство кобры равно $$$0$$$.
  • Ёжик выбирает $$$1$$$-й сегмент кобры, недовольство кобры становится равным $$$3$$$.
  • Ёжик выбирает $$$4$$$-й участок кобры, недовольство кобры становится равным $$$4$$$. Больше Ёжик не может выбрать никакой сегмент в этот день.
  • Во второй день недовольство кобры снова становится равным $$$0$$$, поэтому можно выбрать любой сегмент.
  • Ёжик сначала выбирает $$$2$$$-й участок кобры, недовольство кобры становится равным $$$2$$$.
  • Затем Ёжик выбирает $$$3$$$-й участок кобры, недовольство кобры становится равным $$$4$$$.