윷놀이

윷놀이를 N번의 턴 동안 시뮬레이션한다. 말은 네 가지 경로를 따라 이동하고 업기와 잡기 규칙을 적용한 뒤, 최종 보드에 각 말의 위치를 그려 출력한다.

어려움8시뮬레이션구현그래프배열아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

윷놀이는 윷가락을 던져서 하는 한국의 전통 놀이다. 윷가락 4개와 내 말 4개, 상대편 말 4개, 그러니까 말 8개와 윷판 하나로 진행한다. 윷판에는 다음과 같이 29개의 자리가 있고, 자리마다 이름이 붙어 있다. (사진 1)

사진 1: 윷판. 윷판의 각 자리에는 이름이 적혀 있다.

사진 2: 가능한 네 가지 윷길의 그림.

이 게임의 목표는 말 네 개를 처음 자리인 날밭에서 출발시켜 윷판을 돌아 다시 날밭으로 돌아온 다음 판에서 빼내는 것이다.

각 사람의 턴은 이렇게 진행된다.

  • 윷가락을 네 개 던진다.
  • 윷가락이 놓인 모양에 따라 전진할 칸 수를 정한다.
  • 말을 정해서 전진한다.

윷가락은 앞뒷면이 있어서 던지면 앞뒷면 중 하나가 보이게 떨어진다. 네 개 중 앞면의 개수가 전진하는 칸 수다. 다만 네 개 모두 뒷면이면 5칸 전진한다.

새로 출발하는 말은 날밭에서 시작하는 것으로 보고 다음 윷길을 따라 전진한다.

말을 움직일 때는 기본적으로 (사진 2)의 4번 윷길을 따라 움직인다. 예를 들어 윷에서 두 칸 전진하면 뒷도로 움직인다. 하지만 특수한 경우에는 1번, 2번, 3번 윷길을 따라 움직인다. 말이 움직이기 시작하는 자리가 모서리(뒷밭, 앞밭, 방, 쩔밭, 날밭)이면 날밭으로 가는 거리가 짧은 쪽으로 움직인다.

좀 더 구체적으로, 말이 움직이기 시작할 때 앞밭에 있었으면 윷길이 3번 윷길로 바뀐다. 앞밭에서 한 칸 전진하면 앞모도, 두 칸 전진하면 앞모개에 있게 된다. 윷에서 한 칸 전진을 두 번 하면 앞모도에 있지만, 두 칸 전진을 한 번 하면 뒷도에 있게 된다.

또, 말이 움직이기 시작할 때 뒷밭에 있었으면 2번 윷길을 따르게 되어서, 뒷밭에서 한 칸 전진하면 뒷모도, 두 칸 전진하면 뒷모개에 있게 된다.

또한 3번 윷길에 있던 말이 방에서 전진을 시작하면 1번 윷길을 따르게 된다. 방에서 한 칸 전진하면 사려, 두 칸 전진하면 안찌에 있게 된다.

이렇게 윷길을 따라 이동한 말은 날밭에 도착한 다음 한 칸 더 움직이면 판에서 빠져나가서 다시 판에 등장하지 않는다. 전진을 두 번에 나누지 않고 한 번에 해도 된다. 예를 들어 날걸에서 2칸을 전진하면 날밭에 도착하고, 한 칸 더 전진하면 빠져나간다. 날걸에서 3칸, 4칸, 5칸을 전진해도 빠져나갈 수 있다.

하지만 이렇게만 두면 윷가락을 잘 던져서 잘 빠져나가는 놀이가 될 뿐이다. 그래서 윷놀이에는 게임을 재미있게 하고 경쟁 요소를 더하는 규칙이 붙었다.

하나는 말을 업는 규칙이다. 같은 자리에 자기 편의 말이 두 개 이상 있으면, 그중 하나만 움직이는 것으로 그 자리의 자기 편 말을 다 움직이게 된다.

다른 하나는 말을 잡는 규칙이다. 내 말의 목적지에 상대편의 말이 있으면 그 말을 게임판에서 빼내 시작하기 전의 자리로 옮긴다. 이 말이 다시 출발할 때는 날밭에서 출발한다.

당신은 이 윷놀이 게임의 개발을 맡게 되었다. 윷놀이의 각 턴이 주어질 때 판의 상태를 출력하면 된다.

입력

첫째 줄에 NN이 주어진다. NN은 윷을 던지고 말을 움직인 횟수를 나타낸다.

이어지는 NN개의 줄 중 ii번째 줄에는 ii번째 턴이 어떤 것이었는지가 주어진다. 한 턴은 말에 대한 정보와 윷에 대한 정보로 주어진다.

어떤 말인지에 대한 정보는 ABCDabcd 문자 중 하나다. 윷에 대한 정보는 뒷면을 뜻하는 B 또는 앞면을 뜻하는 F 문자 네 개가 공백으로 구분되지 않고 이어져서 주어진다. 말에 대한 정보와 윷에 대한 정보는 공백 하나로 구분되어 있다.

여기서 대문자끼리는 같은 편의 말을, 소문자끼리도 같은 편의 말을 나타내고, 소문자와 대문자는 서로 다른 편을 뜻한다.

출력

기본적인 윷판은 다음 32×3232 \times 32 문자열로 주어진다.

..----..----..----..----..----..
..    ..    ..    ..    ..    ..
| \                          / |
|  \                        /  |
|   \                      /   |
|    ..                  ..    |
..   ..                  ..   ..
..     \                /     ..
|       \              /       |
|        \            /        |
|         ..        ..         |
|         ..        ..         |
..          \      /          ..
..           \    /           ..
|             \  /             |
|              ..              |
|              ..              |
|             /  \             |
..           /    \           ..
..          /      \          ..
|         ..        ..         |
|         ..        ..         |
|        /            \        |
|       /              \       |
..     /                \     ..
..   ..                  ..   ..
|    ..                  ..    |
|   /                      \   |
|  /                        \  |
| /                          \ |
..    ..    ..    ..    ..    ..
..----..----..----..----..----..

이 문자열은 /, \, ., |, -과 공백, 개행문자로만 이루어진 문자열이다. 이 문자열은 윷판을 뜻하고, 각 칸은 2×22 \times 2 모양의 . 문자로 표현되어 있다. 가장 왼쪽 위부터 행 우선으로 칸을 읽으면 차례로 뒷밭, 뒷윷, 뒷걸, 뒷개, 뒷도, 앞밭(모), 뒷모도, 앞모도, 찌도, 윷, 뒷모개, 앞모개, 찌개, 걸, 방, 찌걸, 개, 속윷, 사려, 찌윷, 도, 속모, 안찌, 쩔밭, 날도, 날개, 날걸, 날윷 그리고 날밭 순이 된다.

여기서 NN개의 턴이 진행된 뒤 각 말이 어느 칸에 있는지를 출력해야 한다. 각 칸을 이루는 2×22 \times 2 모양의 . 문자 중 한 자리에 출력한다.

A 또는 a의 말은 왼쪽 위, B 또는 b의 말은 오른쪽 위, C 또는 c의 말은 왼쪽 아래, D 또는 d의 말은 오른쪽 아래에 있는 . 문자를 대신해 출력한다.

제한

  • 1N1001 \le N \le 100
  • 모든 움직임은 올바르다. 즉 빠져나간 말이 다시 판에 등장하는 경우는 없다.