#include <bits/stdc++.h>
using namespace std;
struct node{
int v;
int id;
}a[8005];
int n,q;
int wz[8008];
bool cmp(node g,node h){
if (g.v!=h.v){
return g.v<h.v;
}else{
return g.id<h.id;
}
}
int main(){
cin>>n>>q;
for (int i=1;i<=n;i++){
scanf ("%d",&a[i].v);
a[i].id=i;
}
sort(a+1,a+1+n,cmp);
for (int i=1;i<=n;i++){
wz[a[i].id]=i;
}
while (q--){
int op;
scanf ("%d",&op);
if (op==1){
int x,va;
scanf ("%d%d",&x,&va);
a[wz[x]].v=va;
if (a[wz[x]].v>=a[wz[x]+1].v){
for (int i=wz[x];i<n;i++){
if (a[i].v>a[i+1].v || (a[i].v==a[i+1].v && a[i].id>a[i+1].id)){
swap(wz[a[i].id],wz[a[i+1].id]);
swap(a[i].v,a[i+1].v);
swap(a[i].id,a[i+1].id);
}
}
}else if (a[wz[x]].v<=a[wz[x]-1].v ){
for (int i=wz[x];i>1;i--){
if (a[i].v<a[i-1].v || (a[i].v==a[i-1].v && a[i].id<a[i-1].id)){
swap(wz[a[i].id],wz[a[i-1].id]);
swap(a[i].v,a[i-1].v);
swap(a[i].id,a[i-1].id);
}
}
}
}else{
int x;
scanf ("%d",&x);
printf ("%d\n",wz[x]);
}
}
return 0;
}