#include <bits/stdc++.h>
#define SZ(X) ((int)(X).size())
#define ALL(X) (X).begin(), (X).end()
#define REP(I, N) for (int I = 0; I < (N); ++I)
#define REPP(I, A, B) for (int I = (A); I < (B); ++I)
#define RREP(I, N) for (int I= (N)-1; I>=0; --I)
#define RREPP(I, A, B) for(int I = (B)-1; I>=A; --I)
#define CASET int ___T, case_n = 1; scanf("%d ", &___T); while (___T-- > 0)
#define MP make_pair
#define PB push_back
#define MS0(X) memset((X), 0, sizeof((X)))
#define MS1(X) memset((X), -1, sizeof((X)))
#define LEN(X) strlen(X)
#define F first
#define S second
#define debug(A) REP(i, A.size()) cerr << A[i] << ' '; cerr << '\n'
using namespace std;
typedef pair<int, int> ii;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef long long lld;
typedef unsigned long long ulld;
typedef pair<lld, lld> plld;
typedef vector<lld> vlld;
typedef vector<vlld> vvlld;
typedef long double ld;
typedef vector<ld> vld;
typedef vector<vld> vvld;
const int inf = 987654321;
struct Result { int minPsum, maxPsum, maxi; };
Result merge(const Result& a, const Result& b){
Result ret;
ret.minPsum=min(a.minPsum, b.minPsum);
ret.maxPsum=max(a.maxPsum, b.maxPsum);
ret.maxi=max( max(a.maxi, b.maxi), b.maxPsum - a.minPsum );
return ret;
}
struct snode {
int i, j, p; Result res;
snode *l, *r;
snode(int i, int j, const vi& arr): i(i), j(j), p(0) {
if (j - i == 1) {
l = r = NULL;
res.maxi = -inf; res.minPsum = res.maxPsum = arr[i];
} else {
int k = i + j >> 1;
l = new snode(i, k, arr);
r = new snode(k, j, arr);
res = merge( l->res, r->res );
}
}
~snode() { delete l, r; }
void visit(){
res.maxPsum+=p; res.minPsum+=p;
if(l) { l->p+=p; r->p+=p; }
p=0;
}
void add(int I, int J, int v){
visit();
if (I <= i && j <= J) {
p+=v;
visit();
} else if (j <= I || J <= i) {
return;
} else {
l->add(I, J, v); r->add(I, J, v);
res = merge( l->res , r->res );
}
}
Result query(int I, int J) {
visit();
if (I <= i && j <= J) {
return res;
} else if (j <= I || J <= i) {
return {inf, -inf, -inf};
} else {
auto ret = merge( l->query(I,J), r->query(I,J) );
return ret;
}
}
};
struct segment {
snode *root;
segment() : root(0) {}
void init(int n, const vi& arr) {
if(root) delete root;
root = new snode(0, n, arr);
}
void add(int i, int j, int v){
root->add(i, j+1, v);
}
int query(int i, int j) {
Result ret = root->query(i, j+1);
return ret.maxi;
}
};
int N,Q, a,b,c;
int main(){
scanf("%d",&N); vi arr(N+1), val(N+1);
REP(i, N){
scanf("%d",&val[i+1]);
arr[i+1]=val[i+1]+arr[i];
}
segment tree; tree.init(N+1, arr);
scanf("%d",&Q);
while(Q--){
scanf("%d%d%d",&a,&b,&c);
if(a==0){
tree.add(b, N, -val[b]); val[b]=c;
tree.add(b, N, val[b]);
}else if(a==1){
b--;
printf("%d\n", tree.query(b,c) );
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgU1ooWCkgKChpbnQpKFgpLnNpemUoKSkKI2RlZmluZSBBTEwoWCkgKFgpLmJlZ2luKCksIChYKS5lbmQoKQojZGVmaW5lIFJFUChJLCBOKSBmb3IgKGludCBJID0gMDsgSSA8IChOKTsgKytJKQojZGVmaW5lIFJFUFAoSSwgQSwgQikgZm9yIChpbnQgSSA9IChBKTsgSSA8IChCKTsgKytJKQojZGVmaW5lIFJSRVAoSSwgTikgZm9yIChpbnQgST0gKE4pLTE7IEk+PTA7IC0tSSkKI2RlZmluZSBSUkVQUChJLCBBLCBCKSBmb3IoaW50IEkgPSAoQiktMTsgST49QTsgLS1JKQojZGVmaW5lIENBU0VUIGludCBfX19ULCBjYXNlX24gPSAxOyBzY2FuZigiJWQgIiwgJl9fX1QpOyB3aGlsZSAoX19fVC0tID4gMCkKI2RlZmluZSBNUCBtYWtlX3BhaXIKI2RlZmluZSBQQiBwdXNoX2JhY2sKI2RlZmluZSBNUzAoWCkgbWVtc2V0KChYKSwgMCwgc2l6ZW9mKChYKSkpCiNkZWZpbmUgTVMxKFgpIG1lbXNldCgoWCksIC0xLCBzaXplb2YoKFgpKSkKI2RlZmluZSBMRU4oWCkgc3RybGVuKFgpCiNkZWZpbmUgRiBmaXJzdAojZGVmaW5lIFMgc2Vjb25kCiNkZWZpbmUgZGVidWcoQSkgUkVQKGksIEEuc2l6ZSgpKSBjZXJyIDw8IEFbaV0gPDwgJyAnOyBjZXJyIDw8ICdcbicKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIHZlY3Rvcjx2aT4gdnZpOwogCnR5cGVkZWYgbG9uZyBsb25nIGxsZDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsZDsKdHlwZWRlZiBwYWlyPGxsZCwgbGxkPiBwbGxkOwp0eXBlZGVmIHZlY3RvcjxsbGQ+IHZsbGQ7CnR5cGVkZWYgdmVjdG9yPHZsbGQ+IHZ2bGxkOwogCnR5cGVkZWYgbG9uZyBkb3VibGUgbGQ7CnR5cGVkZWYgdmVjdG9yPGxkPiB2bGQ7CnR5cGVkZWYgdmVjdG9yPHZsZD4gdnZsZDsKCmNvbnN0IGludCBpbmYgPSA5ODc2NTQzMjE7CnN0cnVjdCBSZXN1bHQgeyBpbnQgbWluUHN1bSwgbWF4UHN1bSwgbWF4aTsgfTsKUmVzdWx0IG1lcmdlKGNvbnN0IFJlc3VsdCYgYSwgY29uc3QgUmVzdWx0JiBiKXsKCVJlc3VsdCByZXQ7CglyZXQubWluUHN1bT1taW4oYS5taW5Qc3VtLCBiLm1pblBzdW0pOwoJcmV0Lm1heFBzdW09bWF4KGEubWF4UHN1bSwgYi5tYXhQc3VtKTsKCXJldC5tYXhpPW1heCggbWF4KGEubWF4aSwgYi5tYXhpKSwgYi5tYXhQc3VtIC0gYS5taW5Qc3VtICk7CglyZXR1cm4gcmV0Owp9CnN0cnVjdCBzbm9kZSB7CiAgICBpbnQgaSwgaiwgcDsgUmVzdWx0IHJlczsKICAgIHNub2RlICpsLCAqcjsKICAgIHNub2RlKGludCBpLCBpbnQgaiwgY29uc3QgdmkmIGFycik6IGkoaSksIGooaiksIHAoMCkgewogICAgICAgIGlmIChqIC0gaSA9PSAxKSB7CiAgICAgICAgICAgIGwgPSByID0gTlVMTDsKICAgICAgICAgICAJcmVzLm1heGkgPSAtaW5mOyByZXMubWluUHN1bSA9IHJlcy5tYXhQc3VtID0gYXJyW2ldOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGludCBrID0gaSArIGogPj4gMTsKICAgICAgICAgICAgbCA9IG5ldyBzbm9kZShpLCBrLCBhcnIpOwogICAgICAgICAgICByID0gbmV3IHNub2RlKGssIGosIGFycik7CiAgICAgICAgICAgIHJlcyA9IG1lcmdlKCBsLT5yZXMsIHItPnJlcyApOwogICAgICAgIH0KICAgIH0KICAgIH5zbm9kZSgpIHsgZGVsZXRlIGwsIHI7IH0KICAgIHZvaWQgdmlzaXQoKXsKICAgIAlyZXMubWF4UHN1bSs9cDsgcmVzLm1pblBzdW0rPXA7CiAgICAJaWYobCkgeyBsLT5wKz1wOyByLT5wKz1wOyB9CiAgICAJcD0wOwogICAgfQogICAgdm9pZCBhZGQoaW50IEksIGludCBKLCBpbnQgdil7CiAgICAJdmlzaXQoKTsKICAgIAlpZiAoSSA8PSBpICYmIGogPD0gSikgewogICAgICAgICAgICBwKz12OwogICAgCQl2aXNpdCgpOwogICAgICAgIH0gZWxzZSBpZiAoaiA8PSBJIHx8IEogPD0gaSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbC0+YWRkKEksIEosIHYpOyByLT5hZGQoSSwgSiwgdik7CiAgICAgICAgICAgIHJlcyA9IG1lcmdlKCBsLT5yZXMgLCByLT5yZXMgKTsKICAgICAgICB9CiAgICB9CiAgICBSZXN1bHQgcXVlcnkoaW50IEksIGludCBKKSB7CiAgICAJdmlzaXQoKTsKICAgICAgICBpZiAoSSA8PSBpICYmIGogPD0gSikgewogICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgIH0gZWxzZSBpZiAoaiA8PSBJIHx8IEogPD0gaSkgewogICAgICAgICAgICByZXR1cm4ge2luZiwgLWluZiwgLWluZn07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAJYXV0byByZXQgPSBtZXJnZSggbC0+cXVlcnkoSSxKKSwgci0+cXVlcnkoSSxKKSApOwogICAgICAgIAlyZXR1cm4gcmV0OwogICAgICAgIH0KICAgIH0KfTsKIApzdHJ1Y3Qgc2VnbWVudCB7CiAgICBzbm9kZSAqcm9vdDsKICAgIHNlZ21lbnQoKSA6IHJvb3QoMCkge30KICAgIHZvaWQgaW5pdChpbnQgbiwgY29uc3QgdmkmIGFycikgewogICAgICAgIGlmKHJvb3QpIGRlbGV0ZSByb290OwogICAgICAgIHJvb3QgPSBuZXcgc25vZGUoMCwgbiwgYXJyKTsKICAgIH0KICAgIHZvaWQgYWRkKGludCBpLCBpbnQgaiwgaW50IHYpewogICAgCXJvb3QtPmFkZChpLCBqKzEsIHYpOwogICAgfQogICAgaW50IHF1ZXJ5KGludCBpLCBpbnQgaikgewogICAgCVJlc3VsdCByZXQgPSByb290LT5xdWVyeShpLCBqKzEpOwogICAgICAgIHJldHVybiByZXQubWF4aTsKICAgIH0KfTsKaW50IE4sUSwgYSxiLGM7CmludCBtYWluKCl7CglzY2FuZigiJWQiLCZOKTsgdmkgYXJyKE4rMSksIHZhbChOKzEpOwoJUkVQKGksIE4peyAKCQlzY2FuZigiJWQiLCZ2YWxbaSsxXSk7CgkJYXJyW2krMV09dmFsW2krMV0rYXJyW2ldOwoJfQoJc2VnbWVudCB0cmVlOyB0cmVlLmluaXQoTisxLCBhcnIpOwoJc2NhbmYoIiVkIiwmUSk7Cgl3aGlsZShRLS0pewoJCXNjYW5mKCIlZCVkJWQiLCZhLCZiLCZjKTsKCQlpZihhPT0wKXsKCQkJdHJlZS5hZGQoYiwgTiwgLXZhbFtiXSk7IHZhbFtiXT1jOwoJCQl0cmVlLmFkZChiLCBOLCB2YWxbYl0pOwoJCX1lbHNlIGlmKGE9PTEpewoJCQliLS07IAoJCQlwcmludGYoIiVkXG4iLCB0cmVlLnF1ZXJ5KGIsYykgKTsKCQl9Cgl9CiAgICByZXR1cm4gMDsKfQ==