#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<queue>
#include<cmath>
#include<algorithm>
using namespace std;
int t;
int n,f,L[10001],R[10001],a[10001];
int sum[10001],pos[10001],lan[10001];
void add(int l,int r,int k){
int p=pos[l],q=pos[r];
if(p==q){
for(int i=l;i<=r;i++){
a[i]+=k;
}
sum[p]+=k*(r-l+1);
}else{
for(int i=p+1;i<=q-1;i++){
lan[i]+=k;
}
for(int i=l;i<=R[p];i++){
a[i]+=k;
sum[i]+=k;
}
for(int i=L[q];i<=r;i++){
a[i]+=k;
sum[i]+=k;
}
}
return;
}
int find(int l,int r){
int ans=0;
int p=pos[l],q=pos[r];
if(p==q){
for(int i=l;i<=r;i++){
ans+=a[i];
ans+=lan[q];
}
}else{
for(int i=p+1;i<=q-1;i++){
ans+=sum[i]+lan[i]*(R[i]-L[i]);
}
for(int i=l;i<=R[p];i++){
ans+=a[i]+lan[p];
}
for(int i=L[q];i<=r;i++){
ans+=a[i]+lan[q];
}
}
return ans;
}
int main(){
cin >>n>>f;
for(int i=1;i<=n;i++){
cin >>a[i];
}
t=sqrt(n);
for(int i=1;i<=n;i++){
R[i]=i*t;
L[i]=(i-1)*t+1;
}
if(R[t]<n){
t++;
L[t]=R[t-1]+1;
R[t]=n;
}
for(int i=1;i<=t;i++){
for(int j=L[i];j<=R[i];j++){
pos[j]=i;
sum[i]+=a[j];
}
}
for(int i=1;i<=f;i++){
int p;
cin >>p;
if(p==1){
int l,r,k;;
cin >>l>>r>>k;
add(l,r,k);
// for(int i=1;i<=n;i++){
// cout <<a[i]+lan[pos[i]]<<" ";
// }
// cout <<endl;
}
if(p==2){
int k;
cin >>k;
a[1]+=k;
sum[1]+=k;
}
if(p==3){
int k;
cin >>k;
a[1]-=k;
sum[1]-=k;
// for(int i=1;i<=n;i++){
// cout <<a[i]+lan[pos[i]]<<" ";
// }
// cout <<endl;
}
if(p==4){
int l,r;
cin>>l>>r;
cout<<find(l,r)<<endl;
}
if(p==5){
if(lan[1]){
cout <<a[1]+lan[1]<<endl;
}else{
cout <<a[1]<<endl;
}
}
}//
// for(int i=1;i<=n;i++){
// cout <<a[i]+lan[pos[i]]<<" ";
// }
// cout <<t<<endl;
return 0;
}