#include<iostream>
using namespace std;
int main(){
int n,q,op,l,r,x;
cin>>n>>q;
long long a[n+5],max=-999999999999999999;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=0;i<q;i++){
cin>>op;
if(op==1){
cin>>l>>r>>x;
for(int j=l;j<=r;j++)a[j]=x;
}
if(op==2){
cin>>l>>r>>x;
for(int j=l;j<=r;j++)a[j]+=x;
}
if(op==3){
cin>>l>>r;
for(int j=l;j<=r;j++){
if(a[j]>max)max=a[j];
}
cout<<max<<endl;
max=-999999999999999999;
}
}
return 0;
}