3차원 막대 미로

시간 제한1초메모리 제한128 MB

문제

3차원 미로는 속이 빈 정육면체로 만듭니다. 정육면체는 정수 좌표를 쓰며, 한 꼭짓점 $(0,0,0)$에서 반대쪽 꼭짓점 $(n-1,,n-1,,n-1)$까지의 영역을 차지합니다. 정육면체의 여섯 면에는 각각 2차원 미로가 있습니다. 각 면은 $n\times n$ 격자이고, 칸은 벽(X)이거나 열린 칸(빈칸)입니다. 모든 면의 테두리 칸은 항상 벽이므로, 열린 칸은 각 면 내부의 무늬를 이룹니다.

정육면체 안에는 표식 하나와 막대 여섯 개가 있습니다. 각 막대는 표식에서 출발해 정육면체의 한 면을 곧장 뚫고 나갑니다. 막대가 어떤 면을 지날 때, 그 면과 평행한 표식의 두 좌표가 가리키는 한 칸으로 나옵니다. 여섯 개의 출구 칸이 모두 열려 있을 때에만 표식은 그 격자점에 있을 수 있으며, 막대 중 하나라도 벽 칸에 닿으면 그 위치는 막혀 있습니다.

표식은 $(1,1,1)$에서 시작해 $(n-2,,n-2,,n-2)$에 도착해야 합니다. 한 번 움직일 때마다 전체 구조가 한 축을 따라 한 칸씩 미끄러집니다. 여섯 가지 이동은 각각 F(Forward, 앞), B(Back, 뒤), L(Left, 왼쪽), R(Right, 오른쪽), U(Up, 위), D(Down, 아래)로 표기합니다. 표식의 위치를 $(x,y,z)$($1\le x,y,z\le n-2$)라 하면:

  • B는 $x$를 1 늘리고, F는 $x$를 1 줄입니다.
  • L은 $y$를 1 늘리고, R은 $y$를 1 줄입니다.
  • U는 $z$를 1 늘리고, D는 $z$를 1 줄입니다.

이동은 도착 위치가 정육면체 안에 있고 막혀 있지 않을 때에만 허용됩니다. $(1,1,1)$에서 $(n-2,,n-2,,n-2)$까지 표식을 옮기는 가장 짧은 이동 순서를 구하세요.

입력

입력은 여러 개의 테스트 케이스로 이루어집니다. 각 테스트 케이스는 정수 $n$($4 \le n \le 30$)이 적힌 줄로 시작합니다. 이어지는 $6n$개의 줄은 여섯 면을 차례대로 설명하며, 각 면은 정확히 $n$개의 문자로 이루어진 $n$개의 줄로 주어집니다(각 문자는 벽을 뜻하는 X 또는 열린 칸을 뜻하는 빈칸입니다).

면은 다음의 고정된 순서와 방향으로 주어집니다.

  1. 앞면 Forward — 윗면과 맞닿은 모서리가 위쪽, 오른쪽면과 맞닿은 모서리가 오른쪽에 오도록 배치.
  2. 오른쪽면 Right — 윗면 모서리가 위쪽, 뒷면 모서리가 오른쪽.
  3. 뒷면 Back — 윗면 모서리가 위쪽, 왼쪽면 모서리가 오른쪽.
  4. 왼쪽면 Left — 윗면 모서리가 위쪽, 앞면 모서리가 오른쪽.
  5. 윗면 Up — 뒷면 모서리가 위쪽, 왼쪽면 모서리가 오른쪽.
  6. 아랫면 Down — 뒷면 모서리가 위쪽, 왼쪽면 모서리가 오른쪽.

같은 내용을 좌표로 나타내면, $M = n-1$이고 표식의 위치가 $(x,y,z)$일 때 각 면을 지나는 막대는 그 면의 아래 표에 있는 (0부터 세는) 행과 열로 나옵니다. 이 여섯 칸 중 하나라도 벽이면 그 위치는 막혀 있습니다.

면 (입력 순서)
1. 앞면 Forward$M-z$$M-y$
2. 오른쪽면 Right$M-z$$x$
3. 뒷면 Back$M-z$$y$
4. 왼쪽면 Left$M-z$$M-x$
5. 윗면 Up$M-x$$y$
6. 아랫면 Down$M-x$$y$

테스트 케이스 목록은 0 하나만 있는 줄로 끝나며, 이 줄은 테스트 케이스가 아닙니다.

출력

각 테스트 케이스마다 한 줄을 출력합니다. 표식을 $(1,1,1)$에서 $(n-2,,n-2,,n-2)$로 옮기는, 길이가 가장 짧은 이동 순서를 출력하세요. 순서의 각 문자는 F, B, L, R, U, D 중 하나입니다. 가장 짧은 순서가 여러 개이면 $F < B < L < R < U < D$ 순서에서 사전순으로 가장 앞선 것을 출력합니다. 모든 테스트 케이스에는 적어도 하나의 해가 존재함이 보장됩니다.