#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,f,block,t,add[1000001],op,l,r,c,a[1000001],s[1000001],e[1000001],pos[1000001],sum[1000001];
void init(){
block=sqrt(n);
t=n/block;
if(n%block) t++;
for(int i=1;i<=t;i++){
s[i]=e[i-1]+1;
e[i]=i*block;
}
e[t]=n;
for(int i=1;i<=t;i++){
for(int j=s[i];j<=e[i];j++){
pos[j]=i;
sum[i]+=a[j];
}
}
}
void change1(int l,int r,int c){
int p=pos[l],q=pos[r];
if(p==q){
for(int i=l;i<=r;i++){
a[i]+=c;
sum[p]+=c;
}
}
else{
for(int i=l;i<=e[p];i++){
a[i]+=c;
sum[p]+=c;
}
for(int i=p+1;i<=q-1;i++){
add[i]+=c;
}
for(int i=s[q];i<=r;i++){
a[i]+=c;
sum[q]+=c;
}
}
}
void change2(int c){
a[1]+=c;
sum[1]+=c;
}
void change3(int c){
a[1]-=c;
sum[1]-=c;
}
int query1(int l,int r){
int p=pos[l],q=pos[r];
int res=0;
if(p==q){
for(int i=l;i<=r;i++){
res+=a[i];
res+=add[p];
}
}
else{
for(int i=l;i<=e[p];i++){
res+=a[i];
res+=add[p];
}
for(int i=p+1;i<=q-1;i++){
res+=sum[i]+add[i]*block;
}
for(int i=s[q];i<=r;i++){
res+=a[i];
res+=add[q];
}
}
return res;
}
int query2(){
return a[1]+add[1];
}
signed main(){
cin>>n>>f;
for(int i=1;i<=n;i++){
cin>>a[i];
}
init();
while(f--){
cin>>op;
if(op==1){
cin>>l>>r>>c;
change1(l,r,c);
}
if(op==2){
cin>>c;
change2(c);
}
if(op==3){
cin>>c;
change3(c);
}
if(op==4){
cin>>l>>r;
cout<<query1(l,c)<<endl;
}
if(op==5){
cout<<query2()<<endl;
}
for(int i=1;i<=n;i++){
cout<<a[i]+add[i]<<" ";
}
cout<<endl;
}
return 0;
}
求各位大佬指点。