#include <iostream>
#define TREE 1000001
using namespace std;
class SegmentTree{
public:
int tree[TREE*4];
SegmentTree()=default;
int intiTree(int start, int end, int node,int *arr);
int Sumtree(int start, int end, int node, int left, int right);
void Change_node(int start, int end, int node,int* arr, int change, int val);
};
int SegmentTree::intiTree(int start, int end, int node, int* arr){
int mid = (start+end)/2;
if(start==end) return tree[node]=arr[start];
return tree[node] = intiTree(start, mid, node*2,arr) + intiTree(mid+1, end, node*2+1,arr);
}
int SegmentTree::Sumtree(int start, int end, int node, int left, int right){
if(end<left || right<start) return 0;
if(left<=start&&end<=right) return tree[node];
int mid = (start+end)/2;
return Sumtree(start,mid,node*2,left,right) + Sumtree(mid+1,end,node*2+1,left,right);
}
void SegmentTree::Change_node(int start, int end, int node, int *arr, int change, int val){
if(end<change||change<start) return;
if(change>=start&&change<=end){
tree[node]=tree[node]-arr[change]+val;
if(end==start) return;
}
int mid = (start+end)/2;
Change_node(start,mid,node*2,arr,change,val);
Change_node(mid+1,end,node*2+1,arr,change,val);
return;
}
int N,M,K;
int a,b,c;
int main() {
SegmentTree trees;
int arr[TREE];
cin>>N>>M>>K;
for(int i=1;i<=N;i++){
cin>>arr[i];
}
trees.intiTree(1,N,1,arr);
while(M+K>0){
cin>>a>>b>>c;
if(a==1) {
trees.Change_node(1,N,1,arr,b,c);
M--;
}
else{
cout<<trees.Sumtree(1,N,1,b,c)<<endl;
K--;
}
}
return 0;
}