#include<bits/stdc++.h>
using namespace std;
int l[100001],r[100010],b[100001],sum[100001],tag[100001];
int main(){
int n,m;
cin>>n>>m;
int N=sqrt(n);
int blo=n/N;
if(n%N)blo++;
for(int i=1;i<=n;i++){
cin>>b[i];
}
for(int i=1;i<=blo;i++){
l[i]=(i-1)*N+1;
r[i]=min(n,i*N);
for(int j=l[i];j<=r[i];j++){
sum[i]+=b[j];
}
}
for(int i=1;i<=m;i++){
int x;
cin>>x;
if(x==1){
int y,z,k,ls,rs;
cin>>y>>z>>k;
for(int j=1;j<=blo;j++){
if(y==l[j]){
ls=j;
break;
}else if(y>l[j]&&y<l[j+1]){
ls=j+1;
break;
}
}
for(int j=1;j<=blo;j++){
if(z==r[j]){
rs=j;
break;
}else if(z>r[j]&&z<r[j+1]){
rs=j;
break;
}
}
for(int j=ls;j<=rs;j++){
tag[j]+=k;
}
for(int j=y;j<l[ls];j++){
b[j]+=k;
sum[ls-1]+=k;
}
for(int j=r[rs]+1;j<=z;j++){
b[j]+=k;
sum[r[rs]]+=k;
}
}else{
int y,z,ls,rs;
long long ans=0;
cin>>y>>z;
for(int j=1;j<=blo;j++){
if(y==l[j]){
ls=j;
break;
}else if(y>l[j]&&y<l[j+1]){
ls=j+1;
break;
}
}
for(int j=1;j<=blo;j++){
if(z==r[j]){
rs=j;
break;
}else if(z>r[j]&&z<r[j+1]){
rs=j;
break;
}
}
for(int j=ls;j<=rs;j++){
ans+=sum[j];
ans+=tag[j]*N;
}
for(int j=y;j<l[ls];j++){
ans+=b[j];
for(int k=1;k<=l[ls];k++){
if(l[k]-1==j){
ans+=tag[l[k]];
}
}
}
for(int j=r[rs]+1;j<=z;j++){
ans+=b[j];
for(int k=r[rs]+1;k<=blo;k++){
if(r[k]+1==j){
ans+=tag[r[k]];
}
}
}
cout<<ans<<"\n";
}
}
return 0;
}