#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N=100010;
int n, m;
int w[N];
struct Node
{
int l,r;
int sum;
}tr[N*4];
void pushup(int u)
{
tr[u].sum= tr[u<< 1].sum+ tr[u<<1|1].sum;
}
void build(int u, int l, int r)
{
if (1 == r) tr[u]={l,r,w[r]};
else
{
tr[u]={l,r};
int mid=1+r>>1;
build(u << 1,l,mid), build(u << 1|1, mid + 1,r);
pushup(u);
}
int query(int u, int l, int r)
{
if(tr[u].l >= 1&& tr[u].r<=r) return tr[u].sum;
int mid= tr[u].l + tr[u].r>>1;
int sum = 0;
if(1 <= mid) sum query(u<<1,1,r);
if(r> mid) sum += query(u<<1|1,1,r);
return sum;
}
void modify(int u, int x, int v)
{
if (tr[u].l == tr[u].r) tr[u].sum += V;
else
{
int mid = tr[u].1+tr[u].r >> 1;
if(×<= mid) modify(u<< 1,x, v);
else modify(u<<1|1,x,v);
pushup(u);
}
}
int main()
{
scanf("%d%d",&n,&m);
for (int i= 1;i=n; i ++)scanf("%d",&w[i]);
build(1,1,n);
int k, a, b;
while(m--)
{
scanf("%d%d%d",&k,&a,&b);
if(k==0) printf("%d\n",query(1, a,b)); else modify(1, a,b);
return 0;
}