RT
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<string>
#include<cstdlib>
using namespace std;
int q,x,y,z,n,m,a[100001],b[200001],d[200001];
void build(int s,int t,int p){
if(s==t){
d[p]=a[s];
return;
}
int mid=(s+t)/2;
build(s,mid,p*2);
build(mid+1,t,p*2+1);
d[p]=d[p*2]+d[p*2+1];
}
void update(int l,int r,int c,int s,int t,int p){
if(l==s&&r==t){
d[p]+=(t-s+1)*c;
b[p]+=c;
return;
}
int mid=(s+t)/2;
if(b[p]&&s!=t){
d[p*2]+=b[p]*(mid-s+1),d[p*2+1]+=b[p]*(t-mid);
b[p*2]+=b[p],b[p*2+1]+=b[p];
b[p]=0;
}
if(l<=mid)
update(l,r,c,s,mid,p*2);
else if(r>mid)
update(l,r,c,mid+1,t,p*2+1);
d[p]=d[p*2]+d[p*2+1];
}
void getsum(int l,int r,int s,int t,int p){
if(l==s&&r==t)
return d[p];
int mid=(s+t)/2;
if(b[p]){
d[p*2]+=b[p]*(mid-s+1),d[p*2+1]+=b[p]*(t-mid);
b[p*2]+=b[p],b[p*2+1]+=b[p];
b[p]=0;
}
int sum=0;
if(l<=mid)
sum+=getsum(l,r,s,mid,p*2);
else if(r>mid)
sum+=getsum(l,r,mid+1,t,p*2+1);
return sum;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
build(1,n,1);
for(int i=1;i<=m;i++){
cin>>q>>x>>y;
if(a==1){
cin>>z;
update(x,y,z,1,n,1);
}
else cout<<getsum(x,y,1,n,1)<<endl;
}
return 0;
}