퍼레이드
시간 제한1초메모리 제한128 MB
4x4 격자에 대한 N개의 둘레 회전 명령 목록에서 Q번의 누적 갱신이 주어질 때, 각 갱신 후 명령을 모두 수행한 결과 격자를 출력한다.
문제
5월 9일은 전승 기념일로, 매년 붉은 광장에서 승전 퍼레이드가 열립니다. 이 퍼레이드를 디지털로 재현하기 위해, 하나의 대형(formation)이 어떻게 바뀌는지를 추적해야 합니다.
대형은 격자입니다. 사람들은 처음에 행 우선(row-major) 순서로 번부터 번까지 번호가 매겨져 있습니다.
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
이후 명령이 순서대로 주어집니다. 각 명령은 세 정수 로 이루어지며 다음을 의미합니다.
좌상단 모서리가 행 열에 있는 정사각형의 테두리(perimeter) 에 있는 사람들을 시계 방향으로 한 칸 회전시킨다.
예를 들어, 명령 는 처음 격자를 다음과 같이 바꿉니다.
5 1 3 4
6 2 7 8
9 10 11 12
13 14 15 16
명령 은 처음 격자를 다음과 같이 바꿉니다.
1 2 3 4
5 10 6 7
9 14 11 8
13 15 16 12
명령 는 처음 격자를 다음과 같이 바꿉니다.
5 1 2 3
9 6 7 4
13 10 11 8
14 15 16 12
처음에 주어진 개의 명령이 있습니다. 이제 번의 수정을 합니다. 각 수정은 하나의 명령을 영구적으로 다시 씁니다.
번째 명령을 로 바꾼다.
모든 수정은 누적적이며 영구적입니다. 즉, 이전 수정들이 이미 바꿔 놓은 명령 목록을 그대로 이어받아 수정합니다. 각 수정이 끝날 때마다, (지금까지의 모든 수정이 반영된) 개의 명령을 처음 격자에 순서대로 모두 적용했을 때의 대형을 출력하세요.
입력
첫 줄에 명령의 수 과 수정의 수 가 주어집니다 ().
다음 개의 줄에는 각각 세 정수 , , 가 주어져 하나의 회전 명령을 나타냅니다. 이때 , , 을 만족합니다.
다음 개의 줄에는 각각 네 정수 , , , 가 주어집니다. 는 바꿀 명령의 -기반 인덱스이고, 그 뒤의 는 새로운 명령입니다 (, , 도 위와 같은 제약을 만족합니다).
출력
각 수정마다, 지금까지의 모든 수정을 적용한 뒤의 최종 대형을, 공백으로 구분된 네 정수씩 줄로 출력하세요. 번의 수정에 대한 출력 블록을 사이에 빈 줄 없이 이어서 출력합니다.
참고
- 각 수정은 명령 목록을 제자리에서(in place) 바꾸며, 그 변경은 누적됩니다. 즉 번째 수정은 번째 수정 위에 적용됩니다.
- 인 명령은 한 칸만을 대상으로 하므로 대형을 전혀 바꾸지 않습니다.
- 각 수정 후의 답은 유일하게 결정되므로, 출력은 정확히 일치해야 합니다.