Задачі
Побудуйте масив
Побудуйте масив
Алі з нуля любить створювати новий масив. Сьогодні він хоче побудувати масив $a_1, a_2, ..., a_n$ з $n$ елементів. Спочатку у нього є масив $b_1, b_2, ..., b_n$, який містить $n$ нулів, і він може застосовувати до цього масиву лише наступні операції:
\begin{itemize}
\item $MAX(l, r, x)$: Це означає, що $b_i = max(b_i, x)$ для всіх $i$, що задовольняють умові $l \le i \le r$. Звісно, у цій операції повинна виконуватися умова $1 \le l \le r \le n$.
\end{itemize}
Тепер Алі думає над тим, за яке мінімальне число операцій він зможе отримати масив $a$. Допоможіть Алі знайти мінімальну кількість операцій і будь-яку послідовність таких операцій.
\InputFile
Перший рядок містить одне ціле число $n~(1 \le n \le 10^5)$. Наступний рядок містить $n$ цілих чисел $a_1, a_2, ..., a_n~(0 \le a_i \le 10^9)$.
\OutputFile
Виведіть мінімальну кількість операцій, необхідну для отримання масиву 𝑎 у першому рядку. Позначимо це число через $m$. Виведіть будь-яку таку послідовність операцій у наступних 𝑚 рядках у форматі $l~r~x$.
\Examples
\textbf{Приклад 1.} Подивіться, як змінюється масив при застосуванні операцій:
\begin{lstlisting}[language=C++]
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
\end{lstlisting}
Неможливо отримати заданий масив менше, ніж за $6$ операцій. Можуть бути інші правильні варіанти послідовності операцій.
\textbf{Приклад 2.}
\begin{lstlisting}[language=C++]
b[] = 0 0 0 0 0 0 0
b[] = 0 0 1 1 1 1 0
b[] = 0 0 1 3 3 1 0
\end{lstlisting}
Вхідні дані #1
8 1 7 1 7 7 3 2 3
Вихідні дані #1
6 1 8 1 2 2 7 4 8 2 4 6 3 4 5 7 8 8 3
Вхідні дані #2
7 0 0 1 3 3 1 0
Вихідні дані #2
2 3 6 1 4 5 3