Segment Tree

TODO: more detailed segtree explanation
A segment tree is a binary tree-based data structure that represents a given array or list of elements. Each node in the tree represents a segment or subarray of the original array.
In a segment tree, the root node represents the entire array, and the leaf nodes represent individual elements of the array. The internal nodes of the tree represent segments that are obtained by dividing the array into smaller subarrays.
Typically, if a node represents the subarray [l, r], its left child represents the subarray [l, (l+r)/2], and its right child represents the subarray [(l+r)/2 + 1, r]. This recursive division continues until each leaf node represents a single element of the original array.
The value stored at each node of the segment tree depends on the specific problem or query being addressed. Commonly, segment trees are used to efficiently compute aggregate values such as sums, minimums, maximums, or other operations within a given subarray. The value stored at each node is computed based on the values stored in its child nodes.
Segment trees are particularly useful for solving problems that involve range queries or updates on an array. By constructing a segment tree, we can perform these operations efficiently with a time complexity of O(log N), where N is the size of the original array.
Overall, the segment tree provides a powerful data structure for handling range-based operations on arrays and allows for efficient querying and updating of segments. It finds applications in various algorithms and problems, including interval-based queries, range updates, and more.

Challenge: Iterative Segment Tree Node Calculation

You are given an array of n elements. Your task is to construct a segment tree iteratively and calculate the value of each node in the tree. The value of each node represents the sum of the respective subarray it represents.

Input

The first line of the input contains an integer n (1 ≀ n ≀ 100 000), representing the number of elements in the array.
The second line contains n space-separated integers (), representing the elements of the array.

Output

Print the segment tree with all the values of the nodes. Each level of the segment tree should be printed on a separate line separated by a space.

Examples

Input
Output
4 1 2 3 4
10 3 7 1 2 3 4
8 3 7 9 6 2 1 5 4
37 25 12 10 15 3 9 3 7 9 6 2 1 5 4
Β 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 10 MB

To check your solution you need to sign in
Sign in to continue