#include<iostream>
#include<cstdio>
using namespace std;
int a[100001],tot;
struct node
{
int l,r;
int ll,rr;
int sum;
}tree[200001];
void build(int l,int r)
{
int k=++tot;
tree[k].l=l;
tree[k].r=r;
if(l==r-1)
tree[k].sum=a[l];
else
{
tree[k].ll=tot+1;
build(l,(l+r)/2);
tree[k].rr=tot+1;
build((l+r)/2,r);
tree[k].sum=tree[tree[k].ll].sum+tree[tree[k].rr].sum;
}
}
int find(int k,int x,int y)
{
if(x<=tree[k].l&&y>=tree[k].r)
return tree[k].sum;
int ans=0;
if(x<(tree[k].l+tree[k].r)/2)ans+=find(tree[k].ll,x,y);
if(y>(tree[k].l+tree[k].r)/2)ans+=find(tree[k].rr,x,y);
return ans;
}
void change(int k,int x,int y)
{
if(tree[k].l==tree[k].r-1)
tree[k].sum+=y;
else
{
if(x<(tree[k].l+tree[k].r)/2)
change(tree[k].ll,x,y);
else
change(tree[k].rr,x,y);
tree[k].sum=tree[tree[k].ll].sum+tree[tree[k].rr].sum;
}
}
int main()
{
int n,i,j,k;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
build(1,n+1);
int p;
scanf("%d",&p);
for(i=1;i<=p;i++)
{
int x,y,z,w;
scanf("%d",&z);
if(z==1)
{
scanf("%d%d",&x,&y);
change(1,x,y);
}
else
{
scanf("%d%d",&x,&y);
printf("%d\n",find(1,x,y+1));
}
}
return 0;
}