판 위의 주사위
시간 제한1초메모리 제한128 MB
주사위를 굴려 시작 칸에서 목표 칸까지 이동하며 밑면과 칸 숫자가 일치할 때 얻는 점수의 최댓값을 구하고 도달 불가나 무한대도 판정합니다.
문제
체스와 백개먼에 싫증이 난 나와 친구들은 새 게임을 만들었다. 백개먼 주사위 하나와 체스판을 닮은 판을 쓰는 1인용 게임이다.
판은 행 열이다. 각 칸은 비어 있거나 부터 까지의 숫자 하나가 적혀 있다. 여섯 면에 부터 까지가 적힌 주사위 하나가 시작 칸에 놓여 있고, 아랫면의 네 변은 판의 축과 나란하다. 이 주사위를 목표 칸까지 옮기면 된다.
행은 위에서 아래로 번부터 번, 열은 왼쪽에서 오른쪽으로 번부터 번이다. 앞은 행 번호가 작아지는 방향, 뒤는 행 번호가 커지는 방향, 오른쪽은 열 번호가 커지는 방향, 왼쪽은 열 번호가 작아지는 방향이다.
주사위의 처음 방향은 부터 까지를 한 번씩 쓴 문자열 로 주어진다. 각 자리는 차례대로 오른쪽, 왼쪽, 앞, 뒤, 위, 아래 면에 적힌 숫자다.
주사위는 다음 규칙에 따라 움직인다.
- 인접한 네 칸 중 한 칸으로, 그 방향의 면이 바닥에 닿도록 굴려서 옮긴다. 예를 들어 지금 방향이
136425이고 오른쪽 칸으로 옮기면 오른쪽 면이 새 칸에서 아랫면이 되므로 방향은256431이 된다. - 점수는 에서 시작한다. 주사위를 옮겼을 때 새 아랫면의 숫자가 방금 들어간 칸의 숫자와 같으면 두 수의 합만큼 점수가 오르고, 다르면 두 수의 합만큼 점수가 내려간다. 목표 칸에 들어가는 이동은 점수를 바꾸지 않는다.
- 판 밖으로 나갈 수 없다.
- 시작 칸을 한 번 떠나면 그 칸에 다시 들어갈 수 없다.
- 목표 칸에 들어가면 그 칸을 떠날 수 없다.
- 숫자가 적혀 있지 않은 칸에는 들어갈 수 없다. 목표 칸만 예외다.
판의 상태와 시작 칸, 목표 칸, 주사위의 처음 방향이 주어진다. 규칙을 지켜 주사위를 시작 칸에서 목표 칸으로 옮길 때 얻을 수 있는 점수의 최댓값을 구하라.
입력
첫 줄에 테스트 케이스의 수 가 주어진다 (). 이어서 개의 테스트 케이스가 주어진다.
각 테스트 케이스는 개의 줄로 이루어진다. 첫 줄에는 판의 행 수 과 열 수 이 주어진다 (). 둘째 줄에는 시작 칸에 놓인 주사위의 처음 방향을 나타내는 문자열 가 주어진다. 남은 개의 줄에는 각각 개의 문자가 있고, 번째 줄의 번째 문자는 판의 행 열 칸의 값이다. 각 문자는 다음 중 하나다.
.은 빈 칸이다.S는 시작 칸이며, 판에 정확히 한 번 나온다.T는 목표 칸이며, 판에 정확히 한 번 나온다.0부터9까지의 숫자는 그 칸에 적힌 값이다.
출력
각 테스트 케이스마다 한 줄에 다음 중 하나를 출력한다.
- 시작 칸에서 목표 칸으로 갈 수 없으면
Impossible - 점수에 상한이 없어 끝없이 올릴 수 있으면
Infinity - 그 밖의 경우에는 얻을 수 있는 점수의 최댓값