#arc0212. [arc021_2]Your Numbers are XORed...

[arc021_2]Your Numbers are XORed...

問題文

小学 NN 年生になったばかりの妹は、授業で 排他的論理和 というものについて学びました。

排他的論理和とは、例えば非負整数 PPQQ の排他的論理和を RR としたとき、以下のように定義されます。

  • RR22 進数表記したときの 2k2^k (0k0 ≦ kkk は整数) の位の値は、PP22 進数表記したときの 2k2^k の位の値を ppQQ22 進数表記したときの 2k2^k の位の値を qq としたとき、pp=qq なら 00ppqq なら 11 となります。

具体的には、3355 の排他的論理和の値は、3322 進数表記が 0110115522 進数表記が 101101 のため、22 進数表記が 110110 となる 66 が排他的論理和の値となります。

排他的論理和の素晴らしさを知った妹は、嬉しさの余り、周囲にあった非負整数の値を手当たり次第に排他的論理和された値に書き換えました。

ところが、その中には兄が提出する予定の書類が入っていたのです!

兄は外出中なので、今のうちに元の数列に復元することにしました。手がかりとして、以下のことが分かっています。

  • 書類には LL 個の非負整数 A1A_1A2A_2,…,ALA_L が書いてありました。これらの数は今や書類には書き残されていません。妹の目的は、これらの数を知ることです。
  • 書類には LL 個の非負整数 B1B_1B2B_2,…,BLB_L が書いてあります。これらの数は書類に書き残されているので知ることができます。

B1B_1B2B_2,…,BLB_L は、以下の定義で表される数です。

  • 1iL11 ≦ i ≦ L-1 を満たす整数 ii に関して、BiB_i の値は AiA_iAi+1A_{i+1} を排他的論理和した値に等しい。
  • BLB_L の値は ALA_LA1A_1 を排他的論理和した値に等しい。

大変残念なことに場合によっては該当する元の数列が存在しないことや、複数通り存在する場合があります。どうしましょう!

困った妹は、今日の占いのラッキーアイテムが辞書であったことを思い出しました。辞書、じしょ、辞書順…

最終的に、以下のルールを追加することにしました。

  • 該当する元の数列が存在しない場合は、仕方がないので存在しないむねを示す -1 を答えとします。
  • 該当する元の数列が複数存在する場合は、辞書順最小な数列を出力します。

ここで、22 つの数列 S1S_1S2S_2,…,SLS_LT1T_1T2T_2,…,TLT_L に関して、 S1S_1S2S_2,…,SLS_LT1T_1T2T_2,…,TLT_L より辞書順で小さいというのは、以下の条件を満たす場合とします。

  • ある整数 ii (1iL1 ≦ i ≦ L) に関して、1ji11 ≦ j ≦ i-1 を満たすどの整数 jj に関しても Sj=TjS_j=T_j が成立し、かつ SiTiS_i<T_i が成立する。

あなたは妹の代わりに上記の条件を満たす数列を出力するプログラムを作成してください。


入力

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

LL B1B_1 B2B_2 : BLB_L

  • 11 行目には、書類に書かれている数字の個数を表す整数 L(2L105)L (2 ≦ L ≦ 10^5) が与えられる。
  • 22 行目から LL 行では、書類に残されている非負整数について書かれている。このうち ii 行目では整数 Bi(0Bi231)B_i (0 ≦ B_i < 2^{31}) が与えられる。

出力

元の非負整数列 A1A_1A2A_2,…,ALA_L として考えられるものが存在する場合は、それらのうち辞書順最小なものを LL 行にわたって出力せよ。このうち ii 行目には整数 AiA_i を出力せよ。存在しない場合は -1 を出力せよ。出力の末尾にも改行を入れること。


入力例1


2
1
1

出力例1


0
1

A1A_1A2A_2 を排他的論理和した値が 11 となるものが正解になります。このような 22 つの数は複数通りありますが,A1=0A_1=0A2=1A_2=1 を満たす場合が辞書順最小になります。


入力例2


3
1
4
1

出力例2


-1

条件を満たす元の数列は存在しません。きっとどこかで誤った操作をしたのでしょう。


入力例3


3
1
2
3

出力例3


0
1
3