#include<iostream>
#include<cstring>
#define lbt(x) ((x) & (-x))
#define mst(a,b) memset(a,b,sizeof(a))
#define fr(a,b) for(int i = a;i <= b;i++)
using namespace std;
const int X = 1e6 + 10;
int a[X],d[X],t[X];
int n,q;
void add(int p,int x){
for(int i = p;i <= n;i += lbt(i)){
t[i] += x;
}
}
int getnum(int x){
int s = 0,p = x;
while(p){
s += t[p];
p -= lbt(p);
}
return s;
}
int main(){
while(cin>>n>>q){
mst(t,0);
fr(1,n){
int x;
cin>>x;
add(i,x);
}
fr(1,q){
int cmd,x,y;
cin>>cmd>>x>>y;
if(cmd == 1){
if(y){
add(x,y);
}
}
else{
cout<<getnum(y) - getnum(x - 1)<<endl;
}
}
}
}