#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in") ;
ofstream fout("datorii.out") ;
int n , m , start , finall , poz , val , suma ;
int arb[60001] ;
void pun(int nod , int st , int dr )
{
if ( st == dr )
{
arb[nod] = val ;
return ;
}
int med = (st+dr)/2 ;
if ( poz <= med )
pun(2*nod,st,med) ;
else
pun(2*nod+1,med+1,dr );
arb[nod] = arb[2*nod]+arb[2*nod+1] ;
}
void cautare(int nod , int st , int dr )
{
if ( start <= st && dr <= finall )
{
suma = suma+arb[nod] ;
return ;
}
int med = (st+dr)/2 ;
if ( start <= med )
cautare(2*nod,st,med) ;
if ( med < finall )
cautare(2*nod+1,med+1,dr) ;
}
void schimb(int nod , int st , int dr )
{
if ( st == dr )
{
arb[nod] = arb[nod]-val ;
return ;
}
int med = (st+dr)/2 ;
if ( poz <= med )
schimb(2*nod,st,med) ;
else
schimb(2*nod+1,med+1,dr) ;
arb[nod] = arb[2*nod]+arb[2*nod+1] ;
}
int main()
{
int i , tip ;
fin >> n >> m ;
for ( i = 1 ; i <= n ; i++ )
{
fin >> val ;
poz = i ;
pun(1,1,n) ;
}
for ( i = 1 ; i <= 2*n ; i++ )
cout << arb[i] << " " ;
for ( i = 1 ; i <= m ; i++ )
{
fin >> tip ;
if ( tip == 1 )
{
fin >> start >> finall ;
suma = 0;
cautare(1,1,n) ;
fout << suma << '\n' ;
}
else
{
fin >> poz >> val ;
schimb(1,1,n) ;
}
}
}