1 #include <iostream>
2 #include <cstdio>
3 #define maxn 100005
4
5 using namespace std;
6
7 int n,m,a,b,x;
8 struct node
9 {
10 int l,r,dis,falg;
11 }tree[maxn*4];
12
13 void tree_add(int now)
14 {
15 tree[now].dis=tree[now*2].dis+tree[now*2+1].dis;
16 }
17
18 void tree_build(int now,int l,int r)
19 {
20 tree[now].l=l,tree[now].r=r;
21 int midd=(l+r)/2;
22 if(l==r)
23 {
24 cin>>tree[now].dis;
25 return ;
26 }
27 tree_build(now*2,l,midd);
28 tree_build(now*2+1,midd+1,r);
29 tree_add(now);
30 }
31
32 void tree_change(int now,int to,int dis)
33 {
34 if(tree[now].l==tree[now].r)
35 {
36 tree[now].dis+=dis;
37 return ;
38 }
39 int midd=(tree[now].l+tree[now].r)/2;
40 if(to<=midd) tree_change(now*2,to,dis);
41 else tree_change(now*2+1,to,dis);
42 tree_add(now);
43 }
44
45 int tree_query(int now,int l,int r)
46 {
47 if(tree[now].l==l&&tree[now].r==r) return tree[now].dis;
48 int midd=(tree[now].l+tree[now].r)/2;
49 if(l>midd) return tree_query(now*2+1,l,r);
50 else if(r<=midd) return tree_query(now*2,l,r);
51 else return tree_query(now*2,l,midd)+tree_query(now*2+1,midd+1,r);
52 }
53
54 int main()
55 {
56 cin>>n;
57 tree_build(1,1,n);
58
59 cin>>m;
60 for(int i=1;i<=m;i++)
61 {
62 cin>>x>>a>>b;
63 if(x==1)
64 tree_change(1,a,b);
65 else
66 cout<<tree_query(1,a,b)<<endl;
67 }
68
69 return 0;
70 }