#include<bits/stdc++.h>
 
using namespace std;
 
typedef long long ll;
typedef pair<int, int> pii;
typedef long double ld;
 
#define F first
#define S second
 
const int MOD = 1e9 + 7;//XXX
const int C = 26;//XXX
 
void add(int &x, int y){
	x += y;
	while (x >= MOD) x -= MOD;
	while (x < 0) x += MOD;
}
 
int fix(int x){
	while (x >= MOD) x -= MOD;
	while (x < 0) x += MOD;
	return x;
}
 
int pw(int a, int b){
	int ret = 1;
	while (b){
		if (b & 1)
			ret = 1ll*ret*a%MOD;
		b >>= 1;
		a = 1ll*a*a%MOD;
	}
	return ret;
}
 
const int MAXN = 1e5 + 10;
const int SQ = 200;

int n, a[MAXN];

int weed[MAXN<<2];
vector<int> vec[(MAXN + SQ - 1) / SQ]; // +1 for each of these you're >= than

void plant(int v, int b, int e) {
	if(e-b == 1) {
		weed[v] = b != 0;
		return;
	}
	int m = (b + e) >> 1;
	plant(v<<1, b, m);
	plant(v<<1^1, m, e);
	weed[v] = weed[v<<1] + weed[v<<1^1];
}
void water(int i, int x) {
	int v = 1, b = 0, e = n;
	while(b < e) {
		weed[v] += x;
		if(e-b == 1)
			break;
		int m = (b + e) >> 1;
		if(i < m) {
			e = m;
			v = v<<1;
		} else {
			b = m;
			v = v<<1^1;
		}
	}
}

int descend(int s) { // first >= s
	int v = 1, b = 0, e = n;
	while(b < e) {
		if(e-b == 1) {
			return weed[v] < s ? e : b;
		}
		int m = (b + e) >> 1;
		if(weed[v<<1] < s) {
			s -= weed[v<<1];
			v = v<<1^1;
			b = m;
		} else {
			v = v<<1;
			e = m;
		}
	}
	return -1;
}

void build(int id) {
	vec[id].clear();
	int l = id * SQ, r = min(n, l + SQ);
	for(int i = l; i < r; i++) {
		int j = descend(a[i]);
		vec[id].push_back(j);
		water(j, 1);
	}
	for(int j : vec[id])
		water(j, -1);
	sort(vec[id].begin(), vec[id].end());
}

void qry() {
	int i; cin >> i; i--;
	int ans = a[i];
	for(i++; i < n && i % SQ != 0; i++)
		if(a[i] <= ans)
			++ans;
	for(; i < n; i += SQ) {
		ans += upper_bound(vec[i / SQ].begin(), vec[i / SQ].end(), ans) - vec[i / SQ].begin();
	}
	cout << ans+1 << "\n";
}

void solve() {
	cin >> n;
	for(int i = 0; i < n; i++) {
		cin >> a[i];
		a[i] = i - a[i];
	}
	plant(1, 0, n);
	for(int l = 0; l < n; l += SQ) {
		build(l / SQ);
	}
	int q; cin >> q;
	while(q--) {
		int qt; cin >> qt;
		if(qt == 1) {
			int i, x; cin >> i >> x; --i; x = i - x;
			a[i] = x;
			build(i / SQ);
		} else {
			qry();
		}
	}
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	//cout << fixed << setprecision(6);
	
	int te = 1;	
	//cin >> te;
	for (int w = 1; w <= te; w++){
		//cout << "Case #" << w << ": ";
		solve();
	}
	return 0;
}
// recursion = shit