#include <bits/stdc++.h>
using namespace std;
using ll=long long;
ll n,m,a[100001];
struct L{
ll l,r;
ll k,d,val;
}t[400001];
void build(ll p,ll l,ll r){
t[p].l=l,t[p].r=r;
if(l==r){
t[p].val=a[l];
return;
}
int mid=(l+r)>>1;
build(2*p,l,mid);
build(2*p+1,mid+1,r);
}
void spread(ll p){
ll lSum=t[p*2].r-t[p*2].l+1,rSum=t[p*2+1].r-t[p*2+1].l+1;
t[p*2].val+=(lSum*t[p].k+lSum*(lSum-1)/2*t[p].d);
t[p*2+1].val+=(rSum*(t[p].k+lSum*t[p].d)+(rSum)*(rSum-1)/2*t[p].d);
t[2*p].k+=t[p].k,t[2*p].d+=t[p].d;
t[2*p+1].k+=(lSum*t[p].d+t[p].k),t[2*p+1].d+=t[p].d;
t[p].k=0,t[p].d=0;
}
void add(ll p,ll x,ll y,ll k,ll d){
if(x<=t[p].l&&y>=t[p].r){
t[p].k+=k,t[p].d+=d;
ll N=t[p].r-t[p].l+1;
t[p].val+=(N*k+N*(N-1)/2*d);
return;
}
spread(p);
ll mid=(t[p].l+t[p].r)>>1;
if(x>mid) add(2*p+1,x,y,k,d);
if(x<=mid) add(2*p,x,y,k,d);
if(y>mid&&x<=mid) add(2*p+1,x,y,k+(mid-x+1)*d,d);
}
ll ask(ll p,ll x,ll y){
if(x<=t[p].l&&y>=t[p].r){
return t[p].val;
}
spread(p);
ll mid=(t[p].l+t[p].r)>>1,sum=0;
if(x<=mid) sum+=ask(2*p,x,y);
if(y>mid) sum+=ask(2*p+1,x,y);
return sum;
}
int main(){
cin>>n>>m;
for (ll i=1;i<=n;++i)cin>>a[i];
build(1,1,n);
for (ll i=0;i<m;++i){
ll p,x,y,k,d;
cin>>p;
if(p==1){
cin>>x>>y>>k>>d;
add(1,x,y,k,d);
}
else cin>>x,cout<<ask(1,x,x)<<endl;
}
return 0;
}