#include<bits/stdc++.h>
#define read(x) scanf("%d",&x)
using namespace std;
const int N=1e6+7;
struct BIT
{
int a[N];
void modify(int pos,int v)
{
for(int i=pos;i<N;i+=i&-i)
a[i]+=v;
}
int query(int pos)
{
int ans=0;
for(int i=pos;i>0;i-=i&-i)
ans+=a[i];
return ans;
}
}bit0,bit1;
void updata(int l,int r,int x)
{
bit0.modify(l,-x*(l-1));
bit0.modify(r+1,x*r);
bit1.modify(l,x);
bit1.modify(r+1,-x);
}
int get_sum(int l,int r)
{
int ansl=bit1.query(l-1)*(l-1)+bit0.query(l-1);
int ansr=bit1.query(r)*r+bit0.query(r);
return ansr-ansl;
}
int n,q;
int main()
{
read(n); read(q);
for(int i=1;i<=n;i++)
{
int x; read(x);
bit0.modify(i,x);
}
while(q--)
{
int op;
read(op);
if(op==1)
{
int l,r,x;
read(l); read(r); read(x);
updata(l,r,x);
}
else
{
int l,r;
read(l); read(r);
printf("%d\n",get_sum(l,r));
}
}
return 0;
}