#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
struct node{int w,id;};
bool cmp1(node x,node y){
if(x.w!=y.w) return x.w<y.w;
return x.id<y.id;
}
node a[8005];
int ids[8005];
int main(){
int n,q;
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i].w;
a[i].id=i;
}
sort(a+1,a+n+1,cmp1);
for(int i=1;i<=n;i++) ids[a[i].id]=i;
for(int i=1;i<=q;i++){
int opt;
cin>>opt;
if(opt==1){
memset(ids,0,sizeof(ids));
int x,w,dx;
cin>>x>>w;
for(int j=1;j<=n;j++) if(a[j].id==x){
a[j].w=w;
dx=j;
break;
}
int cnt=dx+1;
while(cnt<=n and a[cnt].w<a[cnt-1].w or (a[cnt].w==a[cnt-1].w and a[cnt].id<a[cnt-1].id)){
swap(a[cnt-1],a[cnt]);
cnt++;
}
cnt=dx-1;
while(cnt>=1 and a[cnt].w>a[cnt+1].w or (a[cnt].w==a[cnt+1].w and a[cnt].id>a[cnt-1].id)){
swap(a[cnt+1],a[cnt]);
cnt--;
}
for(int j=1;j<=n;j++) ids[a[j].id]=j;
}
else if(opt==2){
int index;
cin>>index;
cout<<ids[index]<<endl;
}
}
return 0;
}