全WA/kk
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e5+10;
int n,len,tot,q,a[N],L[N],R[N],belong[N];ll add[N],sum[N];
void update(int l,int r,int v){
if(belong[l]==belong[r])for(int i=l;i<=r;i++)a[i]+=v,sum[belong[l]]+=v;
else{
for(int i=l;i<=R[belong[l]];i++)a[i]+=v,sum[belong[l]]+=v;
for(int i=L[belong[r]];i<=r;i++)a[i]+=v,sum[belong[r]]+=v;
for(int i=belong[l]+1;i<belong[r];i++)add[i]+=v,sum[i]+=1ll*len*v;
}
}ll query(int l,int r,ll ret=0){
if(belong[l]==belong[r])for(int i=l;i<=r;i++)ret+=a[i]+add[belong[l]];
else{
for(int i=l;i<=R[belong[l]];i++)ret+=a[i]+add[belong[l]];
for(int i=L[belong[r]];i<=r;i++)ret+=a[i]+add[belong[r]];
for(int i=belong[l]+1;i<belong[r];i++)ret+=sum[i];
}return ret;
}int main(){
cin>>n>>q,len=sqrt(n),tot=n/len+(n%len&&1);
for(int i=1;i<=tot;i++)L[i]=(i-1)*len+1,R[i]=i*len;
R[tot]=n;
for(int i=1;i<=n;i++)cin>>a[i],belong[i]=(i-1)/len+1;
for(int op,l,r,v;q--;){
cin>>op>>l>>r;
if(op==1)cin>>v,update(l,r,v);
if(op==2)cout<<query(l,r)<<'\n';
}return 0;
}