심사위원의 위기

아직 제출이 없습니다시간 제한3초메모리 제한256 MB

문제

프로그래밍 대회에 아스키 미로 문제가 하나도 없으면 서운하다. 다행히 심사위원 한 명이 그런 문제를 만들어 두었다.

미로에는 입구이자 출구인 칸이 정확히 하나 있고, 순환하는 경로가 없으며, 벽에 완전히 둘러싸여 갇힌 빈칸도 없다. 여기에 로봇 한 대를 들여보내 미로 전체를 탐색하게 한다. 로봇은 언제나 자기가 가는 방향을 바라본다. 매 단계에서 로봇은 먼저 오른쪽으로 돌려고 한다. 그쪽이 벽이면 대신 앞으로 가려고 한다. 그것도 막혀 있으면 왼쪽으로 돈다. 세 방향이 모두 막혀 있으면 뒤로 돈다.

원래 문제는 로봇이 입구 칸에서 출발해 그 칸으로 다시 돌아올 때까지의 경로를 출력하는 것이었다. 이동은 문자 하나로 적는다. 'F'는 전진, 'L'은 왼쪽, 'R'은 오른쪽, 'B'는 뒤쪽이다. 'L', 'R', 'B'는 방향 전환만 뜻하지 않고 그 방향으로 한 칸 나아가는 것까지 뜻한다. 로봇이 처음 바라보는 방향은 동쪽이고, 경로는 항상 입구 칸에서 끝난다.

문제를 맡은 심사위원이 예제와 테스트 데이터를 다 만들어 놓은 순간 입력 파일이 지워졌고, 되살릴 방법이 없다. 출력과 예제는 그대로 남아 있다. 출력을 보고 입력을 복원하라. 테스트 케이스 개수만은 심사위원이 손으로 다시 적어 두었다.

입력

첫 줄에 테스트 케이스의 개수를 나타내는 양의 정수가 주어진다. 이 값은 100 이하이다. 이어서 각 테스트 케이스마다

  • 로봇이 미로를 돌아다닌 경로를 나타내는 문자열이 한 줄에 주어진다.

주어지는 경로는 모두 아래 출력 조건을 만족하는 어떤 미로에서 로봇이 실제로 만들어 낸 경로이다.

출력

첫 줄에 테스트 케이스의 개수를 출력한다. 이어서 각 테스트 케이스마다

  • 미로의 높이 hh와 너비 ww를 공백으로 구분해 한 줄에 출력한다 (3h,w1003 \le h, w \le 100).
  • 미로를 나타내는 hh개의 줄을 출력한다. 각 줄은 ww개의 문자로 이루어지며, '#'은 벽이고 '.'은 빈칸이다.

미로의 테두리는 모두 벽이고, 왼쪽 변의 한 칸만 예외이다. 그 칸이 입구이다. 미로에는 순환하는 경로가 없고, 입구에서 갈 수 없는 빈칸도 없다. 맨 윗줄과 맨 아랫줄, 맨 오른쪽 열을 뺀 모든 행과 모든 열에는 빈칸이 적어도 하나 있다. 이 조건을 모두 만족하는 미로는 단 하나뿐이므로, 그 미로를 출력하면 된다.