30pts #5~11WA
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
long long x[n+10]={0};
long long qzh[n+10]={0};
for(int i=1;i<=n;i++){
cin>>x[i];
qzh[i]=x[i];
}
int sum=2;
while(sum<=n){
int i=sum;
for(i=i;i<=n;i+=sum){
qzh[i]+=qzh[i-(sum/2)];
}
sum*=2;
}
for(int ll=0;ll<m;ll++){
int te,xx,y;
cin>>te>>xx>>y;
if(te==1){
int cs=1;
while(xx<=n){
qzh[xx]+=y;
xx=xx>>(cs);
xx=xx<<(cs);
xx+=pow(2,cs);
// cout<<xx<<endl;
cs++;
}
}else{
long long a[15]={0},b[15]={0},xb=14,asum=0,bsum=0;
xx--;
while(xx>0){
a[xb]=xx%2;
xx/=2;
xb--;
}
xb=14;
while(y>0){
b[xb]=y%2;
y/=2;
xb--;
}
// for(int i=0;i<15;i++){
// cout<<a[i]<<" ";
// }
// cout<<endl;
// for(int i=0;i<15;i++){
// cout<<b[i]<<" ";
// }
// cout<<endl;
xb=0;
for(int i=0;i<15;i++){
if(b[i]==1){
xb+=pow(2,14-i);
bsum+=qzh[xb];
// cout<<bsum<<endl;
}
}
xb=0;
for(int i=0;i<15;i++){
if(a[i]==1){
xb+=pow(2,14-i);
asum+=qzh[xb];
}
}
// cout<<asum<<" * "<<bsum;
cout<<bsum-asum<<endl;
}
// cout<<"---------------"<<endl;
// for(int i=1;i<=n;i++){
// cout<<qzh[i]<<" ";
// }
// cout<<endl<<"---------------"<<endl;
}
return 0;
}