큐브 아트

큐브 상태와 움직임 순서가 주어질 때, 한 움직임을 교체하는 갱신을 적용한 뒤 매번 최종 큐브 상태를 출력한다.

보통7세그먼트 트리시뮬레이션행렬구현아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

현대 미술은 예측할 수 없다. 밥은 방을 정리하다가 오래된 루빅 큐브를 찾았다. 그리고 그 순간이 왔다. 밥은 눈을 감고 마음의 소리를 따라 회전을 몇 번(최대 65000번) 했고, 작품은 거의 완성되었다. 그런데 마지막 상태가 마음에 들지 않았다. 회전 중 몇 개를 잘못했다는 것을 깨달은 것이다. 시간을 되돌려 그 회전만 바꿀 수 있다면!

이제 필요한 것은 수정 몇 번(역시 최대 65000번)뿐이다. 수정 하나는 회전 하나를 다른 회전으로 바꾸는 것이다. 밥은 수정마다 결과가 어떻게 달라지는지 보고 싶다. 그러나 회전 전체를 매번 처음부터 다시 돌려 보기는 번거롭다.

밥의 큐브의 처음 상태가 주어진다. 처음 상태의 큐브가 맞춰져 있다는 보장은 없다. 밥이 실제로 한 원래 회전 순서도 주어진다.

마지막으로 수정 순서가 주어진다. 각 수정은 "kk번째 회전을 이 회전으로 바꾼다" 형태다. 각 수정에 대해 회전을 모두 마친 뒤의 큐브 상태를 출력하라.

수정은 그대로 남는다. 두 번째 수정은 첫 번째 수정이 반영된 회전 순서에 적용하며, 원래 회전 순서에 적용하지 않는다.

입력

색은 A, B, C, D, E, F 여섯 가지다. 큐브를 돌려도 각 면의 가운데 칸은 움직이지 않는다. 그래서 윗면의 가운데는 항상 A, 옆면 네 개의 가운데는 순서대로 B, C, D, E, 아랫면의 가운데는 F로 둔다. 큐브의 겉면을 펼치면 다음 모양이 된다.

???
?A?
???
????????????
?B??C??D??E?
????????????
???
?F?
???

윗면은 B 면의 위쪽 모서리에, 아랫면은 B 면의 아래쪽 모서리에 붙어 있고, 가운데 띠는 B, C, D, E 순서로 큐브를 한 바퀴 돈다.

첫 9줄에 큐브의 처음 상태가 위 모양 그대로 주어진다. 여섯 면의 가운데 칸은 위 그림과 같은 색이다.

다음 줄에 정수 nnmm이 주어진다. nn은 회전의 수, mm은 뒤이어 오는 수정의 수다.

다음 nn줄에 밥의 원래 회전이 "CiC_i did_i" 형태로 주어진다. CiC_i는 돌린 면의 가운데 색이고, did_i는 시계 방향이면 1-1, 반시계 방향이면 11이다. 방향은 그 면을 큐브 바깥에서 바라본 기준이다.

마지막 mm줄에 수정이 순서대로 주어진다. 각 줄은 "aja_j CjC_j djd_j" 형태이고, aja_j는 바뀌는 회전의 번호(1부터 시작), CjC_j djd_j는 새 회전이다.

모든 입력에서 1n,m650001 \le n, m \le 65000이고 1ajn1 \le a_j \le n이다.

출력

SiS_i를 원래 회전 순서에 처음 ii개의 수정을 적용해 얻은 회전 순서라고 하자. 11 이상 mm 이하의 각 ii에 대해 9줄을 출력한다. 처음 상태에서 시작해 SiS_i의 회전을 모두 수행한 뒤의 큐브 상태이고, 형식은 입력과 같다.

힌트

첫 번째 예제에서 원래 회전은 서로 상쇄되므로, 원래 회전을 모두 수행하면 큐브는 처음 상태로 돌아온다. 예제의 수정 네 개를 모두 적용하면 여섯 면의 가운데 칸을 뺀 모든 칸의 색이 바뀐 상태가 나온다.