#include<bits/stdc++.h>
using namespace std;
int n,q,a[8080],c[8080];
struct node{
int num,id;
}b[8080];
bool cmp(node x,node y){
if(x.num==y.num)return x.id<y.id;
return x.num<y.num;
}
void sor(){
for(int i=1;i<=n;i++){
b[i].num=a[i];
b[i].id=i;
}
sort(b+1,b+n+1,cmp);
for(int i=1;i<=n;i++){
c[b[i].id]=i;
}
}
int main(){
cin>>n>>q;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
sor();
b[0].num=-1;
b[n+1].num=0x3f3f3f3f;
for(int i=1;i<=q;i++){
int x;
scanf("%d",&x);
if(x==1){
int y,z;
scanf("%d%d",&y,&z);
a[y]=z;
b[c[y]].num=z;
if(b[c[y]].num>=b[c[y]+1].num){
for(int j=c[y]+1;j<=n;j++){
if(b[j-1].num>b[j].num){
swap(c[b[j-1].id],c[b[j].id]);
swap(b[j-1],b[j]);
}
else if(b[j-1].num==b[j].num&&b[j-1].id>b[j].id){
swap(c[b[j-1].id],c[b[j].id]);
swap(b[j-1].id,b[j].id);
}
else break;
}
}
else if(b[c[y]].num<=b[c[y]-1].num){
for(int j=c[y]-1;j>=1;j--){
if(b[j+1].num<b[j].num){
swap(c[b[j+1].id],c[b[j].id]);
swap(b[j+1],b[j]);
}
else if(b[j+1].num==b[j].num&&b[j+1].id<b[j].id){
swap(c[b[j+1].id],c[b[j].id]);
swap(b[j+1].id,b[j].id);
}
else break;
}
}
}
else if(x==2){
int y;
scanf("%d",&y);
cout<<c[y]<<endl;
}
}
return 0;
}