题
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[4000005];
int e,x,y,k;
int d[4000005];
void build(int s,int t,int p){
if(s==t){
d[p]=a[s];
return;
}
int m=s+((t-s)>>1);
build(s,m,p*2);
build(m+1,t,p*2+1);
d[p]=d[p*2]+d[p*2+1];
}
int ssum(int l,int r,int s,int t,int p){
// cout<<1<<endl;
if(l<=s&&t<=r){
return d[p];
}
int sum=0;
int m=s+((t-s)>>1);
if(l<=m)sum+=ssum(l,r,s,m,p*2);
if(r>m)sum+=ssum(l,r,m+1,t,p*2+1);
return sum;
}
int b[4000005];
void uqdate(int l,int r,int c,int s,int t,int p){
//
// cout<<1<<endl;
if(l<=s&&t<=r){
d[p]+=(t-s+1)*c;
b[p]+=c;
return;
}
int m=s+((t-s)>>1);
if(b[p]&&s!=t){
d[p*2]+=b[p]*(m-s+1);
d[p*2+1]+=b[p]*(t-m);
b[p*2]+=b[p];
b[p*2+1]+=b[p];
b[p]=0;
}
if(l<=m)uqdate(l,r,c,s,m,p*2);
if(r>m)uqdate(l,r,c,m+1,t,p*2+1);
d[p]=d[p*2]+d[p*2+1];
}
signed main(){
int n,u;
cin>>n>>u;
for(int i=1;i<=n;i++)cin>>a[i];
build(1,n,1);
for(int i=1;i<=u;i++){
cin>>e;
if(e==1){
cin>>x>>y>>k;
uqdate(x,y,k,1,n,1);
}else{
cin>>x>>y;
cout<<ssum(x,y,1,n,1)<<endl;
}
}
return 0;
}