#P17485. PM8030二进制幂象

PM8030二进制幂象

题目描述

一枚特殊的国际象棋“象”从平面上的 (0,0)(0,0) 出发,希望到达 (finishX,finishY)(finishX,finishY)

一次操作可以任选一个非负整数 kk,并把当前位置 (x,y)(x,y) 移动到以下四个位置之一:

  • (x+2k,y+2k)(x+2^k,y+2^k)
  • (x+2k,y2k)(x+2^k,y-2^k)
  • (x2k,y+2k)(x-2^k,y+2^k)
  • (x2k,y2k)(x-2^k,y-2^k)

整条路径中,每个 kk 最多只能使用一次

请构造一条从 (0,0)(0,0) 到目标点的路径,使移动次数最少。输出路径中访问的所有点,包括起点与终点。如果最少移动次数下存在多条路径,则输出字典序最小的点序列。

(x,y)(x,y) 写成字符串 x,y。比较两个字符串时字符顺序为 , < - < 0 < 1 < ... < 9;两个点序列按通常的字典序比较。如果无法到达目标点,则输出空序列。

输入格式

一行输入两个整数 finishX,finishYfinishX,finishY

输出格式

第一行输出整数 mm,表示路径中点的数量。

m>0m>0,接下来输出 mm 行,每行一个形如 x,y 的点,依次表示整条路径。

若目标不可达,输出 0

数据范围

1finishX,finishY1081\le finishX,finishY\le 10^8

样例

输入

8 24

输出

3
0,0
-8,8
8,24