马蜂惨不忍睹
#include<bits/stdc++.h>
#define int long long
#define lowbit(x) x&(-x)
using namespace std;
int n,a[200005],q;
int t1[200005],t2[200005];
void add(int p,int x){
for(int i=p;i<=n;i+=lowbit(i))
t1[i]+=x,t2[i]+=x*p;
}
void qj_add(int l,int r,int x){
add(l,x);add(r+1,-x);
}
int ask(int p){
int res=0;
for(int i = p; i; i -= lowbit(i))
res+=(p+1)*t1[i]-t2[i];
return res;
}
int qj_ask(int l,int r){
return ask(r)-ask(l-1);
}
signed main(){
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
add(i,a[i]-a[i-1]);
}
while(q--){
int op;
scanf("%lld",&op);
if(op==1){
int l,r,k;
scanf("%lld%lld%lld",&l,&r,&k);
qj_add(l,r,k);
}
else if(op==2){
int k;
scanf("%lld",&k);
add(1,k);
}
else if(op==3){
int k;
scanf("%lld",&k);
add(1,-k);
}
else if(op==4){
int l,r;
scanf("%lld%lld",&l,&r);
printf("%lld\n",qj_ask(l,r));
}
else
printf("%lld\n",ask(1));
}
return 0;
}