マルチテストについての説明はこちら (サンプル問題を確認されていない方のみお読みください。)
配点:100 点
問題文
以下の事柄を定めます:
- char(0):=
0
,char(1):= 1
.
- 文字列 s に対して s[k] は s の k(1≤k≤∣S∣) 番目の文字.
- 文字列 s に対して rev(s) は s を逆順にした文字列.
- 2 文字列 s,t に対して s+t は s,t をこの順に連結した文字列.
- x<2n なる 2 非負整数 n,x に対して binn(x) は x の n 桁の 2 進数表現.
- より厳密には,binn(x) は長さ n の文字列であって以下の条件を満たすもの:
- 1≤k≤n なる任意の整数 k について binn(x)[k]=char(⌊2n−kx⌋mod2) である.
- たとえば bin8(6)=
00000110
.
N 個の非負整数 A1,A2,…,AN があります.
ただし Ak<216(1≤k≤N) です.
ここで,文字列 S を次のように定めます:
- S:=rev(bin16(A1))+rev(bin16(A2))+⋯+rev(bin16(AN)).
以下の条件をいずれも満たすような,長さ 2N の非負整数列 (B1,B2,…,B2N) を求めてください:
- Bk<28(1≤k≤2N).
- S=rev(bin8(B1))+rev(bin8(B2))+⋯+rev(bin8(B2N)).
答えは必ず一つ存在します.
制約
- 1≤Φ≤105
- 1≤N
- ∑ϕΦϕ(N)≤105
- 0≤Ai<216(1≤i≤N)
- 入力はすべて整数
入力
各テストケースの入力は,それぞれ以下の形式で与えられる:
出力
答えとなる列を,要素ごとに空白もしくは改行で区切って出力せよ.
サンプル
S=rev(0010100100011111
)+rev(0001101000111011
)= 11111000100101001101110001011000
=rev(00011111
)+rev(00101001
)+rev(00111011
)+rev(00011010
) です.
入力例2
4
2
9982 44353
3
998 244 353
5
99 82 44 35 3
9
9 9 8 2 4 4 3 5 3
出力例2
254 38 65 173
230 3 244 0 97 1
99 0 82 0 44 0 35 0 3 0
9 0 9 0 8 0 2 0 4 0 4 0 3 0 5 0 3 0