#include <bits/stdc++.h>
#define endl '\n'

using namespace std;

void speed()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
}

const int maxn=5e5+5;
int n,q;
int a[maxn];
int nxt[maxn],par[maxn],depth[maxn];
int last;

void build(int node,int parent)
{
    depth[node]=depth[parent]+1;
    par[node]=parent;

    for(int i=1;i<=n;i++)
    {
        if(i!=node && nxt[i]==0 && a[i]!=a[node])
        {
            nxt[node]=i;
            build(i,node);
            return;
        }
    }

    last=node;
}

void comp(int start)
{
    for(int i=1;i<=n;i++)
    {
        if(depth[i]>depth[start])
            nxt[i]=0;
    }

    build(start,par[start]);

    for(int i=1;i<=n;i++)
    {
        if(nxt[i]==0 && i!=last)
        {
            nxt[last]=i;
            depth[i]=depth[last]+1;
            last=i;
        }
    }
}

void read()
{
    cin>>n>>q;
    for(int i=1;i<=n;i++)
        cin>>a[i];

    comp(1);

    int type,x;
    for(int i=1;i<=q;i++)
    {
        cin>>type>>x;
        if(type==1)
        {
            swap(a[x],a[x+1]);
            if(x!=1)
                comp(par[x]);
            else
                comp(1);
        }
        else
        {
            /*for(int j=1;j<=n;j++)
                cout<<nxt[j]<<' ';
            cout<<endl;
            for(int j=1;j<=n;j++)
                cout<<par[j]<<' ';
            cout<<endl;*/

            cout<<depth[x]<<endl;
        }
    }
}

int main()
{
    speed();
    read();
    return 0;
}
