#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=4e5+10;
int lazy[N],s[N],a[N];
int n,m;
void build(int p,int l,int r)
{
if(l==r)
{
s[p]=a[l];
return;
}
int mid=(l+r)/2;
build(p*2,l,mid);
build(p*2+1,mid+1,r);
s[p]=s[p*2]+s[p*2+1];
}
int f(int p,int l,int r,int ql,int qr,int k)
{
if(ql<=l&&qr>=r)
{
s[p]+=(r-l+1)*k;
lazy[p]+=k;
}
int mid=(l+r)/2;
if(lazy[p])
{
s[p*2]+=lazy[p]*(mid-l+1);lazy[p*2]+=lazy[p];
lazy[p*2+1]+=lazy[p];
s[p*2+1]+=lazy[p]*(r-mid);lazy[p]=0;
}
if(ql<=mid) f(p*2,l,mid,ql,qr,k);
if(qr>mid) f(p*2+1,mid+1,r,ql,qr,k);
}
int sum(int p,int l,int r,int ql,int qr)
{
if(ql<=l&&qr>=r)
{
return s[p];
}
int mid=(l+r)/2;
if(lazy[p])
{
s[p*2]+=lazy[p]*(mid-l+1);lazy[p*2]+=lazy[p];
lazy[p*2+1]+=lazy[p];
s[p*2+1]+=lazy[p]*(r-mid);lazy[p]=0;
}
int ans=0;
if(ql<=mid) ans+=sum(p*2,l,mid,ql,qr);
if(qr>mid) ans+=sum(p*2+1,mid+1,r,ql,qr);
return ans;
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
build(1,1,n);
while(m--)
{
int op;
cin>>op;
if(op==1)
{
int x,y,k;
cin>>x>>y>>k;
f(1,1,n,x,y,k);
}
else
{
int x,y;
cin>>x>>y;
cout<<sum(1,1,n,x,y)<<endl;
}
}
return 0;
}