#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int n, m, s[N];
int t[N*4], laz[N*4];
#define ls x<<1
#define rs x<<1|1
void spread(int x, int l, int r){
int mid = (l+r)>>1;
t[ls] += laz[x]*(mid-l+1);
t[rs] += laz[x]*(r-mid);
laz[ls] += laz[x];
laz[rs] += laz[x];
laz[x] = 0;
}
void modify(int x, int l, int r, int ql, int qr, int v){
if(ql<=l && r<=qr){
t[x] += v*(r-l+1);
laz[x] += v;
return;
}
if(laz[x])
spread(x, l, r);
int mid = (l+r)>>1;
if(ql<=mid)
modify(ls, l, mid, ql, qr, v);
if(qr>mid)
modify(rs, mid+1, r, ql, qr, v);
t[x] = t[ls]+t[rs];
}
int query(int x, int l, int r, int ql, int qr){
if(ql<=l && r<=qr)
return t[x];
if(laz[x])
spread(x, l, r);
int mid = (l+r)>>1, sum = 0;
if(ql<=mid)
sum += query(ls, l, mid, ql, qr);
if(qr>mid)
sum += query(rs, mid+1, r, ql, qr);
return sum;
}
int main(){
freopen("P1438_1.in", "r", stdin);
scanf("%d%d", &n, &m);
for(int i=1; i<=n; ++i)
scanf("%d", s+i);
while(m--){
int x, p, l, r, K, D;
scanf("%d", &x);
if(x==1){
scanf("%d%d%d%d", &l, &r, &K, &D);
modify(1, 1, n, l, l, K);
if(l!=r)
modify(1, 1, n, l+1, r, D);
}
else{
scanf("%d", &p);
printf("%d\n", query(1, 1, n, 1, p)+s[p]);
}
}
return 0;
}