Polynomial and Easy Queries

아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

길이 NN의 수열 AA가 주어집니다. 이 수열에 아래 세 가지 종류의 쿼리를 처리하는 프로그램을 만들어 봅시다.

  • 11 ll rr: lirl \le i \le r인 모든 A_iA\_if(A_i)f(A\_i)로 바꿉니다.
  • 22 ll rr: lirl \le i \le r인 모든 A_iA\_ig(A_i)g(A\_i)로 바꿉니다.
  • 33 xx: A_xA\_x를 출력합니다. 답이 매우 커질 수 있으니, 100003100 003으로 나눈 나머지를 출력합니다.

단, f(x)=2x21f(x)=2x^2 -1, g(x)=4x33xg(x) = 4x^3 - 3x입니다.

입력

첫 줄에는 수열의 길이 NN과 쿼리의 수 QQ가 주어집니다.

둘째 줄에는 수열 AA의 초기 상태 A_1,A_2,,A_NA\_1, A\_2, \cdots, A\_N이 주어집니다.

셋째 줄부터 QQ개의 줄에는 각 쿼리에 대한 정보가 위의 형태 (tt ll rr 또는 tt xx)로 순서대로 주어집니다.

출력

모든 3번 쿼리에 대해, 그 답을 한 줄에 하나씩 출력합니다.

제한

  • 1N5×1051 \le N \le 5 \times 10^5
  • 1Q5×1051 \le Q \le 5 \times 10^5
  • 1A_i1051 \le A\_i \le 10^5
  • 모든 쿼리에 대해, 1t31 \le t \le 3, 1lrN1 \le l \le r \le N, 1xN1 \le x \le N
  • 3번 쿼리가 적어도 하나는 주어집니다.