给定一个含有 $N$ 个整数的数组 $A_1, A_2, \dots, A_N$。对于每个 $M$ ($1 \le M \le N$),解决以下问题:
- 将数组划分为恰好 $M$ 个连续的子段。
- 每个子段的代价是其内部所有元素的按位异或(XOR)和。划分的代价是所有子段代价的按位或(OR)和。
- 求划分的最小代价。
输入格式
第一行包含一个整数 $N$ ($1 \le N \le 10^6$)。
第二行包含 $N$ 个空格分隔的整数 $A_1, A_2, \dots, A_N$ ($0 \le A_i \le 10^6$)。
输出格式
输出一行,包含 $N$ 个整数。其中第 $i$ 个整数表示 $M = i$ 时的问题答案。
样例
输入样例 1
6 0 3 10 2 4 5
输出样例 1
10 10 11 11 11 15
输入样例 2
4 0 1 0 1
输出样例 2
0 0 1 1