#include <iostream>
#include <cstdio>
using namespace std;
int n,m,N,end,M;
long long tree[500000];
long long a[100002],reva[100002];
void build_tree()
{
int i;
for(i=1;i<=n;i++)
tree[N-(N+1)/2+i]=reva[i];
for(i=N-(N+1)/2;i>=1;i--)
tree[i]=tree[2*i]+tree[2*i+1];
}
void add_element(long long x)
{
n++;
end=N-(N+1)/2+n;
while(end!=0)
{
tree[end]=tree[end]+x;
end=end/2;
}
}
long long query(int node, int x, int y, int px, int py)
{
if(x==px && y==py)
return tree[node];
int mid=(x+y)/2;
if(px>=x && py<=mid)
return query(node*2,x,mid,px,py);
else
if(px>mid && py<=y)
return query(node*2+1,mid+1,y,px,py);
else
return query(node*2,x,mid,px,mid)+query(node*2+1,mid+1,y,mid+1,py);
}
int closest_power()
{
int b=1;
while(b<n)
b=b*2;
return b;
}
int main()
{
int i,j,b,x,y,c,d,e,f,g,t,k;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
reva[n-i+1]=a[i];
}
N=1;
while(N<=n || N<100000)
N=N*2;
N=N*4;
N--;
build_tree();
scanf("%d",&t);
for(k=1;k<=t;k++)
{
scanf("%d",&b);
if(b==1)
{
scanf("%d%d",&x,&y);
printf("%lld\n",query(1,1,(N+1)/2,n-y+1,n-x+1));
}
else
{
scanf("%d",&c);
add_element(c);
}
}
return 0;
}