#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int aint[4*15005];
void Update(int node,int L,int R,int poz,int val){
if (L==R){
aint[node] += val; // Adaugă diferența la valoarea curentă
return;
}
int mid = (L+R)/2;
if (poz<=mid) Update(node*2,L,mid,poz,val);
else Update(node*2+1,mid+1,R,poz,val);
aint[node] = aint[node*2]+aint[node*2+1];
}
int Query(int node,int L,int R,int a,int b){
if (a<=L and R<=b){
return aint[node];
}
int mid = (L+R)/2;
int leftSum = 0,rightSum = 0;
if (a<=mid)leftSum = Query(node*2,L,mid,a,b);
if (mid+1<=b) rightSum = Query(node*2+1,mid+1,R,a,b);
return leftSum+rightSum;
}
int main()
{
int n,m;
fin >> n >> m;
for (int i=1;i<=n;++i){
int x;
fin >> x;
Update(1,1,n,i,x);
}
for (int i=1;i<=m;++i){
int C,x,y;
fin >> C >> x >> y;
if (C==1){
fout << Query(1,1,n,x,y) << '\n';
}else{
Update(1,1,n,x,-y);
}
}
return 0;
}