#include <cstdio>
#define lowbit(x) ((x)&(-x))
#define N 500009
#define ll long long
using namespace std;
ll t1[N],t2[N],n,m,a[N];
void add(ll k,ll p){
ll v=k*p;
for(;k<=n;k+=lowbit(k))t1[k]+=p,t2[k]+=v;
}
void add_range(ll l,ll r,ll p){
add(l,p);
add(r+1,-p);
}
ll getsum(ll *t,ll k){
ll ret=0;
for(;k;k-=lowbit(k)){
ret+=t[k];
}
return ret;
}
ll get_range(ll l,ll r){
return ((r+1ll)*getsum(t1,r)-getsum(t2,r))-(l*1ll*getsum(t1,l-1)-getsum(t2,l-1));
}
int main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
add(i,a[i]-a[i-1]);
}
while(m--){
int o,x,y,k;
scanf("%lld%lld",&o,&x);
if(o==1){
scanf("%lld%lld",&y,&k);
add_range(x,y,k);
}
else printf("%lld\n",get_range(x,x));
}
}
我自己在本地都跑过了,没有问题啊