全WA
#include<bits/stdc++.h>
using namespace std;
const int maxn=100000;
int a[maxn],tree[4*maxn],n,m,x,y,k,addx[4*maxn];
int op;
void built(int o,int l,int r){
if(l==r){
tree[o]=a[l];
return;
}
int m=(l+r)/2;
built(o*2,l,m);
built(o*2+1,m+1,r);
tree[o]=tree[o*2]+tree[o*2+1];
}
void chaxun(int o,int l,int r){
if(l==r){
addx[o]+=k;
tree[o]=k*(r-l+1);
return;
}
int m=(l+r)/2;
if(x<=m)chaxun(o*2,l,m);
else chaxun(o*2+1,m+1,r);
tree[o]=tree[o*2]+tree[o*2+1]+k*(r-l+1);
}
int he(int o,int l,int r,int add){
if(x<=l&&r<=y){
return tree[o]+add*(r-l+1);
}
int m=(l+r)/2,ans=0;
if(x<=m)ans+=he(o*2,l,m,add)+(r-l+1);
if(y>m)ans+=he(o*2+1,m+1,r,add)+(r-l+1);
return ans;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
built(1,1,n);
for(int i=1;i<=m;i++){
scanf("%d",&op);
if(op==1){
cin>>x>>y>>k;
chaxun(1,x,y);
}
if(op==2){
cin>>x>>y;
printf("%d\n",he(1,1,n,0));
}
}
return 0;
}