#include <bits/stdc++.h>
using namespace std;
int c[1000000], n, a[400000], p[400000], x, y, nx, ny, q, tp;
void add(int x, int v) {
  for (int i = x; i <= n; i += i & -i) c[i] += v;
}
int sum(int x) {
  int ans = 0;
  for (int i = x; i; i -= i & -i) ans += c[i];
  return ans;
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &x);
    a[i] = x;
    p[x] = i;
  }
  for (int i = 1; i <= n; i++)
    if (p[i - 1] > p[i]) add(i, 1);
  cin >> q;
  for (int i = 1; i <= q; i++) {
    scanf("%d%d%d", &tp, &x, &y);
    if (tp == 1) {
      printf("%d\n", sum(y) - sum(x) + 1);
    } else {
      nx = a[y];
      ny = a[x];
      swap(a[x], a[y]);
      if (p[nx] < p[nx - 1]) add(nx, -1);
      if (p[ny] < p[ny - 1]) add(ny, -1);
      if (ny + 1 != nx && ny < n && p[ny + 1] < p[ny]) add(ny + 1, -1);
      if (nx + 1 != ny && nx < n && p[nx + 1] < p[nx]) add(nx + 1, -1);
      swap(p[nx], p[ny]);
      if (p[nx] < p[nx - 1]) add(nx, 1);
      if (p[ny] < p[ny - 1]) add(ny, 1);
      if (ny + 1 != nx && ny < n && p[ny + 1] < p[ny]) add(ny + 1, 1);
      if (nx + 1 != ny && nx < n && p[nx + 1] < p[nx]) add(nx + 1, 1);
    }
  }
}
