갈루가 돌아왔다!

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

문제

유명한 마법사가 돌아왔다. 숨겨진 보물을 찾기 위해 엄청난 수의 몬스터를 처치한 뒤, 자크 갈루(Zak Galou)는 부르고뉴에 포도밭을 사서 은퇴했다. 평온하던 그의 삶은 농장 트랙터가 멈춰 버린 날 깨졌다.

트랙터의 엔진은 여러 개의 톱니바퀴로 동작하며, 2차원 격자로 나타낼 수 있다. 격자의 각 칸에는 톱니바퀴가 최대 하나 놓인다. 모든 톱니바퀴는 동일하며 이웃한 톱니바퀴와 맞물린다. 격자는 육각형(평행사변형) 형태로 배치되어 있어, $r$행 $c$열의 톱니바퀴는 다음 최대 여섯 칸의 톱니바퀴와 맞물릴 수 있다.

  • 같은 행: $(r, c-1)$, $(r, c+1)$
  • 윗행: $(r-1, c)$, $(r-1, c+1)$
  • 아랫행: $(r+1, c-1)$, $(r+1, c)$

해당 칸에도 톱니바퀴가 있을 때에만 이웃으로 취급한다.

트랙터를 시동하면 일부 톱니바퀴가 처음부터 활성화되어 시계 방향으로 돌려고 한다. 어떤 톱니바퀴가 한 방향으로 돌려고 하면, 그와 맞물린 모든 톱니바퀴는 반대 방향으로 돌려고 하며, 이 작용은 맞물린 무리 전체로 전파된다.

엔진은 파손되어 일부 톱니바퀴가 제거되고 다른 것이 추가되었기 때문에, 움직이지 못하는 톱니바퀴가 생긴다. 움직이지 못하는 톱니바퀴는 자유(free)이거나 막힌(blocked) 두 경우이다.

  • 자유(free): 처음부터 활성화되지 않았고, 이웃 중 돌려고 하는 톱니바퀴가 하나도 없는 경우.
  • 막힘(blocked): 시계 방향과 반시계 방향으로 동시에 돌도록 강요받는 경우.

예를 들어 서로 모두 맞물린 세 개의 톱니바퀴(삼각형)를 생각하자. 그중 하나라도 처음부터 활성화되면 세 개 모두 막힌다. 하나도 활성화되지 않으면 세 개 모두 자유롭다.

엔진의 배치와 처음에 (시계 방향으로) 활성화된 톱니바퀴가 주어졌을 때, 트랙터를 시동한 순간 각 톱니바퀴의 최종 상태(시계 방향 회전, 반시계 방향 회전, 자유, 막힘)를 구하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 공백 하나로 구분된 두 정수 $R$과 $C$가 주어진다 ($1 \le R, C \le 100$). 각각 엔진 격자의 행 수와 열 수이다. 이어지는 $R$개의 줄은 각 행을 나타내며, 한 줄에 $C$개의 문자가 들어 있다.

  • . : 해당 칸에 톱니바퀴가 없음.
  • * : 처음에 활성화되지 않은 톱니바퀴.
  • I : 처음에 활성화된(시계 방향으로 돌려는) 톱니바퀴.

계산을 간단히 하기 위해 평행사변형 모양의 격자는 각 행을 왼쪽으로 정렬한 직사각형으로 주어진다. 입력의 끝은 $R = C = 0$인 줄로 표시되며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 엔진을 시동한 뒤 모든 칸의 상태를 나타내는 $R$개의 줄을 출력한다. 각 칸은 다음 문자 하나로 표시한다.

  • . : 톱니바퀴 없음.
  • ( : 시계 방향으로 도는 톱니바퀴.
  • ) : 반시계 방향으로 도는 톱니바퀴.
  • F : 자유로운 톱니바퀴.
  • B : 막힌 톱니바퀴.

연속한 테스트 케이스의 출력 사이에는 빈 줄 하나를 넣어 구분한다. 즉, 첫 번째를 제외한 모든 테스트 케이스 앞에 빈 줄 하나를 출력한다.