#include<bits/stdc++.h>
using namespace std;
const int N=4e5+5;
int n,m;
long long a[N],d[N],ta[N];
void build(int s,int t,int p){
if(s==t){
d[p]=a[s];
return ;
}
int m=s+t>>1;
build(s,m,p*2);build(m+1,t,p*2+1);
d[p]=d[p*2]+d[p*2+1];
}
long long getsum(int l,int r,int s,int t,int p){
// cout<<s<<" "<<t<<" "<<p<<" "<<d[p]<<" "<<ta[p]<<endl;
if(ta[p]){
d[p]+=(t-s+1)*ta[p];
if(s!=t) ta[p*2]+=ta[p];ta[p*2+1]+=ta[p];
ta[p]=0;
}
if(l<=s&&t<=r) return d[p];
int m=s+t>>1,sum=0;
if(l<=m) sum+=getsum(l,r,s,m,p*2);
if(r>m) sum+=getsum(l,r,m+1,t,p*2+1);
return sum;
}
void add(int l,int r,int c,int s,int t,int p){
if(l<=s&&t<=r){
d[p]+=(t-s+1)*c;
ta[p*2]+=c;ta[p*2+1]=c;
return ;
}
if(ta[p]){
d[p]+=(t-s+1)*c;
ta[p*2]+=c;ta[p*2+1]=c;
ta[p]=0;
}
int m=s+t>>1;
if(l<=m) add(l,r,c,s,m,p*2);
if(m<r) add(l,r,c,m+1,t,p*2+1);
d[p]=d[p*2]+d[p*2+1];
}
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++){
int op,x,y,k;
cin>>op;
if(op==1){
cin>>x>>y>>k;
add(x,y,k,1,n,1);
}
if(op==2){
cin>>x>>y;
cout<<getsum(x,y,1,n,1)<<endl;
}
}
return 0;
}