시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 128 MB 59 9 7 29.167%

문제

바이너리 파워 비숍이 (x, y)에 있다면, (x + 2^k, y + 2^k), (x + 2^k, y - 2^k), (x - 2^k, y + 2^k, x - 2^k, y - 2^k) 로 이동할 수 있으며, k는 음이 아닌 정수이다. 한 번 움직일 때 사용한 k는 다시 한 번 사용할 수 없다.

바이너리 파워 비숍이 (0, 0)에서 (x, y)로 이동하려고 한다. 이 때, 방문하는 칸을 최소로 하는 프로그램을 작성하시오.

체스판의 크기는 무한대이고, 음수 좌표로도 방문할 수 있다.

입력

첫째 줄에 바이너리 파워 비숍이 가고자하는 위치인 x와 y가 공백을 사이에 두고 주어진다. 두 수는 100,000,000보다 작거나 같은 자연수이다.

출력

바이너리 파워 비숍이 (x, y)까지 이동할 때 방문하는 칸의 최소값을 첫째 줄에 출력한다. 둘째 줄부터 차례대로 바이너리 파워 비숍이 거친 칸을 출력한다. 만약 이동할 수 없으면 첫째 줄에 -1을 출력한다. 방문하는 좌표를 출력할 때는, x,y 형식으로 출력해야 한다. 만약 가능한 경우의 수가 여러개이면 아무것이나 출력해도 된다.

예제 입력

8 24

예제 출력

3
0,0
-8,8
8,24

힌트

출처