Побудуйте масив#11668

Побудуйте масив

1 секунда
128 мегабайтів
Складна

Алі з нуля любить створювати новий масив. Сьогодні він хоче побудувати масив a_1, a_2, ..., a_n з елементів. Спочатку у нього є масив b_1, b_2, ..., b_n, який містить нулів, і він може застосовувати до цього масиву лише наступні операції:

Тепер Алі думає над тим, за яке мінімальне число операцій він зможе отримати масив . Допоможіть Алі знайти мінімальну кількість операцій і будь-яку послідовність таких операцій.

Вхідні дані

Перший рядок містить одне ціле число n~(1 \le n \le 10^5). Наступний рядок містить цілих чисел a_1, a_2, ..., a_n~(0 \le a_i \le 10^9).

Вихідні дані

Виведіть мінімальну кількість операцій, необхідну для отримання масиву у першому рядку. Позначимо це число через . Виведіть будь-яку таку послідовність операцій у наступних рядках у форматі .

Приклади

Приклад 1. Подивіться, як змінюється масив у міру застосування операцій:

b[] = 0 0 0 0 0 0 0 0
b[] = 1 1 1 0 0 0 0 0
b[] = 1 7 1 0 0 0 0 0
b[] = 1 7 1 7 7 0 0 0
b[] = 1 7 1 7 7 2 2 2
b[] = 1 7 1 7 7 3 2 2
b[] = 1 7 1 7 7 3 2 3

Неможливо отримати даний масив менш ніж за операцій. Можуть бути й інші правильні варіанти послідовності операцій.

Приклад 2.

b[] = 0 0 0 0 0 0 0
b[] = 0 0 1 1 1 1 0
b[] = 0 0 1 3 3 1 0

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading