描述

给定长度为N的数列A,以及M条指令 (N≤500000, M≤100000),每条指令可能是以下两种之一:
2 x y”,把 A[x] 改成 y。
1 x y”,查询区间 [x,y] 中的最大连续子段和,即 max(x≤l≤r≤y)⁡ { ∑(i=l~r) A[i] }。
对于每个询问,输出一个整数表示答案。

输入格式

第一行两个整数N,M

第二行N个整数Ai

接下来M行每行3个整数k,x,y,k=1表示查询(此时如果x>y,请交换x,y),k=2表示修改

输出格式

对于每个询问输出一个整数表示答案。

样例输入

5 3
1 2 -3 4 5
1 2 3
2 2 -1
1 3 2

样例输出

2
-1

数据范围与约定

  • 对于100%的数据: N≤500000, M≤100000, |Ai|<=1000