Дерево Фенвіка#6233

Дерево Фенвіка

3 секунди
256 мегабайтів
Дуже легка

Дерево Фенвіка — це структура даних, яка ефективно підтримує префіксні суми.

Для числа позначимо як найбільше , таке що ділиться на 2^k. Наприклад, h(24) = 3, h(5) = 0. Нехай l(t) = 2^{h(t)}; наприклад, l(24) = 8, l(5) = 1.

Розглянемо масив a_1, a_2, \ldots, a_n цілих чисел. Деревом Фенвіка для цього масиву є масив b_1, b_2, \ldots, b_n такий, що

Таким чином:

Наприклад, деревом Фенвіка для масиву

a = (3, -1, 4, 1, -5, 9)

є масив

b = (3, 2, 4, 7, -5, 4).

Називатимемо масив само-Фенвіком, якщо він збігається із своїм деревом Фенвіка. Наприклад, масив вище не є само-Фенвіком, а масив a = (0, -1, 1, 1, 0, 9) є таким.

Задано масив . Дозволяється змінити значення деяких елементів (не змінюючи їх порядок), щоб отримати новий масив a', який має бути само-Фенвіком. Знайдіть спосіб це зробити, змінивши якомога менше елементів.

Вхідні дані

Перший рядок містить (1 \le n \le 100000) — кількість елементів у масиві. Другий рядок містить цілих чисел — елементи масиву. Значення елементів за модулем не перевищують 10^9.

Вихідні дані

Виведіть чисел — елементи масиву a'. Якщо існує кілька розв'язків, виведіть будь-який.

Приклади

Приклад 1

Loading
Loading