#include<bits/stdc++.h>
using namespace std;
int shu1[500010],shu2[500010];
int p,l,r,k,n,f;
long long zhu;
int lowbit(int x) {return x&(-x);}
void add(int pos,int x)
{
for(int i=pos;i<=n;i+=lowbit(i))
shu1[i]+=x,shu2[i]+=pos*x;
}
long long cha(int pos)
{
long long ret=0;
for(int i=pos;i>=1;i-=lowbit(i))
ret+=(pos+1)*shu1[i]-shu2[i];
return ret;
}
int main()
{
// freopen("in.in","r",stdin);
cin>>n>>f;
int last=0;
for(int i=1;i<=n;i++)
{
int x;
scanf("%d",&x);
add(i,x-last);
last=x;
}
for(int i=1;i<=f;i++)
{
scanf("%d",&p);
if(p==1)
{
scanf("%d%d%d",&l,&r,&k);
add(l,k);
add(r+1,-k);
}
if(p==2)
{
scanf("%d",&k);
zhu+=k;
}
if(p==3)
{
scanf("%d",&k);
zhu-=k;
}
if(p==4)
{
scanf("%d%d",&l,&r);
long long k1=cha(r);
long long k2=cha(l-1);
if(l==1) k1+=zhu;
printf("%d\n",k1-k2);
}
if(p==5)
{
printf("%d\n",cha(1)+zhu);
}
}
return 0;
}
死活过不去