#include <stdio.h>
int main(){
int n,m,i,j;
int oper,one,two;
int sum,max;
scanf("%d %d",&n,&m);
int grids[n];
for(i = 1; i <= n; i++){
scanf("%d",&grids[i]);
}
for(j = 0; j < m; j++){
scanf("%d %d %d",&oper,&one,&two);
switch(oper){
case 1:
grids[one] = two;
break;
case 2:
sum = 0;
for(i = one; i <= two; i++){
sum += grids[i];
}
printf("%d\n",sum);
break;
case 3:
max = grids[one];
for(i = one+1; i <= two; i++){
if(grids[i] > max)
max = grids[i];
}
printf("%d\n",max);
break;
}
}
return 0;
}