#include<bits/stdc++.h>
#define int unsigned long long
#define re register
using namespace std;
const int inf=2*1e5+1;
int n,m;
int a[inf];
int partlen;
int partid[inf];
int partcnt[inf];
int partpos[inf];
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0' || ch>'9'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0' && ch<='9'){
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
inline void write(int x){
if(x<0){
cout<<'-';
x=-x;
}
if(x>9) write(x/10);
putchar(x%10+'0');
}
inline int get(int pos){
int sum=0;
while(pos<=n){
sum+=partcnt[pos];
pos=partpos[pos];
}
return sum;
}
inline void change(int position,int k){
a[position]=k;
int l=partid[position]*partlen-partlen+1;
int r=partid[position]*partlen;
for(int i=l;i<=position;i++){
int cnt=0;
int pos=i;
while(pos<=r){
cnt++;
pos+=a[pos];
}
partcnt[i]=cnt;
partpos[i]=pos;
}
}
signed main(){
n=read();
partlen=sqrt(n);
for(int i=1;i<=n;i++){
a[i]=read();
partid[i]=ceil(i*1.0/partlen);
}
int cnt,pos;
for(int i=1;i<=n;i++){
cnt=0;
pos=i;
int r=partid[i]*partlen;
while(pos<=r){
cnt++;
pos+=a[pos];
}
partcnt[i]=cnt;
partpos[i]=pos;
}
m=read();
for(int f=1,opt,pos,k;f<=m;f++){
opt=read(),pos=read();
if(opt==1) {
write(get(pos+1));
cout<<endl;
}
if(opt==2){
k=read();
change(pos+1,k);
}
}
return 0;
}