#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+10;
ll sum[N],a[N],n,m,add[N];
ll fun[N];
void build(int k,int l,int r){
if(l==r){sum[k]=a[l];return ;}
int mid=(l+r)/2;
build(k*2,l,mid);
build(k*2+1,mid+1,r);
sum[k]=sum[k*2]+sum[k*2+1];
}
void Add(ll k,ll l,ll r,ll v){
add[k]+=v;
sum[k]+=v*(r-l+1);
}
void push_down(int k,int l,int r,int mid){
if(!add[k]) return;
Add(k*2,l,mid,add[k]);
Add(k*2+1,mid+1,r,add[k]);
add[k]=0;
}
void change(int k,int l,int r,int x,int y,ll v){
if(x<=l&&r<=y){Add(k,l,r,v);return;}
int mid=(l+r)/2;
push_down(k,l,r,mid);
if(x<=mid) change(k*2,l,mid,x,y,v);
if(mid<y) change(k*2+1,mid+1,r,x,y,v);
sum[k]=sum[k*2]+sum[k*2+1];
}
ll query(int k,int l,int r,int x,int y){
if(x<=l&&r<=y){return sum[k];}
int mid=(l+r)/2;
ll res=0;
push_down(k,l,r,mid);
if(x<=mid) res+=query(k*2,l,mid,x,y);
if(mid<y) res+=query(k*2+1,mid+1,r,x,y);
return res;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%lld",&fun[i]);
a[i]=fun[i]-fun[i-1];
}
build(1,1,n);
int opt,l,r,k,d;
for(int i=1;i<=m;i++){
scanf("%d%d",&opt,&l);
if(opt==1){
scanf("%d%d%d",&r,&k,&d);
change(1,1,n,l,l,k);
change(1,1,n,l+1,r,d);
change(1,1,n,r+1,r+1,(ll)(-(k+d*(r-l))));
}
else{
printf("%lld\n",query(1,1,n,1,l));
}
}
return 0;
}