#include <cstdio>
#include <iostream>
using namespace std;
int n,q,i,j,l,r,x,op,a[1000005];
int m=-2147483648;//赋值为int的下限
int main()
{
scanf("%d %d",&n,&q);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;i<=q;i++)
{
scanf("%d",&op);
switch(op)
{
case 1:
{
scanf("%d %d %d",&l,&r,&x);
for(j=l;j<=r;j++)
a[j]=x;
break;
}
case 2:
{
scanf("%d %d %d",&l,&r,&x);
for(j=l;j<=r;j++)
a[j]+=x;
break;
}
case 3:
{
m=-2147483648;
scanf("%d %d",&l,&r);
for(j=l;j<=r;j++)
m=max(m,a[j]);
printf("%d\n",m);
break;
}
}
}
return 0;
}
#1-#5AC,#6-#9WA,#10TLE