#include<bits/stdc++.h>
using namespace std;
const int maxn = 500010;
int n, m;
int a[maxn], c[maxn];
inline void update(int x, int k){
while(x <= n){
c[x] += k;
x += x & (-x);
}
return;
}
inline int get_sum(int x){
int sum = 0;
while(x > 0){
sum += c[x];
x -= x & (-x);
}
return sum;
}
int main(){
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++){
scanf("%d", &a[i]);
c[i] = a[i];
int l = i & (-i);
for(int j = i-l+1; j < i; j++)
c[i] += a[j];
}
for(int i = 1, t; i <= m; i++){
scanf("%d", &t);
if(t == 1){
int x, k;
scanf("%d%d", &x, &k);
a[x] += k;
update(x, k);
}
else if(t == 2){
int x, y;
scanf("%d%d", &x, &y);
int sum1 = get_sum(x-1);
int sum2 = get_sum(y);
printf("%d\n", sum2 - sum1);
}
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1000010;
int n, m;
int a[maxn], c[maxn];
inline void add(int x, int k){
while(x <= n){
c[x] += k;
x += x & (-x);
}
}
inline void get_num(int x){
int sum = 0;
while(x > 0){
sum += c[x];
x -= x & (-x);
}
printf("%d\n", sum);
}
int main(){
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++){
scanf("%d", &a[i]);
add(i, a[i]-a[i-1]);
}
for(int i = 1, t; i <= m; i++){
scanf("%d", &t);
if(t == 1){
int x, y, k;
scanf("%d%d%d", &x, &y, &k);
add(x, k);
add(y+1, -k);
}
else if(t == 2){
int x, y;
scanf("%d", &x);
get_num(x);
}
}
return 0;
}