#include<bits/stdc++.h>
using namespace std;
struct tree{
int num,l,r;
};
int in[500001];tree t[500001];
tree join(tree a,tree b){
tree c;
c.l=min(a.l,b.l);
c.r=max(a.r,b.r);
c.num=a.num+b.num;
}
void build(int i,int l,int r){
if(l==r){
t[i].num=in[l];
return ;
}
int mid=(l+r)/2;
build(i*2,l,mid);build(i*2+1,mid+1,r);
t[i]=join(t[i*2],t[i*2+1]);
}
long long ans=0;
void add(int i,int l,int r,int k){
if(t[i].l>=l&&t[i].r<=r){
t[i].num+=k;
return ;
}
if(t[i*2].r>=l)
add(i*2,l,r,k);
if(t[i*2+1].l<=r)
add(i*2+1,l,r,k);
}
long long search(int i,int dis){
ans+=t[i].num;
if(t[i].l==t[i].r)
return ans;
if(dis<=t[i*2].r)
search(i*2,dis);
if(dis>=t[i*2+1].l)
search(i*2+1,dis);
return ans;
}
int main(){int m,n;
cin>>m>>n;
for(int i=1;i<=n;i++){
cin>>in[i];
}
build(1,1,n);
for(int i=1;i<=m;i++){
int a,b,c,d;
cin>>a;
if(a==1){cin>>b>>c>>d;
add(1,b,c,d);}
else {
cin>>b>>c;cout<<search(b,c);}
}
}