#include #include #include using namespace std; struct Node{long long sum=0,mx=0;}; int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int n,q;cin>>n>>q;vectora(n);for(auto&x:a)cin>>x;vectortr(4*n);auto pull=[&](int u){tr[u]={tr[u*2].sum+tr[u*2+1].sum,max(tr[u*2].mx,tr[u*2+1].mx)};};auto build=[&](auto&&self,int u,int l,int r)->void{if(l==r){tr[u]={a[l],a[l]};return;}int m=(l+r)/2;self(self,u*2,l,m);self(self,u*2+1,m+1,r);pull(u);};auto mod=[&](auto&&self,int u,int l,int r,int ql,int qr,long long x)->void{if(qrvoid{if(l==r){tr[u]={x,x};return;}int m=(l+r)/2;if(p<=m)self(self,u*2,l,m,p,x);else self(self,u*2+1,m+1,r,p,x);pull(u);};auto sum=[&](auto&&self,int u,int l,int r,int ql,int qr)->long long{if(ql<=l&&r<=qr)return tr[u].sum;int m=(l+r)/2;long long s=0;if(ql<=m)s+=self(self,u*2,l,m,ql,qr);if(qr>m)s+=self(self,u*2+1,m+1,r,ql,qr);return s;};build(build,1,0,n-1);while(q--){int op;cin>>op;if(op==1){int l,r;cin>>l>>r;cout<>l>>r>>x;mod(mod,1,0,n-1,l-1,r-1,x);}else{int p;long long x;cin>>p>>x;setv(setv,1,0,n-1,p-1,x);}}}