#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=100000+10;
int sum[maxn*4];
int a[maxn];
int n, m;
void buildtree(int k, int x, int y)
{
if(x==y)
{
sum[k]=a[x];
return;
}
int m=x+(y-x)/2;
buildtree(k*2,x,m);
buildtree(k*2+1,m+1,y);
sum[k]=sum[2*k]+sum[2*k+1];
}
void modify(int k, int x, int y, int a, int delta)
{
if(a<x || a>y) return;
if(x==y)
{
sum[k]+=delta;
return;
}
int m=x+(y-x)/2;
modify(2*k,x,m,a,delta);
modify(2*k+1,m+1,y,a,delta);
sum[k]=sum[2*k]+sum[2*k+1];
}
int query(int k, int x, int y, int l, int r)
{
if(r<x || l>y) return 0;
if(x>=l && y<=r)
{
return sum[k];
}
int m=x+(y-x)/2;
return query(2*k,x,m,l,r)+query(2*k+1,m+1,y,l,r);
}
void init()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
}
void readdata()
{
memset(sum, 0, sizeof(sum));
int op, x, y;
scanf("%d", &n);
for(int i=1; i<=n; i++)
{
scanf("%d", &a[i]);
}
buildtree(1,1,n);
scanf("%d", &m);
for(int i=1; i<=m; i++)
{
scanf("%d%d%d", &op, &x, &y);
switch(op)
{
case 1:
{
modify(1,1,n,x,y);
break;
}
case 2:
{
printf("%d\n", query(1,1,n,x,y));
break;
}
}
}
}
void work()
{
}
int main()
{
init();
readdata();
work();
return 0;
}