구간 합 최대? 1

배열에서 한 원소를 갱신하는 연산과, 주어진 구간 안의 모든 부분 배열에 대해 U 곱하기 부분 합 더하기 V 곱하기 길이의 최댓값을 구하는 연산을 처리한다.

보통5배열완전 탐색누적 합구현면접 대비아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

길이가 NN인 수열 K1,K2,,KNK_1, K_2, \dots, K_N과 상수 UU, VV가 주어진다.

쿼리 QQ개가 주어지며, 종류는 두 가지다.

  1. AA, BB가 주어지면 AijBA \le i \le j \le B를 만족하는 ii, jj 중에서 U×(Ki+Ki+1++Kj)+V×(ji)U \times (K_i + K_{i+1} + \dots + K_j) + V \times (j - i)의 최댓값을 구한다.
  2. AA, BB가 주어지면 KAK_A의 값을 BB로 바꾼다.

입력

첫째 줄에 정수 NN, QQ, UU, VV가 주어진다. (1N,Q1031 \le N, Q \le 10^3, 5U,V5-5 \le U, V \le 5)

둘째 줄에 정수 K1,K2,,KNK_1, K_2, \dots, K_N이 주어진다. (102Ki102-10^2 \le K_i \le 10^2)

셋째 줄부터 QQ개의 줄에 쿼리가 한 줄에 하나씩 주어진다. 각 줄에는 세 정수 CC, AA, BB가 주어진다. (0C10 \le C \le 1)

CC가 0이면 첫 번째 종류의 쿼리이고, 이때 1ABN1 \le A \le B \le N이다. CC가 1이면 두 번째 종류의 쿼리이고, 이때 1AN1 \le A \le N, 102B102-10^2 \le B \le 10^2이다.

출력

첫 번째 종류의 쿼리마다 그 결과를 한 줄에 하나씩 출력한다.