Fenwick Tree#6233

Fenwick Tree

3 seconds
256 megabytes
Very easy

Fenwick tree is a data structure effectively supporting prefix sum queries.

For a number denote as maximal such that is divisible by 2^k. For example, h(24) = 3, h(5) = 0. Let l(t) = 2^{h(t)}, for example, l(24) = 8, l(5) = 1.

Consider array a_1, a_2, ..., a_n of integer numbers. Fenwick tree for this array is the array b_1, b_2, ..., b_n such that

So

For example, the Fenwick tree for the array

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

is the array

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

Let us call an array self-fenwick if it coincides with its Fenwick tree. For example, the array above is not self-fenwick, but the array a = (0,-1, 1, 1, 0, 9) is self-fenwick.

You are given an array . You are allowed to change values of some elements without changing their order to get a new array a' which must be self-fenwick. Find the way to do it by changing as few elements as possible.

Input

The first line of the input file contains — the number of elements in the array (1 \le n \le 100000). The second line contains integer numbers — the elements of the array. The elements do not exceed 10^9 by their absolute values.

Output

Output numbers — the elements of the array a'. If there are several solutions, output any one.

Examples

Example 1

Loading
Loading