다항함수의 적분과 쿼리

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

문제

길이가 N+1N + 1인 수열 A_0,A_1,A_2,,A_NA\_0, A\_1, A\_2, \cdots, A\_N이 주어질 때, NN개의 다항함수 f_1(x),f_2(x),f_3(x),,f_N(x)f\_1(x), f\_2(x), f\_3(x), \cdots, f\_N(x)와 함수 g(x)g(x)가 다음 조건에 따라 정해진다.

  • NN 이하인 모든 음이 아닌 정수 nn에 대해서 g(n)=A_ng(n) = A\_n이다.
  • NN 이하인 모든 양의 정수 nn에 대해서 n1xnn - 1 \le x \le n이면 g(x)=f_n(x)g(x) = f\_n(x)이다.
  • g(x)g(x)는 구간 (0,N)(0, N)에서 미분가능하다.
  • f_1(x),f_2(x),f_3(x),,f_N(x)f\_1(x), f\_2(x), f\_3(x), \cdots, f\_N(x)의 차수를 나열한 수열이 사전 순으로 가능한 한 앞에 위치하도록 한다.

이때, 다음 쿼리를 수행하는 프로그램을 작성하시오.

  • 1 i v : A_iA\_ivv로 바꾼다.
  • 2 a b : 6×_abg(x)dx6 \times \int\_a^b g(x)dx를 출력한다.

입력

첫 번째 줄에 NN이 주어진다. (1N200,000)(1 \le N \le 200\\,000)

두 번째 줄에 N+1N + 1개의 정수 A_0,A_1,A_2,,A_NA\_0, A\_1, A\_2, \cdots, A\_N이 공백으로 구분되어 주어진다. (100,000A_i100,000)(-100\\,000 \le A\_i \le 100\\,000)

세 번째 줄에 쿼리의 개수 MM이 주어진다. (1M200,000)(1 \le M \le 200\\,000)

다음 MM개의 줄에 쿼리의 정보가 한 줄에 하나씩 주어진다. (0iN;(0 \le i \le N; 100,000v100,000;-100\\,000 \le v \le 100\\,000; 0abN)0 \le a \le b \le N)

모든 입력 데이터에서 2번 쿼리가 하나 이상 존재함이 보장된다.

입력되는 모든 수는 정수이다.

출력

각 2번 쿼리의 결과를 한 줄에 하나씩 순서대로 출력한다. 2번 쿼리의 결과가 항상 정수임을 증명할 수 있다.