#include<bits/stdc++.h>
#define int long long
#define N 2*100000+10
using namespace std;
int c[N<<2];
int b[N];
int a[N];
int n,q;
void build(int l,int r,int p){
if(l==r){
c[p]=a[l];
return;
}
int m=(l+r)/2;
build(l,m,p*2);
build(m+1,r,p*2+1);
c[p]=c[p*2]+c[p*2+1];
}
int getsum(int l,int r,int s,int t,int p){
// cout<<s<<" "<<t<<endl;
if(l<=s&&t<=r){
return c[p];
}
int m=(s+t)/2;
if(b[p]){
c[p*2]+=(m-s+1)*b[p];
c[p*2+1]+=(t-m)*b[p];
// c[p]+=(t-s+1)*b[p];
b[p*2]+=b[p];
b[p*2+1]+=b[p];
b[p]=0;
c[p]=c[p*2]+c[p*2+1];
}
int sumn=0;
if(l<=m) sumn+=getsum(l,r,s,m,p*2);
if(r>m) sumn+=getsum(l,r,m+1,t,p*2+1);
return sumn;
}
void update(int l,int r,int s,int t,int k,int p){
if(l<=s&&t<=r){
b[p]+=k;
c[p]+=k*(t-s+1);
return;
}
int m=(s+t)/2;
if(b[p]){
c[p*2]+=(m-s+1)*b[p];
c[p*2+1]+=(t-m)*b[p];
// c[p]+=(t-s+1)*b[p];
b[p*2]+=b[p];
b[p*2+1]+=b[p];
b[p]=0;
}
if(l<=m) update(l,r,s,m,k,p*2);
if(r>m) update(l,r,m+1,t,k,p*2+1);
c[p]=c[p*2]+c[p*2+1];
}
signed main(){
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
}
build(1,n,1);
for(int i=1;i<=q;i++){
int op,x,y,k;
cin>>op;
if(op==1){
cin>>x>>y>>k;
update(x,y,1,n,k,1);
}else if(op==2){
cin>>k;
update(1,1,1,n,k,1);
}else if(op==3){
cin>>k;
update(1,1,1,n,-k,1);
}else if(op==4){
cin>>x>>y;
cout<<getsum(x,y,1,n,1)<<endl;
}else{
cout<<getsum(1,1,1,n,1)<<endl;
}
}
return 0;
}