#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 ",get_sum(l,r)); } } return 0; }