D. Декодирование числовых последовательностей
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Поликарп разрабатывает метод передачи $$$n$$$ числовых последовательностей по сети. Этот метод должен поддерживать передачу произвольного количества числовых последовательностей, последовательности могут иметь разные длины. Последовательности содержат произвольные неотрицательные целые числа.

Поликарп разработал следующий метод кодирования:

  • Будем считать, что последовательности пронумерованы от $$$1$$$ до $$$n$$$.
  • Допишем к каждой последовательности в конец специальный маркер окончания последовательности — элемент равный -1.
  • Результат кодирования — это одна новая последовательность, которая содержит в себе все элементы заданных $$$n$$$ в специальном порядке: сначала добавим в результат кодирования все первые элементы последовательностей (в порядке от $$$1$$$-й до $$$n$$$-й), затем все вторые элементы (в порядке от $$$1$$$-й до $$$n$$$-й) и так далее, если у последовательности нет очередного элемента, то она просто пропускается. Процесс заканчивается, когда добавлены все элементы всех последовательностей.

Например, если требуется закодировать три последовательности $$$[3, 1, 4]$$$, $$$[2, 7]$$$ и $$$[1, 2, 3, 4]$$$, то последовательность действий будет такая:

  • модифицируем все три последовательности, добавив туда по -1: $$$[3, 1, 4, -1]$$$, $$$[2, 7, -1]$$$ и $$$[1, 2, 3, 4, -1]$$$;
  • выпишем все первые элементы, получим $$$[3, 2, 1]$$$;
  • затем выпишем все вторые элементы, получим $$$[3, 2, 1, 1, 7, 2]$$$;
  • затем выпишем все третьи элементы, получим $$$[3, 2, 1, 1, 7, 2, 4, -1, 3]$$$;
  • затем выпишем все четвёртые элементы, получим $$$[3, 2, 1, 1, 7, 2, 4, -1, 3, -1, 4]$$$ (обратите внимание, что вторая последовательность уже закончилась);
  • затем выпишем все пятые элементы, получим $$$[3, 2, 1, 1, 7, 2, 4, -1, 3, -1, 4, -1]$$$ (обратите внимание, что первая и вторая последовательности уже закончились);
  • теперь закончились все последовательности, и процесс кодирования завершается;
  • результат кодирования равен $$$[3, 2, 1, 1, 7, 2, 4, -1, 3, -1, 4, -1]$$$.

Ваша задача — реализовать декодирование по заданному результату кодирования.

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

В первой строке записано целое число $$$m$$$ ($$$1 \le m \le 3\cdot10^5$$$) — длина результата кодирования. Далее во второй строке записан результат кодирования в виде последовательности целых чисел $$$b_1, b_2, \dots, b_m$$$ ($$$-1 \le b_i \le 100$$$).

Гарантируется, что в последовательностях до кодирования были только неотрицательные целые числа от $$$0$$$ до $$$100$$$, что вам в самом деле задан результат корректного кодирования (иными словами, гарантируется, что ответ существует). Возможно, что одна или несколько последовательностей до кодирования были пусты.

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

Выведите $$$n$$$, где $$$n$$$ — количество закодированных последовательностей. Далее выведите $$$n$$$ строк в формате $$$k_i, a_{i1}, a_{i2}, \dots, a_{ik_i}$$$, где $$$k_i$$$ — длина $$$i$$$-й последовательности, а $$$a_{i1}, a_{i2}, \dots, a_{ik_i}$$$ — её элементы. Числа в строках разделяйте пробелами. Обратите внимание, что кодирование устроено таким образом, что ответ всегда определён однозначно.

Примеры
Входные данные
12
3 2 1 1 7 2 4 -1 3 -1 4 -1
Выходные данные
3
3 3 1 4
2 2 7
4 1 2 3 4
Входные данные
6
2 -1 2 -1 3 -1
Выходные данные
3
1 2
0
2 2 3