#include <bits/stdc++.h>
using namespace std;
using ll=long long;
using pll=pair<ll,ll>;
using dbl=double;
dbl const PI=acos(-1.0);
ll const mod=998244353;
void gg(){
    cout<<1<<endl;
}
ll bit(ll x,ll i){
    return((x>>i)&1);
}
ll binpow(ll a,ll b){
    ll x=1;
    for(ll i=0;i<40;i++){
        if(bit(b,i)){
            x*=a;
            x%=mod;
        }
        a=(a*a)%mod;
    }
    return x;
}
void upd(ll v,ll l,ll r,ll pos,ll x,vector<ll>& t){
    if(r-l==1){
        t[v]=x;
        return;
    }
    ll m=(r+l)/2;
    if(pos<m)upd(2*v+1,l,m,pos,x,t);
    else upd(2*v+2,m,r,pos,x,t);
    t[v]=t[2*v+1]+t[2*v+2];
}
ll get_sum(ll v,ll l,ll r,ll lq,ll rq,vector<ll>& t){
    if(rq<=l || l>=rq)return 0;
    if(lq<=l && r<=rq)return t[v];
    ll m=(r+l)/2;
    return get_sum(2*v+1,l,m,lq,rq,t)+get_sum(2*v+2,m,r,lq,rq,t);
}


void solve(){
    ll n,q;
    cin>>n>>q;
    vector<ll> a(n+1),cnt(n+1);
    vector<vector<ll>> tsum(3,vector<ll>(4*n));
    for(ll i=1;i<=n;i++){
        cin>>a[i];
        cnt[a[i]]++;
    }
    while(q--){
        ll tp,x;
        cin>>tp>>x;
        if(tp==1){
            upd(0,1,n+1,x,-1,tsum[a[x]]);
            upd(0,1,n+1,x+1,-1,tsum[a[x+1]]);
            swap(a[x],a[x+1]);
            upd(0,1,n+1,x,1,tsum[a[x]]);
            upd(0,1,n+1,x+1,1,tsum[a[x+1]]);
        }
        else{
            ll sum=get_sum(0,1,n+1,1,x+1,tsum[3-a[x]]);
            cout<<x<<'\n';
        }
    }

}

int main()
{
    ll tqqq=1;
    //cin>>tqqq;
    while(tqqq--){
        solve();
        cout<<'\n';
    }

    return 0;
}
