L - Square Connection Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MiB

配点 : 100

問題文

正の整数 s,t が与えられます。あなたは以下の操作を 0 回以上好きな回数行うことができます。

  • 1 以上 4 \times 10^{18} 以下の整数 u であって s+u が平方数であるものを選び、su で置き換える

st に一致させるために必要な操作の回数の最小値、およびその方法を一つ求めてください。

形式的には、以下を全て満たす長さ K の整数列 (u_1,u_2,\dots,u_K) を一つ求めてください。

  • Kst に一致させるために必要な操作回数の最小値
  • i=1,2,\dots,K に対して 1 \leq u_i \leq 4 \times 10^{18}
  • u_0=s とすると i=1,2,\dots,K に対して u_{i-1}+u_i は平方数
  • u_K=t

なお、本問の制約の下で 10^6 回以下の操作で st に一致させる操作方法が必ず存在することが証明できます。

T 個のテストケースが与えられるので、それぞれについて答えを求めてください。

制約

  • 1 \leq T \leq 3 \times 10^5
  • 1 \leq s, t \leq 10^9
  • s \ne t
  • 1 つの入力ファイルに対する必要な操作回数 (=K) の総和は 10^6 以下
  • 入力は全て整数

入力

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

T
\text{case}_1
\text{case}_2
\vdots
\text{case}_T

ここで \text{case}_ii 番目のテストケースを表し、各テストケースは以下の形式で与えられる。

s t

出力

T 行出力せよ。i 行目には i 個目のテストケースに対する答えを以下の形式で出力せよ。

K u_1 u_2 \dots u_K

答えが複数ある場合はどれを出力しても正解とみなされる。


入力例 1

3
8 3
20 24
998236771 998244353

出力例 1

2 1 3
3 5 76 24
1 998244353

1 つ目のテストケースについて、8+1=9,1+3=4 はともに平方数です。また、1 回の操作で 83 にすることは出来ません。