#include<iostream>
#include<algorithm>
using namespace std;
struct VAR{
int v,id=0;
}now[100005],a[100005];
bool cmp(VAR x,VAR y)
{
return x.v<y.v;
}
int find(int n,int v)
{
int pos=0;
for(int i=1;i<=n;++i)
{
if(now[i].v==v) pos=i;
}
return pos;
}
int find2(int n,int v)
{
for(int i=1;i<=n;++i)
{
if(now[i].v==v) return i;
}
return 0;
}
void Insert(int n,int v,int x,int y)
{
for(int i=x;i<=n;++i)
{
swap(now[i],now[i+1]);
}
for(int i=n;i>=2;--i)
{
if(cmp(now[i],now[i-1]))
{
swap(now[i],now[i-1]);
}
}
a[y].v=v;
a[y].id=find(n,v);
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,q;
cin>>n>>q;
for(int i=1;i<=n;++i)
{
cin>>a[i].v;
now[i].v=a[i].v;
now[i].id=i;
}
for (int i = 1; i <= n; i++)
{
for (int j = i; j >= 2; j--)
{
if (cmp(now[j],now[j-1]))
{
swap(now[j],now[j-1]);
}
}
}
for(int i=1;i<=n;++i)
{
a[i].id=find(n,a[i].v);
}
while(q--)
{
int o;
cin>>o;
int x,v;
cin>>x;
if(o==1)
{
cin>>v;
}
if(o==1)
{
now[a[x].id].v=v;
swap(now[a[x].id],now[n+1]);
Insert(n,v,a[x].id,x);
}
else
{
cout<<a[x].id<<"\n";
}
}
return 0;
}