#include<bits/stdc++.h>
using namespace std;
int x,y,z,n,m,a[100005];
struct trees
{
int l,r,num;
}tree[400005];
void build(int l,int r,int g)
{
tree[g].l=l,tree[g].r=r;
if(l==r)
{
tree[g].num=a[l];
return;
}
int mid=l+r>>1;
build(l,mid,g*2);
build(mid+1,r,g*2+1);
tree[g].num=tree[g*2].num+tree[g*2+1].num;
return;
}
void add(int id,int num,int g)
{
if(tree[g].l>id||tree[g].r<id)
return;
tree[g].num+=num;
if(tree[g].l==tree[g].r)
return;
add(id,num,g*2);
add(id,num,g*2+1);
}
int ask(int l,int r,int g)
{
if(tree[g].r<l||tree[g].l>r)
return 0;
if(tree[g].l>=l&&tree[g].r<=r)
return tree[g].num;
int ans=ask(l,r,g*2)+ask(l,r,g*2+1);
//cout<<tree[g].l<<' '<<tree[g].r<<' '<<ans<<'\n';
return ans;
}
int main()
{
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=n;++i)
cin>>a[i];
build(1,n,1);
while(n--)
{
cin>>x>>y>>z;
if(x==1)
add(y,z,1);else
cout<<ask(y,z,1)<<'\n';
}
}//4 5 3 4 3
40分QWQ……别问我为啥用线段树打树状……