rt,32pts
#include<bits/stdc++.h>
#define ll long long
#define endl '\n'
#define int long long
using namespace std;
int n,f,len;
const int N=500005;
int a[N],id[N],sum[N],add[N],cnt[N];
void op1(int l,int r,int x){
if(id[l]==id[r]){
for(int i=l;i<=r;i++){
a[i]+=x;
sum[id[i]]+=x;
}
}else{
for(int i=l;id[i]==id[l];i++){
a[i]+=x;
sum[id[i]]+=x;
}
for(int i=r;id[i]==id[r];i--){
a[i]+=x;
sum[id[i]]+=x;
}
for(int i=id[l]+1;i<=id[r]-1;i++){
add[i]+=x;
}
}
}
int op2(int l,int r){
int ans=0;
if(id[l]==id[r]){
for(int i=l;i<=r;i++){
ans+=a[i];
}
return ans;
}else{
for(int i=l;id[i]==id[l];i++){
ans+=a[i]+add[id[i]];
}
for(int i=r;id[i]==id[r];i--){
ans+=a[i]+add[id[i]];
}
for(int i=id[l]+1;i<=id[r]-1;i++){
ans+=sum[i]+add[i]*cnt[i];
}
return ans;
}
}
void solve(){
int op,x,y,k;
cin>>op;
if(op==1){
cin>>x>>y>>k;
op1(x,y,k);
}
if(op==2) {
cin>>k;
op1(1,1,k);
}
if(op==3){
cin>>k;
op1(1,1,-k);
}
if(op==4){
cin>>x>>y;
cout<<op2(x,y)<<endl;
}
if(op==5){
cout<<op2(1,1)<<endl;
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
cin>>n>>f;len=sqrt(n);
for(int i=1;i<=n;i++){
cin>>a[i];
id[i]=i/len;
sum[id[i]]+=a[i];
cnt[id[i]]++;
}
while(f--){
solve();
}
return 0;
}