체스에서 비숍은 대각선으로만 움직이는 말이다. 체스판에 다른 말이 없다면, 비숍은 지금 있는 칸과 색이 같은 칸으로 몇 번 움직여서 이동할 수 있다.
체스판 위의 두 칸이 주어진다. 비숍이 시작 칸에서 도착 칸으로 이동할 수 있는지, 이동할 수 있다면 가장 적은 횟수로 어떻게 움직이는지 구하는 프로그램을 작성하시오. 칸의 좌표는 글자(A-H)와 숫자(1-8)로 나타내고, 글자는 열, 숫자는 행이다.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄이며, 시작 위치 X와 도착 위치 Y가 차례대로 주어진다. 위치 하나는 열을 나타내는 글자와 행을 나타내는 숫자 두 글자로 이루어지고, 두 글자는 공백으로 구분된다. 같은 테스트 케이스가 두 번 주어지지는 않는다.
각 테스트 케이스마다 한 줄씩 출력한다. 비숍이 X에서 Y로 이동할 수 없으면 Impossible을 출력한다.
이동할 수 있으면 먼저 최소 이동 횟수를 출력하고, 이어서 비숍이 지나는 칸을 시작 칸부터 도착 칸까지 차례대로 출력한다. 각 칸은 입력과 같은 형식으로 열 글자와 행 숫자를 공백으로 구분해서 적는다. 이동 횟수가 k이면 칸은 k+1개가 나온다.
최소 이동 횟수로 가는 방법이 여러 가지면 사전순으로 가장 앞서는 것 하나만 출력한다. 두 방법은 지나는 칸을 순서대로 늘어놓은 문자열로 비교하며, 칸끼리는 열 글자를 먼저 보고 열이 같으면 행 숫자를 비교한다.