#include <bits/stdc++.h>
using namespace std;
long long n,f,a[1000001],s[1000001],b[1000001],id[1000001];
long long num;
void add(long long l,long long r,long long k){
int sid = id[l],eid = id[r];
if(sid==eid){
for(int i =l;i<=r;i++){
a[i] += k,s[sid]+=k;
return;
}
}
for(long long i = l;id[i] == sid;i++){
a[i] += k;s[id[i]] += k;
}
for(long long i = sid+1;i<=eid-1;i++){
s[i] += num*k;
b[i] += k;
}
for(long long i = r ; id[i] == eid;i -- ){
a[i] += k;
s[id[i]] += k;
}
return;
}
long long query(long long l,long long r){
long long sid = id[l],eid = id[r];
if(sid == eid){
long long sum = 0;
for(long long i=l;i<=r;i++){
sum+=a[i];
}
return sum;
}
long long sum = 0;
for(long long i = l;id[i] == sid;i++){
sum += b[id[i]] + a[i];
}
for(long long i = sid+1;i<eid;i++){
sum += s[i];
}
for(long long i = r;id[i] == eid;i--){
sum += b[id[i]] + a[i];
}
return sum;
}
int main(){
cin>>n>>f;
num = sqrt(n);
for(long long i = 1;i<=n;i++){
cin>>a[i];
id[i] = (i)/num+1;
s[id[i]] += a[i];
}
for(long long i = 1;i<=f;i++){
int o;
cin>>o;
if(o==1){
long long l,r,k;
cin>>l>>r>>k;
add(l,r,k);
}
if(o==2){
long long k;
cin>>k;
add(1,1,k);
}
if(o == 3){
long long k;
cin>>k;
add(1,1,-k);
}
if(o==4){
long long l,r;
cin>>l>>r;
cout<<query(l,r)<<endl;
}
if(o==5){
cout<<query(1,1)<<endl;
}
}
return 0;
}