#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 5e5 + 15,M = 5e5 + 5;
int n,m,sq,len;
int a[N];
int sum[M],tag[N],p[N],ll[N],rr[N],siz[N];
void add(int l,int r,int d) {
int l1 = ((l-1)/len+1),r1 = ((r-1)/len+1);
l1 += (ll[l1]!=l);
r1 -= (rr[r1]!=r);
for(int i=l1; i<=r1; ++i) sum[i] += d * siz[i],tag[i] += d;
for(int j=l; j<ll[l1]; ++j) a[j] += d,sum[p[j]]+=d;
for(int j=rr[r1]+1; j<=r; ++j) a[j] += d,sum[p[j]]+=d;
return ;
}
int query(int l,int r) {
int l1 = ((l-1)/len+1),r1 = ((r-1)/len+1),res = 0;
l1 += (ll[l1]!=l);
r1 -= (rr[r1]!=r);
for(int i=l1; i<=r1; ++i) res += sum[i];
for(int j=l; j<ll[l1]; ++j) res += a[j] + tag[p[j]];
for(int j=rr[r1]+1; j<=r; ++j) res += a[j] + tag[p[j]];
return res;
}
signed main() {
freopen("P3372_4.in","r",stdin);
freopen("P3372.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0) , cout.tie(0);
cin>>n>>m;
for(int i=1; i<=n; ++i) cin>>a[i];
len = sq = sqrt(n);
for(int i=1; i<=sq; ++i) {
ll[i] = rr[i-1] + 1,rr[i] = ll[i] + sq - 1;
siz[i] = rr[i] - ll[i] + 1;
for(int j=ll[i]; j<=rr[i]; ++j) sum[i] += a[j],p[j] = i;
}
if(rr[sq]!=n) {
++sq;
ll[sq] = rr[sq-1] + 1,rr[sq] = n;
siz[sq] = rr[sq] - ll[sq] + 1;
for(int j=ll[sq]; j<=n; ++j) sum[sq] += a[j],p[j] = sq;
}
int opt,x,y,k;
while(m--) {
cin>>opt>>x>>y;
if(opt==1) {
cin>>k;
add(x,y,k);
} else {
cout<<query(x,y)<<"\n";
}
}
return 0;
}