#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 100005;const int maxd = 205;const int maxk = 505;int n, q, b[maxn];int d, k, bel[maxn], st[maxn], ed[maxn];vector<int> val[maxk], T[maxd << 2];
void pushup(int id, int len) {int lc = id << 1, rc = id << 1 | 1;int lenl = (len + 1) / 2, lenr = len / 2;for(int i = 0, j = 0; i <= lenl && j <= len; i++) {
		int nl = T[lc][i], nr = (i == lenl) ? n : T[lc][i + 1] - 1;for(; j - i <= lenr && nr + i >= T[rc][j - i]; j++)T[id][j] = max(nl, T[rc][j - i] - i);}}
void solve(int l, int r, int id) {T[id].resize(r - l + 2);if(l == r) {T[id][0] = 0;T[id][1] = b[l] + 1;	return;}int mid = (l + r) >> 1;solve(l, mid, id << 1);solve(mid + 1, r, id << 1 | 1);pushup(id, r - l + 1);}
void build(int x) {solve(st[x], ed[x], 1);val[x] = T[1];}
int main() {scanf("%d", &n);for(int i = 1; i <= n; i++)scanf("%d", &b[i]), b[i] = i - 1 - b[i];d = 200;for(int i = 1; i <= n; i++)bel[i] = (i - 1) / d + 1;k = bel[n];
	for(int i = 1; i <= k; i++) {st[i] = (i - 1) * d + 1;ed[i] = min(i * d, n);build(i);}scanf("%d", &q);for(int i = 1, opt, x, y; i <= q; i++) {scanf("%d%d", &opt, &x);
		if(opt == 1) {scanf("%d", &y);b[x] = x - 1 - y;build(bel[x]);}else {int now = b[x] + 1;int p = bel[x];for(int j = x + 1; j <= ed[p]; j++)now += (now > b[j]);
			for(int j = p + 1; j <= k; j++)now += upper_bound(val[j].begin(), val[j].end(), now) - val[j].begin() - 1;printf("%d\n", now);}}return 0;}