#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
#include<stack>
using namespace std;
int n,m,op,x,y;
struct node{
int sum,next;
}a[8005];
struct body{
int sum,head;
}b[8005],k;
bool check(body p,body q){
if (p.sum!=q.sum)return p.sum<q.sum;
return p.head<q.head;
}
int main(){
scanf ("%d %d",&n,&m);
for (int i=1;i<=n;i++){
scanf ("%d",&a[i].sum);
a[i].next=i;
b[i].sum=a[i].sum;
b[i].head=i;
}
for (int i=1;i<=n;i++)
for (int j=i;j>=2;j--)
if (b[j].sum<b[j-1].sum){
k=b[j];
a[b[j-1].head].next=j;
a[b[j].head].next=j-1;
b[j].sum=b[j-1].sum;
b[j].head=b[j-1].head;
b[j-1].sum=k.sum;
b[j-1].head=k.head;
}
for (int i=1;i<=m;i++){
scanf ("%d",&op);
if (op==1){
scanf ("%d %d",&x,&y);
a[x].sum=y;b[a[x].next].sum=y;
for (int j=n;j>=1;j--)
if (check(b[j],b[j-1])){
k=b[j];
a[b[j-1].head].next=j;
a[b[j].head].next=j-1;
b[j].sum=b[j-1].sum;
b[j].head=b[j-1].head;
b[j-1].sum=k.sum;
b[j-1].head=k.head;
}
for (int j=1;j<=n;j++)
if (check(b[j+1],b[j])){
k=b[j];
a[b[j+1].head].next=j;
a[b[j].head].next=j+1;
b[j].sum=b[j+1].sum;
b[j].head=b[j+1].head;
b[j+1].sum=k.sum;
b[j+1].head=k.head;
}
}
else{
scanf ("%d",&x);
printf ("%d\n",a[x].next);
}
}
return 0;
}