#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<queue>
#include<cmath>
#include<algorithm>
using namespace std;
int n,f,len;
int belong[100000],L[100000],R[100000];
int a[100000],lan[100000],sum[100000];
void aad(int l,int r,int k){
//cout <<r<<" "<<l<<endl;
for(int i=l,j=min(r,R[belong[l]]);i<=j;i++){
a[i]+=k;
//cout <<"[#"<<i<<"]:"<<a[i]<<endl;
sum[belong[i]]+=k;
}
if(belong[l]!=belong[r]){
for(int i=L[belong[r]];i<=r;i++){
a[i]+=k;
//cout <<"[$"<<i<<"]:"<<a[i]<<endl;
sum[belong[i]]+=k;
}
}
for(int i=belong[l]+1;i<belong[r];i++){
lan[i]+=k;
sum[i]+=(R[i]-L[i]+1)*k;
}
}
int find(int l,int r){
int re=0;
for(int i=l,j=min(r,R[belong[l]]);i<=j;i++){
re+=a[i]+lan[belong[l]];
//cout <<"re:"<<re<<endl;
}
if(belong[l]!=belong[r]){
for(int i=L[belong[r]];i<=r;i++){
re+=a[i]+lan[belong[r]];
//cout <<"re:"<<re<<endl;
}
}
for(int i=belong[l]+1;i<belong[r];i++){
re+=sum[i];
//cout <<"re:"<<re<<endl;
}
return re;
}
int main(){
cin >>n>>f;
len=sqrt(n);
//cout <<len<<endl;
for(int i=1;i<=len;i++){
L[i]=(i-1)*len+1;
R[i]=i*len;
//cout <<"}"<<L[i]<<" "<<R[i]<<endl;
}
if(R[len]<n){
len++;
L[len]=R[len-1]+1;
R[len]=n;
//cout <<"}"<<L[len]<<" "<<R[len]<<endl;
}
for(int i=1;i<=len;i++){
for(int j=L[i];j<=R[i];j++){
belong[j]=i;
}
}
for(int i=1;i<=n;i++){
cin >>a[i];
}
for(int i=1;i<=f;i++){
int t,l,r,k;
cin >>t;
if(t==1){
cin >>l>>r>>k;
aad(l,r,k);
// for(int i=1;i<=n;i++){
// cout <<a[i]+lan[belong[i]]<<" ";
// }
// cout <<endl;
}else if(t==2){
cin >>k;
a[1]+=k;
sum[1]+=k;
// for(int i=1;i<=n;i++){
// cout <<a[i]+lan[belong[i]]<<" ";
// }
// cout <<endl;
}else if(t==3){
cin >>k;
a[1]-=k;
sum[1]-=k;
// for(int i=1;i<=n;i++){
// cout <<a[i]+lan[belong[i]]<<" ";
// }
// cout <<endl;
}else if(t==4){
cin >>l>>r;
cout <<find(l,r)<<endl;
}else if(t==5){
cout <<a[1]+lan[1]<<endl;
}
}
return 0;
}