RT,题目是P2357
#include<bits/stdc++.h>
#include<math.h>
//#include<cstring>
#define ll long long
#define int long long
const int MAX=2e5+10;
using namespace std;
inline ll read()
{
char qwqc=getchar();ll qwqf=1,qwqx=0;
while(qwqc<'0'||qwqc>'9'){if(qwqc=='-') qwqf=-1;qwqc=getchar();}
while(qwqc>='0'&&qwqc<='9'){qwqx=(qwqx<<3)+(qwqx<<1)+(qwqc^48);qwqc=getchar();}
return qwqf*qwqx;
}
inline void write(ll x)
{
if(x<0){putchar('-');x=-x;}
if(x>9) write(x/10);
putchar(x%10+'0');
}
ll c1[MAX],c2[MAX],lat,n,m;
inline int lowbit(int x){return x&-x;}
inline int ask(int x,ll t[])
{
ll ans=0;
while(x)
{
ans+=t[x];
x-=lowbit(x);
}
return ans;
}
inline void add(int x,ll k,ll t[])
{
while(x<=n)
{
t[x]+=k;
x+=lowbit(x);
}
}
signed main()
{
n=read(),m=read();
for(int i=1;i<=n;i++)
{
ll x=read();
add(i,x-lat,c1);
add(i,i*(x-lat),c2);
lat=x;
}
// for(int i=1;i<=n;i++) cout<<c1[i]<<" ";
// cout<<endl;
while(m--)
{
int op=read(),l,r,k;
if(op==1||op==2||op==3)
{
if(op==1) {l=read(),r=read();ll k=read();}
if(op==2) {l=1,r=1,k=read();}
if(op==3) {l=1,r=1,k=read();k*=-1;}
add(l,k,c1);add(r+1,-k,c1);
add(l,l*k,c2);add(r+1,(-r-1)*k,c2);
}
else
{
if(op==4) {l=read(),r=read();}
if(op==5) {l=1,r=1;}
write(((r+1)*ask(r,c1)-ask(r,c2))-(l*ask(l-1,c1)-ask(l-1,c2)));
putchar('\n');
}
for(int i=1;i<=n;i++) cout<<c1[i]<<" ";
cout<<endl;
}
return 0;
}