#include<iostream>
#include<math.h>
using namespace std;
long long n,m,t,len;
long long a[100005],l[320],r[320],sum[320],lazy[320],pos[100005];
int main()
{
cin>>n>>m;
for(long long i=1;i<=n;i++)
{
cin>>a[i];
}
len=sqrt(n);
t=n/len;
if(n%len!=0)
{
t++;
}
for(long long i=1;i<=t;i++)
{
l[i]=(i-1)*len+1;
r[i]=i*len;
}
if(r[t]>n)
{
r[t]=n;
}
for(long long i=1;i<=t;i++)
{
for(long long j=l[i];j<=r[i];j++)
{
pos[j]=i;
sum[i]+=a[j];
}
}
while(m--)
{
long long opt,x,y,k;
cin>>opt>>x>>y;
if(opt==1)
{
cin>>k;
if(pos[x]==pos[y])
{
for(long long i=x;i<=y;i++)
{
a[i]+=k;
sum[pos[i]]+=k;
}
}
else
{
for(long long i=x;i<=r[pos[x]];i++)
{
a[i]+=k;
sum[pos[i]]+=k;
}
for(long long i=pos[x]+1;i<=pos[y]-1;i++)
{
lazy[i]+=k;
}
for(long long i=l[pos[y]];i<=y;i++)
{
a[i]+=k;
sum[pos[i]]+=k;
}
}
}
else
{
long long s=0;
if(pos[x]==pos[y])
{
for(long long i=x;i<=y;i++)
{
s+=a[i];
}
}
else
{
for(long long i=x;i<=r[pos[x]];i++)
{
s+=a[i]+lazy[pos[i]];
}
for(long long i=pos[x]+1;i<=pos[y]-1;i++)
{
s+=sum[i]+lazy[i];
}
for(long long i=l[pos[y]];i<=y;i++)
{
s+=a[i]+lazy[pos[i]];
}
}
cout<<s<<endl;
}
}
}