#include <bits/stdc++.h>
using namespace std;

int lb(vector<int> &v, int x){
    return lower_bound(v.begin(), v.end(), x) - v.begin();
}

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n, q;
    cin >> n >> q;
    vector<int> a(n);
    for(int i = 0; i < n; ++i){
        cin >> a[i];
        --a[i];
    }
    vector<vector<int>> b(n);
    for(int i = 0; i < n; ++i){
        b[a[i]].push_back(i);
    }
    for(int it = 0; it < q; ++it){
        int t;
        cin >> t;
        if(t == 1){
            int x;
            cin >> x;
            if(a[x] != a[x - 1]){
                b[a[x - 1]][lb(b[a[x - 1]], x - 1)] = x;
                b[a[x]][lb(b[a[x]], x)] = x - 1;
                swap(a[x - 1], a[x]);
            }
        }
        else{
            int y;
            cin >> y;
            --y;
            // vector<int> us(n, -1);
            // int l = 0, r = 0;
            // int c = -1;
            // for(int i = 0; i < n; ++i){
            //     while(r < n && a[r] == a[l]) ++r;
            //     if(a[l] != c || r == n){
            //         c = a[l];
            //         us[l] = i;
            //         while(l < n && us[l] != -1) ++l;
            //     }
            //     else{
            //         c = a[r];
            //         us[r] = i;
            //         ++r;
            //     }
            // }
            // cout << us[y] + 1 << endl;
            int i = 0, j = lb(b[0], y);
            if(j == b[0].size() || b[0][j] != y){
                i = 1;
                j = lb(b[1], y);
            }
            int ans, k = abs(i - a[0]);
            if(j < b[1 - i].size()){
                ans = 2*j + k;
            }
            else{
                ans = b[1 - i].size() + j;
            }
            cout << ans + 1 << endl;
        }
    }
}