Can you answer these queries III
题号:NC51109
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 64 M,其他语言128 M
64bit IO Format: %lld

题目描述

给定长度为N的数列A,以及M条指令,每条指令可能是以下两种之一:

  1. “1 x y”,查询区间 [x,y] 中的最大连续子段和,即 
  2. “2 x y”,把 A[x] 改成 y。


对于每个查询指令,输出一个整数表示答案。

输入描述:

第一行两个整数N,M。
第二行N个整数A[i]。
接下来M行每行3个整数k,x,y,k=1表示查询(此时如果x>y,请交换x,y),k=2表示修改。

输出描述:

对于每个查询指令输出一个整数表示答案。
每个答案占一行。
示例1

输入

复制
5 3
1 2 -3 4 5
1 2 3
2 2 -1
1 3 2

输出

复制
2
-1

备注: