문제
미르코와 슬라브코가 "숫자 돌리기"라는 게임을 하고 있다.
먼저, 미르코가 길이 N인 수열을 생각한 후 K개씩 수를 묶는다. (단, K는 N의 약수)
그런 후, 슬라브코는 미르코에게 다음 둘 중 하나의 명령을 내린다.
1) 각 수 묶음에 대해 왼쪽 또는 오른쪽으로 X회 회전한다. 2) 수열 전체를 왼쪽 또는 오른쪽으로 X회 회전한다. 이 명령을 따른 후, 미르코는 K개씩 수를 새롭게 묶는다.
처음에 미르코가 생각한 수열이 (1, 2, 3, 4, 5, 6)이고 N=6, K=3인 경우, 처음에는 (1, 2, 3) / (4, 5, 6)으로 수를 묶게 된다. 슬라브코가 각 수 묶음에 대해 왼쪽으로 2회 회전하라고 명령하면, 미르코의 수열은 (3, 1, 2) / (6, 4, 5)가 된다. 그 후, 슬라브코가 수열 전체를 오른쪽으로 2회 회전하라고 명령하면,
미르코의 수열은 4, 5, 3, 1, 2, 6이 되고, (4, 5, 3) / (1, 2, 6)으로 수를 새롭게 묶게 된다.
슬라브코가 몇 번의 명령을 내린 후, 미르코는 회전한 후의 수열의 상태를 말한다.
그러면 슬라브코는 미르코가 처음 생각한 수열을 맞춰야 한다.
슬라브코를 도와 처음 생각한 수열을 맞추는 프로그램을 작성하여라.
입력
첫 번째 줄에는 수열의 길이 N, 묶는 수의 개수 K, 슬라브코가 명령한 횟수 Q가 주어진다. (1 ≤ N, K, Q ≤ 100,000)
두 번째 줄부터 Q개의 줄에는 명령의 종류 A (1 ≤ A ≤ 2)와 회전의 수 X (-100,000 ≤ X ≤ 100,000)가 주어진다.
X가 음수이면, 왼쪽으로 |X|회 회전하라는 것이고, X가 양수이면 오른쪽으로 X회 회전하라는 것이다.
마지막 줄에는 회전한 후의 미르코의 수열 Z[i]이 주어진다. ( 0 <= Z[i] <= 100,000)
출력
미르코가 처음 생각한 수열을 출력한다.
예제1
42 2
2 2
1 1
3 2 1 0
01 2 3
예제2
84 4
1 3
1 15
1 -5
2 -1
6 10 14 19 2 16 17 1
610 14 1 2 16 17 19
출처
2013.03.09 모의테스트5