#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,f,sum[1000008],a[1000008];
void build(ll l,ll r,ll pos){
if(l==r){
sum[pos]=a[r];
return ;
}
ll mid=(l+r)>>1;
build(l,mid,pos<<1);
build(mid+1,r,pos<<1|1);
sum[pos]=sum[pos<<1]+sum[pos<<1|1];
}
void add(ll l,ll r,ll pos,ll x,ll y,ll k){
if(x>=l&&y<=r){
sum[pos]+=k;
return ;
}
ll mid=(l+r)>>1;
if(mid>=x) add(l,mid,pos<<1,x,y,k);
if(mid<y) add(mid+1,r,pos<<1|1,x,y,k);
sum[pos]=sum[pos<<1]+sum[pos<<1|1];
}
ll find_sum(ll l,ll r,ll pos,ll x,ll y){
if(x>=l&&r<=y) return sum[pos];
ll mid=(l+r)>>1;
ll ans=0;
if(mid>=x) ans+=find_sum(l,mid,pos<<1,x,y);
if(mid<y) ans+=find_sum(mid+1,r,pos<<1|1,x,y);
return ans;
}
int main(){
scanf("%lld%lld",&n,&f);
for(ll i=1;i<=n;i++) scanf("%lld",&a[i]);
build(1,n,1);
ll st=0;
for(ll i=1;i<=f;i++){
ll num,k,l,r;
scanf("%lld",&num);
if(num==1){
scanf("%lld%lld%lld",&l,&r,&k);
add(1,n,1,l,r,k);
}
if(num==2){
scanf("%lld",&k);
st+=k;
}
if(num==3){
scanf("%lld",&k);
st-=k;
}
if(num==4){
scanf("%lld%lld",&l,&r);
printf("%lld\n",find_sum(1,n,1,l,r)+(l==1)*st);
}
if(num==5){
ll c=find_sum(1,n,1,1,1);
cout<<c+st<<endl;
}
}
}