#include<stdio.h>
#define nmax 1000000
long v[nmax], n, m, i, sol;
FILE *f, *g;
int sum(long a, long b)
{ return a+b;
}
void update(long val, long poz, long nod, long s, long d)
{ long mj;
if(s==d)
{ v[nod]=v[nod]-val;
return;
}
mj=(s+d)/2;
if(poz<=mj) update(val, poz, 2*nod, s, mj);
else update(val, poz, 2*nod+1, mj+1, d);
v[nod]=sum(v[2*nod], v[2*nod+1]);
}
void find(long nod, long s, long d, long a, long b)
{ long mj;
if(s>=a && d<=b)
{ sol+=v[nod];
return;
}
mj=(s+d)/2;
if(a<=mj) find(2*nod, s, mj, a, b);
if(b>mj) find(2*nod+1, mj+1, d, a, b);
}
int main()
{ long op, x, a, b;
f=fopen("datorii.in", "r");
g=fopen("datorii.out", "w");
fscanf(f, "%d%d", &n, &m);
for(i=1; i<=n; i++)
{ fscanf(f, "%d", &x); // x=(-1)*x;
update(x, i, 1, 1, n);
}
for(i=1; i<=m; i++)
{ fscanf(f, "%d%d%d", &op, &a, &b);
if(op==1)
{ sol=0;
find(1, 1, n, a, b);
fprintf(g, "%d\n", sol*(-1));
}
if(op==0)
{ b=(-1)*b;
update(b, a, 1, 1, n);
}
}
return 0;
}