로테이트
시간 제한1초메모리 제한128 MB
K개씩 나눈 각 구간을 회전시키는 연산과 전체를 회전시키는 연산의 역순을 적용해 초기 수열을 복원한다.
문제
상근이와 정인이가 '로테이트'라는 새로운 게임을 만들었다.
먼저 정인이는 길이가 인 수열을 하나 생각한다. 그런 다음 이 수열을 각각 개의 수가 들어가는 섹션으로 나눈다(는 의 약수이다). 첫 번째 섹션에는 수열의 처음 개의 수가 들어가고, 두 번째 섹션에는 그 다음 개의 수가 들어간다. 나머지 섹션도 같은 방식으로 채운다.
정인이는 이 수열에 다음 두 가지 연산을 적용할 수 있다.
- 각 섹션을 왼쪽 또는 오른쪽으로 칸만큼 회전시킨다.
- 수열 전체를 왼쪽 또는 오른쪽으로 칸만큼 회전시킨다.
2번 연산은 수열 전체를 회전시키므로, 각 섹션에 들어 있는 수가 바뀔 수도 있다.
정인이는 자신이 생각한 수열에 위 연산들을 순서대로 적용한 뒤, 최종 수열을 상근이에게 보여 준다. 최종 수열과 정인이가 적용한 연산이 순서대로 주어졌을 때, 정인이가 처음에 생각한 수열을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 수열의 길이 , 섹션의 크기 , 정인이가 적용한 연산의 수 가 주어진다 (, 는 의 약수).
다음 개의 줄에는 정인이가 적용한 연산이 순서대로 주어진다. 각 줄에는 연산의 종류를 나타내는 정수 ()와 회전량을 나타내는 정수 ()가 주어진다. 가 음수이면 왼쪽 방향으로, 양수이면 오른쪽 방향으로 회전한다.
마지막 줄에는 모든 연산을 적용한 뒤의 최종 수열이 공백으로 구분되어 주어진다.
출력
첫째 줄에 정인이가 처음에 생각한 수열을 공백으로 구분하여 출력한다.