카드 접기
시간 제한1초메모리 제한128 MB
카드 격자를 위, 아래, 왼쪽, 오른쪽으로 접어 하나의 더미로 만든 뒤, 뒤집힘 상태를 반영해 마지막 더미에서 앞면인 카드를 아래부터 나열한다.
문제
격자 위에 카드가 놓여 있다. 각 카드에는 번호가 적혀 있고, 일부는 앞면이, 일부는 뒷면이 위를 향한다. 다음 네 종류의 뒤집기를 반복하면 격자를 하나의 카드 더미로 접을 수 있다.
- 위쪽 뒤집기(Top): 맨 윗줄의 카드들을 바로 아랫줄의 같은 위치 카드 위로 뒤집어 넘긴다. 앞면이던 카드는 뒤집힌 뒤 뒷면이 되고, 그 반대도 마찬가지다. 어떤 칸에 카드 더미가 쌓여 있으면, 그 더미 전체가 팬케이크 더미처럼 통째로 뒤집히면서(쌓인 순서가 뒤집힌다) 아래 더미 위로 옮겨진다.
- 아래쪽 뒤집기(Bottom): 위쪽 뒤집기와 같지만, 맨 아랫줄을 바로 윗줄 위로 뒤집어 넘긴다.
- 왼쪽 뒤집기(Left): 맨 왼쪽 열의 카드들을 바로 오른쪽 열 위로 뒤집어 넘긴다.
- 오른쪽 뒤집기(Right): 맨 오른쪽 열의 카드들을 바로 왼쪽 열 위로 뒤집어 넘긴다.
번의 뒤집기를 하고 나면 모든 카드가 하나의 더미가 되며, 일부는 앞면이 일부는 뒷면이 위를 향한다. 이 최종 더미에서 앞면이 위를 향한 카드들의 순서를 구하라.
입력
각 테스트 케이스의 첫 줄에는 격자의 행 수와 열 수를 나타내는 두 양의 정수 과 이 주어진다. 이어지는 개의 줄에는 각각 개의 정수가 주어져 각 카드의 번호와 방향을 나타낸다. (첫 줄이 맨 윗줄이고, 각 줄의 첫 값이 맨 왼쪽 카드이다.) 양의 정수 는 그 자리에 카드 가 앞면으로 놓여 있음을, 음의 정수 는 카드 가 뒷면으로 놓여 있음을 뜻한다. (는 절대 0이 아니다.)
이 개의 줄 다음에는 적용할 뒤집기를 나타내는 개의 문자로 이루어진 한 줄이 온다. 각 문자는 위쪽·아래쪽·왼쪽·오른쪽 뒤집기를 뜻하는 T, B, L, R 중 하나이다. 모든 뒤집기 순서는 항상 유효하다. 즉 위쪽과 아래쪽 뒤집기를 합쳐 번보다 많이, 또는 왼쪽과 오른쪽 뒤집기를 합쳐 번보다 많이 요구하지 않는다. 과 의 최댓값은 이다.
입력은 두 개의 0이 적힌 줄로 끝난다.
출력
각 테스트 케이스마다, 케이스 번호에 이어 최종 더미에서 앞면이 위를 향한 모든 카드의 번호를 더미의 맨 아래부터 순서대로 아래 형식으로 출력한다.
Case X: c1 c2 ...
앞면인 카드가 하나도 없으면 케이스 표시만 출력한다. (예: Case 2:)