B41 - Reverse of Euclid Editorial /

Time Limit: 10 sec / Memory Limit: 1024 MB

配点: 1000

問題文

変数 x, y があり、最初は両方の値が 1 です。以下の 2 種類の操作を何回か行うことで、変数 x の値を X, 変数 y の値を Y にする方法を求めてください。

  • x の値を x + y に変更する
  • y の値を x + y に変更する

ただし XY の最大公約数は 1 であるとします。

制約

  • 1 \leq X, Y \leq 10^6
  • XY の最大公約数は 1 である

入力

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

X Y

出力

以下の形式で出力してください。

K
x_1 y_1
x_2 y_2
\vdots
x_K y_K

ここで、K は操作回数、x_i, y_ii 回目の操作後の x, y の値を表します。


入力例 1

5 2

出力例 1

3
1 2
3 2
5 2
  • 1 回目の操作では y の値を x + y に変更します。x, y1, 2 になります
  • 2 回目の操作では x の値を x + y に変更します。x, y3, 2 になります
  • 3 回目の操作では x の値を x + y に変更します。x, y5, 2 になります

入力例 2

1 1

出力例 2

0