M - Make Palindromic Prefixes

2 secs 1024 MB
uni_kakurenbo

マルチテストについての説明はこちら (サンプル問題を確認されていない方のみお読みください。)


配点:

問題文


個の整数 があります.

また,任意の非負整数列 に対して次の操作を 回以上好きなだけ行えます:

  • かつ なる 整数 を自由に選び, で置き換える.
    • なお, 非負整数 に対して bitwise OR を表す.
  • このときちょうど だけコストがかかる.

なる整数 それぞれについて,以下の互いに独立した問題を解いてください:

  • 数列 を回文にするために必要なコストの総和の最小値を求めよ.
    • なお,列 が回文であるとは, なる任意の に対して が満たされることを指す.

制約


  • 入力はすべて整数

入力


各テストケースの入力は,それぞれ以下の形式で与えられる:


出力


個の整数を空白もしくは改行区切りで出力せよ.
番目には に対する問題の答えを出力せよ.

サンプル


入力例1
1
5
0 1 2 3 4
出力例1
0 1 2 6 6

たとえば のとき, であり として順に 回の操作を行うことで となり条件を満します.
このとき 回の操作でかかるコストの総和は で,これ未満のコストで目標は達成できないため, が答えです.


入力例2
2
10
0 0 0 0 0 0 0 0 0 0
9
9 9 8 2 4 4 3 5 3
出力例2
0 0 0 0 0 0 0 0 0 0
0 0 1 12 24 36 35 40 39

提出


Go (1.14)