수열
시간 제한7초메모리 제한512 MB
배열에 대해 구간 값을 k칸 앞 값으로 덮어쓰기, 원본으로 되돌리기, 구간 합 구하기 연산을 수행하고 합 질의의 결과를 구합니다.
문제
Yuta에게 개의 정수로 이루어진 배열 이 있다. Yuta는 배열 의 초기 내용을 에 복사해 보관한다. 처음에는 이다. 그 뒤 Yuta는 배열 에 대해 개의 연산을 차례로 수행한다.
연산은 세 종류가 있다.
1 l r: 이상 이하인 모든 에 대해 의 합을 구한다.2 l r k: 배열 에 다음 코드를 그대로 실행한다.for (int i = l; i <= r; i++) A[i] = A[i - k];3 l r: 이상 이하인 모든 에 대해 를 의 값으로 되돌린다.
입력
첫째 줄에 과 이 주어진다. ()
둘째 줄에 정수 이 주어진다. ()
이후 개의 줄에 연산이 한 줄씩 주어진다. 모든 연산은 과 을 만족한다.
출력
종류가 1인 연산마다 구한 합을 한 줄에 출력한다.