#include<bits/stdc++.h>
using namespace std;
const int N=8e3+5;
struct sd{
int pos,val;
bool operator < (const sd& b) const{
if(val==b.val) return pos<b.pos;
return val<b.val;
}
bool operator == (const sd& b) const{
return pos==b.pos&&val==b.val;
}
}a[N];
set<sd> s;
set<sd>:: iterator it;
int get_rank(sd x){
it=s.find(x);
return distance(s.begin(),it)+1;
}
int n,q;
int main(){
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++){
scanf("%d",&a[i].val);
a[i].pos=i;
s.insert(a[i]);
}
while(q--){
int op,x,v;
scanf("%d",&op);
switch(op){
case 1:
scanf("%d%d",&x,&v);
s.erase(a[x]);
a[x].val=v;
s.insert(a[x]);
break;
default:
scanf("%d",&x);
int ans=get_rank(a[x]);
printf("%d\n",ans);
}
}
return 0;
}