#include<bits/stdc++.h>
using namespace std;
long long t[400010],tag[400010],e,w;
long long a[100010],ch[100010],n,m,opt;
long long ll,rr,kk,dd,pp;
void build(int date,int l,int r)
{
if(l==r)
{
t[date]=ch[l];
return;
}
int mid=(l+r)>>1;
build(date<<1,l,mid);
build(date<<1|1,mid+1,r);
t[date]=t[date<<1]+t[date<<1|1];
}
void change(int date,int l,int r,int hl,int hr,int ddd)
{
if(hl<=l&&r<=hr)
{
t[date]=t[date]+(r-l+1)*ddd;
if(date<<1<=400000)tag[date<<1]+=ddd;
if(date<<1|1<=400000)tag[date<<1|1]+=ddd;
return;
}
int mid=(l+r)>>1;
if(hl<=mid)change(date<<1,l,mid,hl,hr,ddd);
if(mid<hr)change(date<<1|1,mid+1,r,hl,hr,ddd);
t[date]=t[date<<1]+t[date<<1|1];
}
long long ask(int date,int l,int r)
{
if(tag[date]!=0)
{
t[date]+=(r-l+1)*tag[date];
if(date<<1<=400000)tag[date<<1]+=tag[date];
if(date<<1|1<=400000)tag[date<<1|1]+=tag[date];
tag[date]=0;
}
if(r<=pp)return t[date];
int mid=(l+r)>>1;
if(pp<=mid)return ask(date<<1,l,mid);
else return ask(date<<1,l,mid)+ask(date<<1|1,mid+1,r);
}
int main()
{
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
ch[i]=a[i]-a[i-1];
}
build(1,1,n);
for(int i=1;i<=m;i++)
{
scanf("%lld",&opt);
if(opt==1)
{
scanf("%lld%lld%lld%lld",&ll,&rr,&kk,&dd);
change(1,1,n,ll,ll,kk);
if(ll!=rr)change(1,1,n,ll+1,rr,dd);
w=kk+(rr-ll)*dd;
if(rr+1<=n)change(1,1,n,rr+1,rr+1,-w);
}
else
{
scanf("%lld",&pp);
e=ask(1,1,n);
printf("%lld\n",e);
}
}
return 0;
}