#arc100c. [arc100_c]Or Plus Max

[arc100_c]Or Plus Max

题目描述

有一个长度为2N2^N的整数序列A0,A1,...,A2N1A_0, A_1, ..., A_{2^N-1}。注意,序列是以00为起始索引的。

对于满足1K2N11 \leq K \leq 2^N-1的每个整数KK,解决以下问题:

  • iijj为整数。找到满足0i<j2N10 \leq i < j \leq 2^N-1(i(i oror j)Kj) \leq KAi+AjA_i + A_j的最大值,这里的oror表示按位或运算。

约束条件

  • 1N181 \leq N \leq 18
  • 1Ai1091 \leq A_i \leq 10^9
  • 输入中的所有值均为整数。

输入

输入以以下格式从标准输入给出:

NN A0A_0 A1A_1 ...... A2N1A_{2^N-1}

输出

打印出2N12^N-1行。第ii行打印出上述问题中K=iK=i时的答案。

示例输入 1

2
1 2 3 1

示例输出 1

3
4
5

对于K=1K=1,唯一可能的iijj的组合是(i,j)=(0,1)(i,j)=(0,1),所以答案是A0+A1=1+2=3A_0+A_1=1+2=3

对于K=2K=2,可能的iijj的组合是(i,j)=(0,1),(0,2)(i,j)=(0,1),(0,2)。当(i,j)=(0,2)(i,j)=(0,2)时,Ai+Aj=1+3=4A_i+A_j=1+3=4。这是最大值,所以答案是44

对于K=3K=3,可能的iijj的组合是(i,j)=(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)(i,j)=(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)。当(i,j)=(1,2)(i,j)=(1,2)时,Ai+Aj=2+3=5A_i+A_j=2+3=5。这是最大值,所以答案是55

示例输入 2

3
10 71 84 33 6 47 23 25

示例输出 2

81
94
155
155
155
155
155

示例输入 3

4
75 26 45 72 81 47 97 97 2 2 25 82 84 17 56 32

示例输出 3

101
120
147
156
156
178
194
194
194
194
194
194
194
194
194