#include<bits/stdc++.h>
using namespace std;
inline int rd(){
int f=1,j=0;char w=getchar();
while(w>'9'||w<'0'){
if(w=='-')f=-1;
w=getchar();
}
while(w>='0'&&w<='9'){
j=(j<<3)+(j<<1)+w-'0';
w=getchar();
}
return f*j;
}
const int N=200001,M=100001;
int n,m,k,sum[N];
int rk[N],last[N];
inline int gk(int a){return (a-1)/k+1;}
signed main(){
// freopen("P3203_1.in","r",stdin);
// freopen("ans.out","w",stdout);
n=rd();k=sqrt(n);
for(int i=1;i<=n;i++)sum[i]=rd();
for(int i=n;i>=1;i--){
rk[i]=1;last[i]=i+sum[i];
if(last[i]<=n&&gk(last[i])==gk(i))rk[i]+=rk[last[i]],last[i]=last[last[i]];
}
m=rd();
while(m--){
int k=rd();
if(k==1){
int x=rd()+1,ans=0;
while(x<=n)ans+=rk[x],x=last[x];
printf("%d\n",ans);
}
else{
int x=rd()+1,y=rd();
sum[x]=y;
int j=gk(x),l=(j-1)*k+1,r=min(j*k,n);
for(int i=r;i>=l;i--){
rk[i]=1;last[i]=i+sum[i];
if(last[i]<=n&&gk(last[i])==gk(i))rk[i]+=rk[last[i]],last[i]=last[last[i]];
}
}
}
return 0;
}