#include<bits/stdc++.h>

#define ll long long

#define debug(x) cerr << (#x) << '=' << x << '\n';

using namespace std;

void get_order(vector<int>& v, vector<int>& ord, int n) {
    deque<int> q;
    int cnt = 0, pr = -1;
    for (int i = 0; i < n; i++) {
        if (v[i] == pr) {
            q.push_back(i);
            continue;
        }
        ord[i] = cnt;
        cnt++;
        pr = v[i];
        if (!q.empty()) {
            ord[q.front()] = cnt;
            cnt++;
            pr = v[q.front()];
            q.pop_front();
        }
    }
    while (!q.empty()) {
        ord[q.front()] = cnt;
        cnt++;
        q.pop_front();
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n, k;
    cin >> n >> k;
    vector<int> v(n, 0);
    for (int i = 0; i < n; i++) {
        cin >> v[i];
    }
    vector<int> ord(n, 0);
    get_order(v, ord, n);
    char ch = '0';
    int c1 = 0;
    for (int i = 0; i < k; i++) {
        cin >> ch;
        if (ch == '1') {
            cin >> c1;
            c1--;
            swap(v[c1], v[c1 + 1]);
            get_order(v, ord, n);
            // for (int j = 0; j < n; j++) {
            //     cout << v[j] << ' ';
            // }
            // cout << '\n';
            // for (int j = 0; j < n; j++) {
            //     cout << ord[j] << ' ';
            // }
            // cout << '\n';
        } else {
            cin >> c1;
            c1--;
            cout << ord[c1] + 1 << '\n';
        }
    }
    return 0;
}