atcoder#ABC171E. [ABC171E] Red Scarf

[ABC171E] Red Scarf

配点 : 500500

問題文

猫のすぬけくんが N(偶数)N (\textbf{偶数}) 匹います。各すぬけくんには 1,2,,N1, 2, \ldots, N の番号が振られています。

各すぬけくんは首に赤いスカーフを巻いており、スカーフにはそのすぬけくんが一番好きな非負整数が 11 つ書き込まれています。

すぬけくんたちは最近、整数の xor(排他的論理和)と呼ばれる演算を覚えました。

xor とは

nn 個の非負整数 x1,x2,,xnx_1,x_2, \ldots, x_n について、それらの xor、 $x_1 \sim \textrm{xor} \sim x_2 \sim \textrm{xor} \sim \ldots \sim \textrm{xor} \sim x_n$ は以下のように定義されます。

  • $x_1 \sim \textrm{xor} \sim x_2 \sim \textrm{xor} \sim \ldots \sim \textrm{xor} \sim x_n$ を二進表記した際の 2k(k0)2^k(k \geq 0) の位の数は、x1,x2,,xnx_1,x_2, \ldots, x_n のうち、二進表記した際の 2k(k0)2^k(k \geq 0) の位の数が 11 となるものの個数が奇数ならば 11、そうでなければ 00 となる。

例えば、3xor5=63 \sim \textrm{xor} \sim 5 = 6 となります。

早速この演算を使いたくなったすぬけくんたちは、自分以外のすぬけくんのスカーフに書かれた整数の xor を計算することにしました。

番号 ii が振られたすぬけくんが計算した、自分以外のすぬけくんのスカーフに書かれた整数の xor が aia_i であることが分かっています。 この情報を元に、各すぬけくんのスカーフに書かれた整数を特定してください。

制約

  • 入力はすべて整数である
  • 2N2000002 \leq N \leq 200000
  • NN偶数\textbf{偶数}
  • 0ai1090 \leq a_i \leq 10^9
  • 与えられた情報と整合するようなスカーフ上の整数の組合せが存在する

入力

入力は以下の形式で標準入力から与えられる。

NN

a1a_1 a2a_2 \ldots aNa_N

出力

11 行に NN 個の整数を空白区切りで出力せよ。

このうち左から ii 番目の整数は、番号 ii が振られたすぬけくんのスカーフに書かれた整数を表すものとする。

与えられた条件を満たす解が複数存在する場合、どれを出力しても構わない。

4
20 11 9 24
26 5 7 22
  • $5 \sim \textrm{xor} \sim 7 \sim \textrm{xor} \sim 22 = 20$
  • $26 \sim \textrm{xor} \sim 7 \sim \textrm{xor} \sim 22 = 11$
  • $26 \sim \textrm{xor} \sim 5 \sim \textrm{xor} \sim 22 = 9$
  • $26 \sim \textrm{xor} \sim 5 \sim \textrm{xor} \sim 7 = 24$

より、この出力は与えられた情報と整合します。