
#include<iostream>
#include<fstream>
#define MAXN 500000
#define MAX(a,b) (a>b ? a:b)
#define cin fin
#define cout fout
using namespace std;
ifstream fin("max1.in");
ofstream fout("max1.out");
struct SEG{
int beg;
int end;
int mark;
int maxv;
} t[MAXN];
int n,m,glen;
int a[MAXN];
void build(int v,int l,int r)
{
t[v].beg=l;
t[v].end=r;
t[v].mark=0;
if(l==r)
{
t[v].maxv=a[l];
return;
}
build(2*v,l,(l+r)/2);
build(2*v+1,(l+r)/2+1,r);
t[v].maxv=MAX(t[2*v].maxv,t[2*v+1].maxv);
}
int ask(int v,int l,int r)
{
if(t[v].beg==l&&t[v].end==r) return t[v].maxv;
else
{
int mid=(t[v].beg+t[v].end)/2;
if(r<=mid) return ask(2*v,l,r);
else if(l>mid) return ask(2*v+1,l,r);
else return MAX(ask(2*v,l,mid),ask(2*v+1,mid+1,r));
}
}
int asks(int v,int l,int r)
{
t[2*v].mark+=t[v].mark,t[2*v].maxv+=t[v].mark;
t[2*v+1].mark+=t[v].mark,t[2*v+1].maxv+=t[v].mark;
t[v].mark=0;
if(t[v].beg==l&&t[v].end==r) return t[v].maxv;
else
{
int mid=(t[v].beg+t[v].end)/2;
if(r<=mid) return asks(2*v,l,r);
else if(l>mid) return asks(2*v+1,l,r);
else return MAX(asks(2*v,l,mid),asks(2*v+1,mid+1,r));
}
}
void change(int v,int i,int x)
{
if(t[v].beg==t[v].end)
{
t[v].maxv=x;
return;
}
if(i>=t[2*v].beg&&i<=t[2*v].end) change(2*v,i,x);
if(i>=t[2*v+1].beg&&i<=t[2*v+1].end) change(2*v+1,i,x);
t[v].maxv=MAX(t[2*v].maxv,t[2*v+1].maxv);
}
void changes(int v,int l,int r,int x)
{
if(t[v].beg==l&&t[v].end==r) t[v].mark+=x,t[v].maxv+=x;
else
{
t[2*v].mark+=t[v].mark,t[2*v].maxv+=t[v].mark;
t[2*v+1].mark+=t[v].mark,t[2*v+1].maxv+=t[v].mark;
t[v].mark=0;
int mid=(t[v].beg+t[v].end)/2;
if(r<=mid) changes(2*v,l,r,x);
else if(l>mid) changes(2*v+1,l,r,x);
else
{
changes(2*v ,l,mid,x);
changes(2*v+1,mid+1,r,x);
}
t[v].maxv=MAX(t[2*v].maxv,t[2*v+1].maxv);
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
build(1,1,n);
cin>>m;
for(int i=1;i<=m;i++)
{
int tag,q,p,k;
cin>>tag;
glen=0;
if(tag==1)
{
cin>>q>>p>>k;
glen=0;
changes(1,q,p,k);
}
else if(tag==2)
{
cin>>q>>p;
cout<<asks(1,q,p)<<endl;
}
else cout<<"What a ****!"<<endl;
}
return 0;
}
#include<fstream>
#define MAXN 500000
#define MAX(a,b) (a>b ? a:b)
#define cin fin
#define cout fout
using namespace std;
ifstream fin("max1.in");
ofstream fout("max1.out");
struct SEG{
int beg;
int end;
int mark;
int maxv;
} t[MAXN];
int n,m,glen;
int a[MAXN];
void build(int v,int l,int r)
{
t[v].beg=l;
t[v].end=r;
t[v].mark=0;
if(l==r)
{
t[v].maxv=a[l];
return;
}
build(2*v,l,(l+r)/2);
build(2*v+1,(l+r)/2+1,r);
t[v].maxv=MAX(t[2*v].maxv,t[2*v+1].maxv);
}
int ask(int v,int l,int r)
{
if(t[v].beg==l&&t[v].end==r) return t[v].maxv;
else
{
int mid=(t[v].beg+t[v].end)/2;
if(r<=mid) return ask(2*v,l,r);
else if(l>mid) return ask(2*v+1,l,r);
else return MAX(ask(2*v,l,mid),ask(2*v+1,mid+1,r));
}
}
int asks(int v,int l,int r)
{
t[2*v].mark+=t[v].mark,t[2*v].maxv+=t[v].mark;
t[2*v+1].mark+=t[v].mark,t[2*v+1].maxv+=t[v].mark;
t[v].mark=0;
if(t[v].beg==l&&t[v].end==r) return t[v].maxv;
else
{
int mid=(t[v].beg+t[v].end)/2;
if(r<=mid) return asks(2*v,l,r);
else if(l>mid) return asks(2*v+1,l,r);
else return MAX(asks(2*v,l,mid),asks(2*v+1,mid+1,r));
}
}
void change(int v,int i,int x)
{
if(t[v].beg==t[v].end)
{
t[v].maxv=x;
return;
}
if(i>=t[2*v].beg&&i<=t[2*v].end) change(2*v,i,x);
if(i>=t[2*v+1].beg&&i<=t[2*v+1].end) change(2*v+1,i,x);
t[v].maxv=MAX(t[2*v].maxv,t[2*v+1].maxv);
}
void changes(int v,int l,int r,int x)
{
if(t[v].beg==l&&t[v].end==r) t[v].mark+=x,t[v].maxv+=x;
else
{
t[2*v].mark+=t[v].mark,t[2*v].maxv+=t[v].mark;
t[2*v+1].mark+=t[v].mark,t[2*v+1].maxv+=t[v].mark;
t[v].mark=0;
int mid=(t[v].beg+t[v].end)/2;
if(r<=mid) changes(2*v,l,r,x);
else if(l>mid) changes(2*v+1,l,r,x);
else
{
changes(2*v ,l,mid,x);
changes(2*v+1,mid+1,r,x);
}
t[v].maxv=MAX(t[2*v].maxv,t[2*v+1].maxv);
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
build(1,1,n);
cin>>m;
for(int i=1;i<=m;i++)
{
int tag,q,p,k;
cin>>tag;
glen=0;
if(tag==1)
{
cin>>q>>p>>k;
glen=0;
changes(1,q,p,k);
}
else if(tag==2)
{
cin>>q>>p;
cout<<asks(1,q,p)<<endl;
}
else cout<<"What a ****!"<<endl;
}
return 0;
}
