유명한 마법사가 돌아왔다. 숨겨진 보물을 찾기 위해 엄청난 수의 몬스터를 처치한 뒤, 자크 갈루(Zak Galou)는 부르고뉴에 포도밭을 사서 은퇴했다. 평온하던 그의 삶은 농장 트랙터가 멈춰 버린 날 깨졌다.
트랙터의 엔진은 여러 개의 톱니바퀴로 동작하며, 2차원 격자로 나타낼 수 있다. 격자의 각 칸에는 톱니바퀴가 최대 하나 놓인다. 모든 톱니바퀴는 동일하며 이웃한 톱니바퀴와 맞물린다. 격자는 육각형(평행사변형) 형태로 배치되어 있어, $r$행 $c$열의 톱니바퀴는 다음 최대 여섯 칸의 톱니바퀴와 맞물릴 수 있다.
해당 칸에도 톱니바퀴가 있을 때에만 이웃으로 취급한다.
트랙터를 시동하면 일부 톱니바퀴가 처음부터 활성화되어 시계 방향으로 돌려고 한다. 어떤 톱니바퀴가 한 방향으로 돌려고 하면, 그와 맞물린 모든 톱니바퀴는 반대 방향으로 돌려고 하며, 이 작용은 맞물린 무리 전체로 전파된다.
엔진은 파손되어 일부 톱니바퀴가 제거되고 다른 것이 추가되었기 때문에, 움직이지 못하는 톱니바퀴가 생긴다. 움직이지 못하는 톱니바퀴는 자유(free)이거나 막힌(blocked) 두 경우이다.
예를 들어 서로 모두 맞물린 세 개의 톱니바퀴(삼각형)를 생각하자. 그중 하나라도 처음부터 활성화되면 세 개 모두 막힌다. 하나도 활성화되지 않으면 세 개 모두 자유롭다.
엔진의 배치와 처음에 (시계 방향으로) 활성화된 톱니바퀴가 주어졌을 때, 트랙터를 시동한 순간 각 톱니바퀴의 최종 상태(시계 방향 회전, 반시계 방향 회전, 자유, 막힘)를 구하여라.
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 공백 하나로 구분된 두 정수 $R$과 $C$가 주어진다 ($1 \le R, C \le 100$). 각각 엔진 격자의 행 수와 열 수이다. 이어지는 $R$개의 줄은 각 행을 나타내며, 한 줄에 $C$개의 문자가 들어 있다.
. : 해당 칸에 톱니바퀴가 없음.* : 처음에 활성화되지 않은 톱니바퀴.I : 처음에 활성화된(시계 방향으로 돌려는) 톱니바퀴.계산을 간단히 하기 위해 평행사변형 모양의 격자는 각 행을 왼쪽으로 정렬한 직사각형으로 주어진다. 입력의 끝은 $R = C = 0$인 줄로 표시되며, 이 줄은 처리하지 않는다.
각 테스트 케이스마다 엔진을 시동한 뒤 모든 칸의 상태를 나타내는 $R$개의 줄을 출력한다. 각 칸은 다음 문자 하나로 표시한다.
. : 톱니바퀴 없음.( : 시계 방향으로 도는 톱니바퀴.) : 반시계 방향으로 도는 톱니바퀴.F : 자유로운 톱니바퀴.B : 막힌 톱니바퀴.연속한 테스트 케이스의 출력 사이에는 빈 줄 하나를 넣어 구분한다. 즉, 첫 번째를 제외한 모든 테스트 케이스 앞에 빈 줄 하나를 출력한다.