/*
* datorii.cpp
* http://www.infoarena.ro/problema/datorii
* Created on: 4 Sep 2014
* Author: XiewRikl
*/
#include<stdio.h>
const unsigned int N = 15001;
unsigned long int A[N];
void processQuerry(short unsigned int ident,unsigned int x,unsigned int y,unsigned int length,FILE *fout){
if(ident == 0){ //Processing a modification operation
for(unsigned int i=x;i<=length;++i)
A[i]-=y;
//printf("\nA[]= ");
//for(unsigned int i=1;i<=length;++i)
// printf("%lu ",A[i]);
return;
}
//Processing a request (Assuming ident is 1, BAD behaviour, but fast)
fprintf(fout,"%lu\n",(A[y]-A[x-1]));
}
int main(void){
FILE *fin,*fout;
fin = fopen("datorii.in","r");
fout = fopen("datorii.out","w");
unsigned int length;
unsigned long nr_op,temp;
fscanf(fin,"%u %lu",&length,&nr_op);
//printf("\nA[]= ");
for(unsigned int i=1;i<=length;++i){
fscanf(fin,"%lu",&temp);
A[i]=A[i-1]+temp;
//printf("%lu ",A[i]);
}
short unsigned int ident;
unsigned int x,y;
for(unsigned long i=1;i<=nr_op;++i){
fscanf(fin,"%hu %u %u",&ident,&x,&y);
processQuerry(ident,x,y,length,fout);
}
fclose(fin);
fclose(fout);
return(0);
}