#include<bits/stdc++.h>
#define nmax 15005
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m;
int arb[4*nmax];
void update(int st, int dr, int poz, int pz, int val)
{
if(st>pz || dr<pz)
return;
if(st==dr)
{
arb[poz] -= val;
return;
}
int mid=(st+dr)/2;
update(st,mid,2*poz,pz,val);
update(mid+1,dr,2*poz+1,pz,val);
arb[poz] = arb[2*poz+1] + arb[2*poz];
}
int gaseste(int st, int dr, int poz, int a, int b){
if(st>b || dr<a) return 0;
if(st>=a && dr<=b) return arb[poz];
int mid = (st+dr)/2;
int e1 = gaseste(st,mid,2*poz,a,b);
int e2 = gaseste(mid+1,dr,2*poz+1,a,b);
return e1+e2;
}
void solve(){
in >> n >> m;
for(int i=1; i<=n; i++){
int x;
in >> x;
update(1,n,1,i,-x);
}
for(int i=1; i<=m; i++)
{
int c,a,b;
f>>c>>a>>b;
if(!c)
update(1,n,1,a,b);
else
g<<gaseste(1,n,1,a,b)<<'\n';
}
}
int main()
{
solve();
return 0;
}