#include<bits/stdc++.h>
using namespace std;
#define N 4*100100
long long a[N];
long long s;
struct shu
{
long long l,r,tag,num;
}t[N];
void build(long long i,long long l,long long r)
{
t[i].l=l;
t[i].r=r;
if(l==r)
return ;
long long mid=(l+r)/2;
build(i*2,l,mid);
build(i*2+1,mid+1,r);
}
long long add(long long i)
{
if(t[i].l==t[i].r)
{
t[i].num=a[t[i].r];
return t[i].num;
}
t[i].num=add(i*2)+add(i*2+1);
return t[i].num;
}
void push(long long i)
{
if(t[i].tag>0)
{
t[i*2].tag+=t[i].tag;
t[i*2+1].tag+=t[i].tag;
t[i*2].num+=t[i].tag*(t[i*2].r-t[i*2].l+1);
t[i*2+1].num+=t[i].tag*(t[i*2+1].r-t[i*2+1].l+1);
t[i].tag=0;
}
}
void danxiu(long long i,long long dis,long long k)
{
t[i].num+=k;
if(t[i].l==t[i].r)
return ;
push(i);
if(dis<=t[i*2].r)
danxiu(i*2,dis,k);
if(t[i*2+1].l<=dis)
danxiu(i*2+1,dis,k);
t[i].num=t[i*2].num+t[i*2+1].num;
}
void quxiu(long long i,long long l,long long r,long long k)
{
if(l<=t[i].l&&t[i].r<=r)
{
t[i].num+=k*(t[i].r-t[i].l+1);
t[i].tag+=k;
return ;
}
push(i);
if(l<=t[i*2].r)
quxiu(i*2,l,r,k);
if(t[i*2+1].l<=r)
quxiu(i*2+1,l,r,k);
t[i].num=t[i*2].num+t[i*2+1].num;
}
void qucha(long long i,long long l,long long r)
{
if(l<=t[i].l&&t[i].r<=r)
{
s=s+t[i].num;
return ;
}
push(i);
if(l<=t[i*2].r)
qucha(i*2,l,r);
if(t[i*2+1].l<=r)
qucha(i*2+1,l,r);
t[i].num=t[i*2].num+t[i*2+1].num;
}
int main()
{
long long n,m;
cin>>n>>m;
for(long long i=1;i<=n;i++)
cin>>a[i];
for(long long i=n;i>=2;i--)
a[i]=a[i]-a[i-1];
build(1,1,n);
add(1);
for(long long i=1;i<=m;i++)
{
long long o;
cin>>o;
if(o==1)
{
long long l,r,k,d;
cin>>l>>r>>k>>d;
quxiu(1,l,l,k);
if(l+1<=r)
quxiu(1,l+1,r,d);
if(r+1<=n)
quxiu(1,r+1,r+1,-(k+d*(r-l)));
}
else if(o==2)
{
long long x;
cin>>x;
s=0;
qucha(1,1,x);
cout<<s<<endl;
}
}
}