問題文

2つの非負整数p,qp,qが与えられるので、{a+b=pab=q\left\{\begin{array}{l}a+b=p \\ a\oplus b=q \end{array}\right.を満たす非負整数の組(a,b)(a,b)を全て求めて下さい。(ただし、\oplusは排他的論理和を意味します。)なお、この問題では条件を満たす(a,b)(a,b)の組が100個以下となるようなテストケースしか与えられません。

制約

  • 0p,q<2600\leq p,q<2^{60}
  • 入力は全て整数
  • 条件を満たす(a,b)(a,b)の組が100個以下

入力

入力は以下の形式で与えられます。\\

p q

出力

条件を満たす(a,b)(a,b)の組数がMMである時、以下のように出力して下さい。ただし、M2M\geq2の時はaaの値が小さい順に並び替えて出力して下さい。

M
a_1 b_1
a_2 b_2
...
a_M b_M

サンプル

入力1
5 1
出力1
2
2 3
3 2

2+3=3+2=5, 23=32=12+3=3+2=5,\ 2\oplus3=3\oplus2=1となります。


入力2
1 2
出力2
0

条件を満たす(a,b)(a,b)の組は存在しないこともあります。


入力3
31415926535 7
出力3
8
15707963264 15707963271
15707963265 15707963270
15707963266 15707963269
15707963267 15707963268
15707963268 15707963267
15707963269 15707963266
15707963270 15707963265
15707963271 15707963264

入力及び出力は3232bit整数に収まらない場合もあります。

Submit


Go (1.21)