#include<iostream> #include<cstdio> #include<cstring> #define maxn 100010 #define maxm 200020 #define maxx 10010 using namespace std; int n,m,a[maxn],num; struct node { int lc,rc; int l,r; int sum; }tree[maxm]; void build(int ll,int rr) { int cur=++num; tree[cur].l=ll;tree[cur].r=rr; if(ll!=rr-1) { tree[cur].lc=num+1; build(ll,(ll+rr)/2); tree[cur].rc=num+1; build((ll+rr)/2,rr); tree[cur].sum=tree[tree[cur].lc].sum+tree[tree[cur].rc].sum; } else tree[cur].sum=a[ll]; } void change(int k,int x,int p) { if(tree[k].l==tree[k].r-1)tree[k].sum+=p; else { if(x<(tree[k].l+tree[k].r)/2)change(tree[k].lc,x,p); if(x>=(tree[k].l+tree[k].r)/2)change(tree[k].rc,x,p); tree[k].sum=tree[tree[k].lc].sum+tree[tree[k].rc].sum; } } int find(int k,int ll,int rr) { if(ll<=tree[k].l&&rr>=tree[k].r)return tree[k].sum; int ans=0; if(ll<(tree[k].l+tree[k].r)/2)ans+=find(tree[k].lc,ll,rr); if(rr>(tree[k].l+tree[k].r)/2)ans+=find(tree[k].rc,ll,rr); return ans; } int main() { cin>>n; int i,j,x,y,z; for(i=1;i<=n;i++) cin>>a[i]; build(1,n+1); cin>>m; for(i=1;i<=m;i++) { cin>>x>>y>>z; if(x==1)change(1,y,z); if(x==2)cout<<find(1,y,z+1)<<endl; } }