FISHES
  • Фишки
    FISHES


Описание
Последовательность клеток занумерована числами от 1 до N. В каждой клетке стоит либо черная, либо белая фишка. Группой назовем набор подряд стоящих фишек одного цвета, ограниченный с обеих сторон фишками другого цвета или концами последовательности. Следует переместить фишки так, чтобы они образовали не более двух групп.

Перемещение фишек описывается с помощью плана обмена, в котором используются понятия операция обмена и шаг. Операция обмена меняет местами две соседние группы фишек. Шаг состоит не более чем из K одновременно выполняемых обменов. Обмены можно совершать одновременно только тогда, когда в них участвуют разные группы. После каждого шага группы одного цвета, оказавшиеся рядом, объединяются. План обменов содержит описания шагов, выполняемых последовательно.



Задача
Напишите программу, определяющую план обменов, с помощью которого за наименьшее число шагов получается последовательность, состоящая не более чем из двух групп.

Технические характеристики:

Имя входного файла: FISHES.IN
Имя выходного файла: FISHES.OUT
Ограничение по времени: 2 секунды
Ограничение по памяти: 32 мегабайта

Формат входных данных
В первой строке входного файла записаны числа N и K (1<=N<=100000 и 1<=K<=10000). Исходная расстановка фишек задается в последующих строках, содержащих N чисел (0 или 1), разделенных пробелами или переводами строк. При этом 0 соответствует черной фишке, 1 - белой.

Формат выходных данных

Выходной файл должен содержать описание шагов плана, по одному шагу на строке. Описание шага начинается с числа L - количества обменов на этом шаге. Затем для каждого обмена указывается минимальный номер клетки, в которой стоит фишка, участвующая в этом обмене. Последняя строка плана должна содержать одно число 0.

Примеры:

 FISHES.IN  FISHES.OUT
 9  3
 1  0  0  1  1
 0  1  1  0 
 2  1  6
 1  1
 0



 

 FISHES.IN  FISHES.OUT
 3  1
 1  1  0
  0


Примечание

Требуется найти план, содержащий наименьшее число шагов, при этом общее число обменов может быть не минимальным