#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define int long long
using namespace std;
const int N=2e5+5;
int n,m,bn,bl;
int a[N],l[N],r[N],sum[N],put[N],w[N];
signed main(){
scanf("%lld%lld",&n,&m);
bl=sqrt(n);
bn=n/bl;
for(int i=1;i<=n;i++)
{
cin >> a[i];
}
for(int i=1;i<=bn;i++)
{
l[i]=(i-1)*bl+1;
r[i]=i*bl;
}
for(int i=1;i<=r[bn];i++)
{
w[i]=(i-1)/bl+1;
sum[(i-1)/bl+1]+=a[i];
}
if(bl*bn<n)
{
bn++;
l[bn]=(bn-1)*bl+1;
r[bn]=n;
for(int i=l[bn];i<=n;i++)
{
w[i]=(i-1)/bl+1;
sum[(i-1)/bl+1]+=a[i];
}
}
for(int i=1;i<=m;i++)
{
int wh;
scanf("%lld",&wh);
if(wh==1)
{
int ll,rr,k;
scanf("%lld%lld%lld",&ll,&rr,&k);
for(int j=ll;j<l[w[ll]];j++)
{
a[j]+=k;
sum[w[j]]+=k;
}
int kc=0,lc=0;
if(r[w[rr]]==rr)
{
kc++;
}
if(l[w[ll]]==ll)
{
lc++;
}
for(int j=w[ll]+1-lc;j<w[rr]+kc;j++)
{
put[j]+=k;
sum[j]+=k*(r[j]-l[j]+1);
}
if(kc==0)
{
for(int j=l[w[rr]];j<=rr;j++)
{
a[j]+=k;
sum[w[j]]+=k;
}
}
}
if(wh==2||wh==3)
{
int k;
scanf("%lld",&k);
if(wh==2)
{
a[1]+=k;
sum[1]+=k;
}
else
{
a[1]-=k;
sum[1]-=k;
}
}
if(wh==4)
{
int ll,rr,ans=0;
scanf("%lld%lld",&ll,&rr);
for(int j=ll;j<l[w[ll]];j++)
{
ans=ans+a[j]+put[w[j]];
}
int kc=0,lc=0;
if(l[w[ll]]==ll)
{
lc++;
}
if(r[w[rr]]==rr)
{
kc=1;
}
for(int j=w[ll]+1-lc;j<w[rr]+kc;j++)
{
ans+=sum[j];
}
if(kc==0)
{
for(int j=l[w[rr]];j<=rr;j++)
{
ans=ans+a[j]+put[w[j]];
}
}
printf("%lld\n",ans);
}
if(wh==5)
{
printf("%lld\n",a[1]+put[1]);
}
}
return 0;
}