#include <cstdio>
#include <cctype>
#include <algorithm>
namespace QuikIO{
int p1,p2,p3;
const int maxn = 1e6;
char in[maxn],out[maxn];
#define getchar() (p1 == p2 && (p1 = 0,p2 = fread(in,1,maxn,stdin)),p1 == p2 ? EOF : in[p1++])
int read(){
int x = 0;
char ch = getchar();
while (!isdigit(ch)) ch = getchar();
while (isdigit(ch))
x *= 10,x += ch - '0',ch = getchar();
return x;
}
}using QuikIO::read;
class num{public:int id,val;};
const int maxn = 8005;
bool cmp(num a,num b){
if (a.val != b.val) return a.val < b.val;
return a.id < b.id;
}
int main(){
int n,q,op,x,u,ans;
num a[maxn],b[maxn];
n = read(),q = read();
for (int i = 1;i <= n;i++) a[i].val = read(),a[i].id = i;
while (q--){
op = read(),x = read();
if (op == 1) u = read(),a[x].val = u;
else if (op == 2){
for (int i = 1;i <= n;i++) b[i] = a[i];
std::stable_sort(b + 1,b + 1 + n,cmp);
for (int i = 1;i <= n;i++)
if (b[i].val == a[x].val && b[i].id == a[x].id){
printf("%d\n",i);
break;
}
}
}
return 0;
}