수열 생성
시간 제한10초메모리 제한2048 MB
홀수로 이루어진 배열의 구간에 짝수 x를 더하고, 구간의 곱을 2^20으로 나눈 나머지로 구합니다.
문제
길이가 인 수열 이 있으며, 모든 는 홀수임이 보장된다.
연산은 두 종류이다.
- , , 가 주어지면, a_\\ell, a_{\\ell + 1}, \\ldots, a_r 각각에 짝수 를 더한다.
- , 이 주어지면, a_\\ell, a_{\\ell + 1}, \\ldots, a_r의 곱을 구하고 그 값을 으로 나눈 나머지를 출력한다.
초기 수열과 연산이 주어졌을 때, 이를 효율적으로 처리하라.
입력
첫째 줄에 두 양의 정수 , ()가 주어진다. 각각 수열의 길이와 질의의 개수이다.
둘째 줄에는 홀수 ()이 개 주어진다.
이후 개의 줄에는 다음 두 형식 중 하나의 질의가 주어진다.
1 l r x: 첫 번째 연산을 수행한다 (, 는 짝수이고 ).2 l r: 두 번째 연산을 수행한다 ().
질의에 주어지는 값은 모두 정수이다.
출력
두 번째 형식의 질의마다 답을 한 줄에 출력한다.