#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,m;
ll sum[500000];
ll add[500000];
ll a[300000];
void change(ll l,ll r,ll k,ll d)
{ add[k]+=d;
sum[k]+=(r-l+1)*d;
}
void pushdown(ll l,ll r,ll k)
{if(add[k])
{ll mid=l+r>>1;
change(l,mid,k<<1,add[k]);
change(mid+1,r,k<<1|1,add[k]);
add[k]=0;
}
}
void update(ll l,ll r,ll k,ll a,ll b,ll d)
{ ll mid=l+r>>1;
if(a<=l&&b>=r)
{sum[k]+=(l-r+1)*d;
add[k]+=d;
return;
}
pushdown(l,r,k);
if(a<=mid)update(l,mid,k<<1,a,b,d);
if(b>=mid+1)update(mid+1,r,k<<1|1,a,b,d);
sum[k]=sum[k<<1]+sum[k<<1|1];
return;
}
ll query(ll l,ll r,ll k,ll a,ll b)
{ if(a<=l&&b>=r)
{
return sum[k];
}
ll mid=l+r>>1,res=0;
pushdown(l,r,k);
if(a<=mid)res+=query(l,mid,k<<1,a,b);
if(b>=mid+1)res+=query(mid+1,r,k<<1|1,a,b);
return res;
}
void build(ll l,ll r,ll k)
{
if(l==r)
{
sum[k]=a[l];
return;
}
ll mid=l+r>>1;
build(l,mid,k<<1);
build(mid+1,r,k<<1|1);
sum[k]=sum[k<<1]+sum[k<<1|1];
return;
}
int main()
{ ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
build(1,n,1);
while(m--)
{ ll op,a,b,k;
cin>>op;
if(op==1)
{
cin>>a>>b>>k;
update(1,n,1,a,b,k);
}
else
{ cin>>a>>b;
cout<<query(1,n,1,a,b)<<'\n';
}
}
return 0;
}