#include <bits/stdc++.h>

using namespace std;
using ll = long long;
using ld = long double;
using sll = __int128;

const int maxn = 5e5 + 10;

int f[2][maxn];

int F(int i){return i&-i;}

void update(int fi, int pos, int x) {
    for (int i = pos; i < maxn; i += F(i)) {
        f[fi][i] += x;
    }
}

int get(int fi, int pos) {
    int res = 0;
    for (int i = pos; i >= 1; i -=  F(i)) {
        res += f[fi][i];
    }
    return res;
}

int get_sub(int fi, int l, int r) {
    return get(fi, r) - get(fi, l - 1);
}

void solve() {
    int n, m;
    cin >> n >> m;
    vector<int> a(n + 1);
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        update(a[i] - 1, i, 1);
    }
    while (m--) {
        int t;
        cin >> t;
        if (t == 1) {
            int x; cin >> x;
            update(a[x + 1] - 1, x + 1, -1);
            update(a[x] - 1, x + 1, 1);
            update(a[x] - 1, x, -1);
            update(a[x + 1] - 1, x, 1);
            swap(a[x], a[x + 1]);
            continue;
        }
        int y; cin >> y;
        int c1 = get_sub(0, 1, y - 1), c2 = get_sub(1, 1, y - 1);
        if (a[y] == 2) {
            if (c1 < c2) {
                if (get_sub(0, y + 1, n) == 0) {
                    cout << y << '\n';
                } else {
                    cout << y + 1 << '\n';
                }
            } else if (c1 == c2){
                if (a[1] == 1) {
                    if (get_sub(1, y + 1, n) == 0) {
                        cout << y << '\n';
                    } else {
                        cout << y + 1 << '\n';
                    }
                } else {
                    cout << y << '\n';
                }
            } else {
                if (a[1] == 1) {
                    cout << (c2 + 1) * 2 << '\n';
                } else {
                    cout << c2 * 2 + 1 << '\n';
                }
            }
        } else {
            if (c1 > c2) {
                if (get_sub(1, y + 1, n) == 0) {
                    cout << y << '\n';
                } else {
                    cout << y + 1 << '\n';
                }
            } else if (c1 == c2){
                if (a[1] == 2) {
                    if (get_sub(1, y + 1, n) == 0) {
                        cout << y << '\n';
                    } else {
                        cout << y + 1 << '\n';
                    }
                } else {
                    cout << y << '\n';
                }
            } else {
                if (a[1] == 2) {
                    cout << (c1 + 1) * 2 << '\n';
                } else {
                    cout << c1 * 2 + 1 << '\n';
                }
            }
        }

    }
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
#ifdef LOCAL
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif
    int test = 1;
    // cin >> test;
    while (test--) {
        solve();
    }
}