#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=100005;
int n,m,x,y,k,opt,block,t;
int a[N],sum[N],add[N],st[N],en[N],pos[N];
void change(int lt,int rt,int val){
int p=pos[lt],q=pos[rt];
if(p==q){
for(int i=lt;i<=rt;i++)
a[i]+=val;
sum[p]+=(rt-lt+1)*val;
}else
for(int i=p+1;i<=q-1;i++){
add[i]+=val;
sum[i]+=(en[i]-st[i]+1)*val;
}
}
int ask(int lt,int rt){
int p=pos[lt],q=pos[rt];
if(p==q){
int s=0;
for(int i=lt;i<=rt;i++) s+=a[i];
return s+(rt-lt+1)*add[p];
}
int s=0;
for(int i=p+1;i<=q-1;i++){
s+=sum[i];
s+=(en[i]-st[i]+1)*add[i];
}
for(int i=lt;i<=en[p];i++){
s+=a[i];
s+=add[p];
}
for(int i=st[q];i<=rt;i++){
s+=a[i];
s+=add[q];
}
return s;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
block=sqrt(n);
t=n/block;
if(n%block) t++;
for(int i=1;i<=t;i++){
st[i]=(i-1)*block+1;
en[i]=i*block;
if(i==t) en[i]=n;
for(int j=st[i];j<=en[i];j++){
pos[j]=i;
sum[i]+=a[j];
}
}
while(m--){
cin>>opt>>x>>y;
if(opt==1){
cin>>k;
change(x,y,k);
}else cout<<ask(x,y)<<endl;
}
return 0;
}