#include <iostream>
using namespace std;
struct num
{
int n;
int a;
};
int main()
{
int n,Q,v,x,type,ans[200000]= {0},y=0;
num a1[8001];
cin>>n>>Q;
for(int i=1; i<=n; i++)
{
cin>>a1[i].n;//输入
a1[i].a=i;
}
for (int j = 1; j <= n; j++)//排序
{
for (int k = j; k >= 2; k--)
{
if (a1[k].n < a1[k-1].n)
{
num t = a1[k-1];
a1[k-1] = a1[k];
a1[k] = t;
}
}
}
for(int i=1; i<=Q; i++)
{
cin>>type;
if(type==1)//第一种
{
cin>>x>>v;
int j;
for(int k=1; k<=n; k++)
{
if(a1[k].a==x)
{
j=k;
a1[k].n=v;//找到原数组编号在现数组的位置
}
}
if(a1[j].n>a1[j+1].n&&j+1<=n)//是否大于后一位
{
for(int k=j; k<n; k++)
{
if (a1[k].n > a1[k+1].n)
{
num t = a1[k+1];
a1[k+1] = a1[k];
a1[k] = t;
}
}
}
else if(a1[j].n==a1[j+1].n&&j+1<=n)//是否等于后一位
{
for(int k=j; k<n; k++)
{
if(a1[k].n==a1[k-1].n&&a1[k].a>a1[k+1].a)
{
num t = a1[k+1];
a1[k+1] = a1[k];
a1[k] = t;
}
}
}
if(a1[j].n<a1[j-1].n&&j-1>=1)//是否小于前一位
{
for (int k = j; k >= 2; k--)
{
if (a1[k].n < a1[k-1].n)
{
num t = a1[k-1];
a1[k-1] = a1[k];
a1[k] = t;
}
}
}
else if(a1[j].n==a1[j-1].n&&j-1>=1)//是否等于前一位
{
for(int k=j; k>=2; k--)
{
if(a1[k].n==a1[k-1].n&&a1[k].a<a1[k-1].a)
{
num t = a1[k-1];
a1[k-1] = a1[k];
a1[k] = t;
}
}
}
}
if(type==2)//第二种
{
cin>>x;
for(int j=1; j<=n; j++)
{
if(a1[j].a==x) //找原数组的编号
{
ans[y]=j;
y++;
break;
}
}
}
}
for(int i=0; i<y; i++)
{
cout<<ans[i]<<endl;
}
return 0;
}