Изменения рейтингов за последние раунды временно удалены. Скоро они будут возвращены. ×

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

Задан массив положительных целых чисел. Пока в нем есть хотя бы два одинаковых элемента, будем выполнять следующую операцию. Выберем $$$x$$$ — наименьшее значение, которое встречается в нем $$$2$$$ или более раз. Возьмём два первых вхождения $$$x$$$ в этот массив (два самых левых). Удалим левое из этих двух вхождений, а правое заменим на сумму двух значений (то есть на $$$2 \cdot x$$$).

Определите, как будет выглядеть массив после выполнения описанных операций.

Например, массив изначально был равен $$$[3, 4, 1, 2, 2, 1, 1]$$$. Он будет изменяться следующим образом: $$$[3, 4, 1, 2, 2, 1, 1]~\rightarrow~[3, 4, 2, 2, 2, 1]~\rightarrow~[3, 4, 4, 2, 1]~\rightarrow~[3, 8, 2, 1]$$$.

Если же массив изначально был равен $$$[1, 1, 3, 1, 1]$$$, то он будет изменяться следующим образом: $$$[1, 1, 3, 1, 1]~\rightarrow~[2, 3, 1, 1]~\rightarrow~[2, 3, 2]~\rightarrow~[3, 4]$$$.

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

В первой строке следует целое число $$$n$$$ ($$$2 \le n \le 150\,000$$$) — количество элементов в массиве.

Во второй строке следует последовательность из $$$n$$$ элементов $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le 10^{9}$$$) — описание массива.

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

В первую строку выведите целое число $$$k$$$ — количество элементов в массиве после выполнения операций. Во вторую строку выведите $$$k$$$ целых чисел — описание массива после выполнения операций.

Примеры
Входные данные
7
3 4 1 2 2 1 1
Выходные данные
4
3 8 2 1
Входные данные
5
1 1 3 1 1
Выходные данные
2
3 4
Входные данные
5
10 40 20 50 30
Выходные данные
5
10 40 20 50 30
Примечание

Первые два примера разобраны в условии.

В третьем примере все числа в массиве различные, поэтому он не изменится.