#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int nrd,n,m,i,j,nr,sun[120000],v[15005],a,b,x,o;
void update(int nr,int st,int dr)
{
if(st==dr)
{ sun[nr]-=a; return; }
int md=(dr+st)/2;
if(b<=md) update(nr*2,st,md);
else update(nr*2+1,md+1,dr);
sun[nr]=sun[nr*2]+sun[nr*2+1];
}
int query(int nr,int st,int dr)
{
if(st>=a&&dr<=b) return sun[nr];
int md=(st+dr)/2,s=0;
if(max(a,st)<=min(b,md)) s+=query(2*nr,st,md);
if(max(a,md+1)<=min(b,dr)) s+=query(2*nr+1,md+1,dr);
return s;
}
int main() {
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin>>a;
a*=-1;
b=i;
update(1,1,n);
}
for(i=1;i<=m;i++)
{
fin>>o>>a>>b;
if(o==1) fout<<query(1,1,n)<<"\n";
if(o==0)
{
x=a; a=b; b=x;
update(1,1,n);
}
}
}