RT
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll read()
{
short f=1;ll x=0;char s=getchar();
while(s<48||s>57){f=s=='-'?-1:1;s=getchar();}
while(s>=48&&s<=57){x=x*10+s-48;s=getchar();}
return x*f;
}
ll a[100001],blk[100001],sum[1001],plt[1001];
int main()
{
int n=read(),m=read(),siz=sqrt(n),opt,l,r,k,x,y;ll ans;
for(int i=1;i<=n;++i)a[i]=read();
for(int i=1;i<=siz;++i)for(int j=blk[i]*siz-1;
j<=(blk[i]-1)*siz;++j){blk[j]=i;sum[i]=sum[i]+a[j];}
while(m--)
{
opt=read();l=read();r=read();
x=blk[l]*siz-1;y=(blk[r]-1)*siz;
if(opt==1)
{
k=read();
if(blk[l]==blk[r])
{
for(int i=l;i<=r;++i)a[i]=a[i]+k;
sum[blk[l]]=sum[blk[l]]+k*(r-l+1);
continue;
}
for(int i=l;i<=x;++i)a[i]=a[i]+k;
sum[blk[l]]=sum[blk[l]]+k*(x-l+1);
for(int i=blk[l]+1;i<=blk[r]-1;
++i)plt[i]=plt[i]+k;
for(int i=y;i<=r;++i)a[i]=a[i]+k;
sum[blk[r]]=sum[blk[r]]+k*(r-y+1);
}
else
{
ans=0;
if(blk[l]==blk[r])
{
for(int i=l;i<=r;++i)ans=ans+a[i];
printf("%lld\n",ans);continue;
}
for(int i=l;i<=x;++i)ans=ans+a[i];
for(int i=blk[l]+1;i<=blk[r]-1;++i)
ans=ans+sum[i]+plt[i];
for(int i=y;i<=r;++i)ans=ans+a[i];
printf("%lld\n",ans);
}
}
return 0;
}