#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define INF 2147483646
#define inf 9223372036854775806
#define rep(i,o,p) for(int (i)=(o);(i)<=(p);(i)++)
#define all(c) (c).begin(),(c).end()
#define per(i,o,p) for(int (i)=(o);(i)>=(p);(i)--)
#define pl putchar('\n');
int read(){
int f=1,k=0;
char c;
c=getchar();
while(c<'0'||c>'9'){
if(c=='-'){
f=-1;
}
c=getchar();
}
while(c>='0'&&c<='9'){
k=(k<<1)+(k<<3)+(c^48);
c=getchar();
}
return f*k;
}
void write(int x){
if(x<0){
putchar('-');
x=-x;
}
if(x>9){
write(x/10);
}
putchar(x%10+'0');
}
struct axid{
int val,id;
};
bool cmp(axid &A,axid &B){
if(A.val!=B.val)
return A.val<B.val;
return A.id<B.id;
}
axid a[8005];
int t[8005];
int n,q;
int main(){
n=read();
q=read();
for(int i=1;i<=n;i++){
a[i].val=read();
a[i].id=i;
}
sort(a+1,a+n+1,cmp);
for(int j=1;j<=n;j++){
t[a[j].id]=j;
}
for(int i=0;i<q;i++){
int k,x,v;
k=read();
if(k==1){
x=read();
v=read();
a[t[x]].val=v;
for(int j=n-1;j>1;j--){
if(cmp(a[j],a[j-1])){
swap(a[j-1],a[j]);
}
}
for(int j=2;j<=n;j++){
if(cmp(a[j],a[j-1])){
swap(a[j-1],a[j]);
}
}
for(int j=1;j<=n;j++){
t[a[j].id]=j;
}
}
else{
x=read();
write(t[x]);
pl
}
}
return 0;
}