Вася с Петей используют интересную структуру для хранения данных, пирамиду.
Пирамида состоит из n рядов, в i-том из них содержится i ячеек. Каждый ряд сдвинут относительно предыдущего на половину длины ячейки влево. Ячейки пирамиды пронумерованы от 1 до
так, как показано на рисунке ниже.
Пример пирамиды при n = 5:
Эта структура данных умеет выполнять операции двух видов:
- Изменить значение конкретной ячейки. Описывается тремя числами: "t i v", где t = 1 (тип операции), i — номер ячейки, которую нужно изменять и v — значение, которое нужно в нее записать.
- Изменить значение в некоторой подпирамиде, на изображении выделена подпирамида с вершиной в 5 ячейке. Описывается s + 2 числами: "t i v1 v2 ... vs", где t = 2, i — номер ячейки, которая является вершиной подпирамиды, s — размер подпирамиды (количество ячеек в ней), vj — значение, которое необходимо присвоить j-той ячейке подпирамиды.
Формально: подпирамида с вершиной в i-той ячейке k-того ряда (5 ячейка = вторая ячейка третьего ряда) будет содержать ячейки из рядов от k до n, в (k + p)-том из них — ячейки ряда от i-той до (i + p)-той (0 ≤ p ≤ n - k).
У Васи и Пети было две одинаковые пирамиды. Вася в своей пирамиде изменил некоторые ячейки и теперь хочет передать изменения Пете. Для этого он хочет найти последовательность операций, при помощи которой можно повторить все сделанные им изменения, однако, среди всех возможных последовательностей необходимо выбрать самую короткую (содержащую минимальное количество чисел).
Вам дана пирамида из n рядов, в которой k ячеек были изменены. Найдите последовательность операций, после которой каждая из k измененных ячеек будет также изменена как минимум одной из операций. Среди всех возможных последовательностей выберите содержащую минимальное количество чисел.
Примечание
Одно из возможных решений первого примера состоит из двух операций:
2 4 v4 v7 v8
2 6 v6 v9 v10
На изображении измененные ячейки выделены другим цветом, голубым цветом выделена подпирамида, используемая первой операцией, желтым — второй: