#include <iostream>
#include <vector>
#pragma GCC target("avx")
#pragma GCC optimize(Ofast)
using namespace std;
void h(vector<int> a,vector<pair<int,int>> b,vector<int> used,vector<int>& pos){
    int n=a.size();
    int r=0;
    int prev=-1;
    int ind=0;
    for (int l=0;l<n;l++){
        if (used[l]==0){
            while (r<n and a[r]==prev){
                r++;
            }
            if (r>=n){
                break;
            }
            if (l==r){
                b[ind]={l+1,a[l]};
                prev=a[l];
                used[l]=1;
                ind++;
            }else{
                b[ind]={r+1,a[r]};
                ind++;
                b[ind]={l+1,a[l]};
                ind++;
                prev=a[l];
                used[l]=1;
                used[r]=1;
            }
            r++;
        }
    }
    for (int i=0;i<n;i++){
        if (used[i]==0){
            b[ind]={i+1,a[i]};
            ind++;
        }
    }
    for (int i=0;i<n;i++){
        used[i]=0;
    }
    for (int i=0;i<n;i++){
        pos[b[i].first]=i+1;
    }
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n,q;
    cin>>n>>q;
    vector<int> a(n);
    for (int i=0;i<n;i++){
        cin>>a[i];
    }
    vector<int> used(n);
    vector<pair<int,int>> b(n);
    vector<int> pos(n+1);
    h(a,b,used,pos);
    for (int _=0;_<q;_++){
        int t;
        cin>>t;
        if (t==1){
            int y;
            cin>>y;
            y--;
            swap(a[y],a[y+1]);
            h(a,b,used,pos);
        }else{
            int y;
            cin>>y;
            cout<<pos[y]<<'\n';
        }
    }
}
