#include <bits/stdc++.h>
using namespace std;
const int N=500010;
typedef long long ll;
int n,m;
ll c[N],cc[N];
ll last,x;
int lowbit(int i)
{
return i&(-i);
}
void add(ll i,ll k)
{
for(int j=i;j<=n;j+=lowbit(j))
{
c[j]+=k,cc[j]+=i*k;
}
}
void range_add(ll l,ll r,ll k)
{
add(l,k),add(r+1,-k);
}
ll ask(ll i)
{
ll ans=0;
for(int j=i;j;j-=lowbit(j))
{
ans+=(c[j]*(i+1)-cc[j]);
}
return ans;
}
ll range_ask(ll l,ll r) {return ask(r)-ask(l-1);}
int main(void)
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>x;
range_add(i,i,x-last);
last=x;
}
while(m--)
{
ll t,l,r,k;
cin>>t;
if(t==1)
{
cin>>l>>r>>k;
range_add(l,r,k);
}
else if(t==2||t==3)
{
cin>>k;
if(t==2) range_add(1,1,k);
else range_add(1,1,-k);
}
else if(t==4)
{
cin>>l>>r;
cout<<range_ask(l,r)<<endl;
}
else
{
cout<<range_ask(1,1)<<endl;
}
}
return 0;
}