rt
#include<bits/stdc++.h>
using namespace std;
const int MAXN=114514*5;
int a[MAXN*4],n,m;
void build(int x,int lft,int rgt)
{
if(lft==rgt)
{
cin>>a[x];
return ;
}
int mid=(lft+rgt)/2;
build(2*x,lft,mid);
build(2*x+1,mid+1,rgt);
a[x]=a[2*x+1]+a[2*x];
return ;
}
void update(int rt,int b,int lft,int rgt,int x)//a[rt]->a[rt]+b
{
if(lft==rgt)
{
a[rt]+=b;
return ;
}
int mid=(lft+rgt)/2;
if(rt<=mid)
{
update(rt,b,lft,mid,2*x);
}
else
{
update(rt,b,mid+1,rgt,2*x+1);
}
a[x]=a[x*2]+a[x*2+1];
}
int query(int l,int r,int x,int nl,int nr)
{
if(nl<=l&&r<=nr) return a[x];
int mid=(l+r)/2;
if(nl<=mid)
{
if(mid<nr)
{
return query(l,mid,2*x,nl,nr)+query(mid+1,r,2*x+1,nl,nr);
}
else
{
return query(l,mid,2*x,nl,nr);
}
}
else
{
return query(mid+1,r,2*x+1,nl,nr);
}
}
int main()
{
cin>>n>>m;
build(1,1,n);
while(m--)
{
int opt,c,d;
cin>>opt>>c>>d;
if(opt==1)
{
update(c,d,1,n,1);
}
else
{
cout<<query(1,n,1,c,d)<<endl;
}
}
return 0;
}