#include <bits/stdc++.h>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
#define Nmax 4000013
int i,n,m,value,op,a;
int Stree[Nmax];
void update(int node, int st, int dr, int x, int y)
{
if (st>dr || x>dr || y<st) return ;
if (st>=x && dr<=y)
{
Stree[node]+=value;
return;
}
update(node*2,st,(st+dr)/2,x,y);
update(node*2+1,(st+dr)/2+1,dr,x,y);
Stree[node]=Stree[node*2]+Stree[node*2+1];
}
int query(int node,int st,int dr,int x,int y)
{
if (st>dr || x>dr || y<st) return 0;
if (st>=x && dr<=y) return Stree[node];
return (query(node*2,st,(st+dr)/2,x,y)+query(node*2+1,(st+dr)/2+1,dr,x,y));
}
int main(void)
{
in>>n>>m;
for (i=1;i<=n;++i)
{
in>>value;
update(1,1,n,i,i);
}
while(m--)
{
in>>op>>a>>value;
if (op==1) out<<query(1,1,n,a,value)<<"\n";
if (op==0) value*=-1, update(1,1,n,a,a);
}
return 0;
}