QWQ
#include<cstdio>
#include <iostream>
using namespace std;
typedef long long ll;
const ll MAXN=1e5+5;
ll w[MAXN*200],a[MAXN],n,q;
inline ll ls(ll u){return u<<1;}
inline ll rs(ll u){return u<<1|1;}
void push_back(const ll u){w[u]=w[ls(u)]+w[rs(u)];}
void build(ll u,ll l,ll r){
if(l==r){
w[u]=a[l];
return;
}
ll mid=(l+r)>>1;
build(ls(u),l,mid);
build(rs(u),mid+1,r);
push_back(u);
}
void op1(ll u,ll l,ll r,ll x){
if(l==r){
w[u]=x;
}else{
ll mid=(l+r)>>1;
op1(ls(u),l,mid,x);
op1(rs(u),mid+1,r,x);
w[u]=w[ls(u)]+w[rs(u)];
}
}
void op2(ll u,ll l,ll r,ll num,ll x){
if(l==r){
w[u]+=x;
}else{
ll mid=(l+r)>>1;
if(mid>=num){
op2(ls(u),l,mid,num,x);
}else{
op2(rs(u),mid+1,r,num,x);
}
push_back(u);
}
}
ll op3(ll u, ll l, ll r, ll num){
if(l==r){
return w[u];
}else{
ll mid=(l+r)>>1;
if(mid>=num){
return op3(ls(u),l,mid,num);
}else{
return op3(rs(u),mid+1,r,num);
}
}
}
int main(){
cin>>n;
for (int i = 1; i <=n ; ++i) {
cin>>a[i];
}
build(1,1,n);
//test(1,1,n);
cin>>q;
for (int i = 1; i <=q ; ++i) {
ll op,x,y;
cin>>op;
if(op==1){
cin>>x;
op1(1,1,n,x);
//test(1,1,n);
}else if(op==2){
cin>>x>>y;
op2(1,1,n,x,y);
// test(1,1,n);
// cout<<endl;
}else{
cin>>x;
cout<<op3(1,1,n,x)<<"\n";
}
}
return 0;
}