import java.util.*;
import java.io.*;
import java.math.*;
public class Main{
public static void main(String args[]) throws IOException{
Read sc=new Read();
int n=sc.nextInt(),m=sc.nextInt();
long preSum[]=new long[n+1];
long sum[]=new long[4*n+5];
for(int i=0;i<n;i++){
preSum[i+1]=preSum[i]+sc.nextInt();
}
build(preSum,sum,0,n-1,1);
for(int i=0;i<m;i++){
int a=sc.nextInt();
if(a==1){
int x=sc.nextInt(),k=sc.nextInt();
change(sum,0,n-1,1,k,x-1);
}
else{
int x=sc.nextInt(),y=sc.nextInt();
System.out.println(getSum(sum,0,n-1,x-1,y-1,1));
}
}
}
public static long getSum(long sum[],int l,int r,int a,int b,int idx){
if(l==a&&r==b){
return sum[idx];
}
int mid=(l+r)>>1;
if(b<=mid){
return getSum(sum,l,mid,a,b,2*idx);
}
else if(a>mid){
return getSum(sum,mid+1,r,a,b,2*idx+1);
}
return getSum(sum,l,mid,a,mid,2*idx)+getSum(sum,mid+1,r,mid+1,b,2*idx+1);
}
public static void change(long sum[],int l,int r,int idx,int k,int x){
sum[idx]+=k;
if(l==r){
return;
}
int mid=(l+r)>>1;
if(x<=mid){
change(sum,l,mid,2*idx,k,x);
}
else{
change(sum,mid+1,r,2*idx+1,k,x);
}
}
public static void build(long preSum[],long sum[],int l,int r,int idx){
sum[idx]=preSum[r+1]-preSum[l];
if(l==r){
return;
}
int mid=(l+r)>>1;
build(preSum,sum,l,mid,2*idx);
build(preSum,sum,mid+1,r,2*idx+1);
}
}
class Read{
private BufferedReader bf;
private StringTokenizer st;
public Read(){
bf=new BufferedReader(new InputStreamReader(System.in));
st=new StringTokenizer("");
}
public String nextLine() throws IOException{
return bf.readLine();
}
public String next() throws IOException{
while(!st.hasMoreTokens()){
st=new StringTokenizer(bf.readLine());
}
return st.nextToken();
}
public int nextInt() throws IOException{
return Integer.parseInt(next());
}
public long nextLong() throws IOException{
return Long.parseLong(next());
}
public double nextDouble() throws IOException{
return Double.parseDouble(next());
}
public BigInteger nextBigInteger() throws IOException{
return new BigInteger(next());
}
}