#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;
}
}