#include<iostream>
#include<vector>
#include<algorithm>
#include<cassert>
#define MAXN 200000
#define NEUTRAL -2
using namespace std;
int t[4 * MAXN];
int a[MAXN];
void build(int v, int l, int r) {
if (l + 1 == r) {
t[v] = l;
return;
}
int m = (l + r) / 2;
build(2 * v, l, m);
build(2 * v + 1, m, r);
if (a[t[2 * v]] >= a[t[2 * v + 1]]) {
t[v] = t[2 * v];
} else {
t[v] = t[2 * v + 1];
}
}
void update(int v, int l, int r, int pos, int x) {
if (l + 1 == r) {
a[pos] = x;
return;
}
int m = (l + r) / 2;
if (pos < m) {
update(2 * v, l, m, pos, x);
} else {
update(2 * v, m, r, pos, x);
}
if (a[t[2 * v]] >= a[t[2 * v + 1]]) {
t[v] = t[2 * v];
} else {
t[v] = t[2 * v + 1];
}
}
int find_nearest(int v, int l, int r, int i, int x) {
if (r <= i || a[t[v]] < x) {
return NEUTRAL;
}
if (l + 1 == r) {
return t[v];
}
int m = (l + r) / 2;
int ans1 = -2, ans2 = -2;
if (a[t[2 * v]] >= x) {
ans1 = find_nearest(2 * v, l, m, i, x);
}
if (a[t[2 * v + 1]] >= x) {
ans2 = find_nearest(2 * v + 1, m, r, i, x);
}
if (ans1 != -2) {
return ans1;
} else {
return ans2;
}
}
int main() {
//assert(freopen("nearandmore.in", "r", stdin));
//assert(freopen("nearandmore.out", "w", stdout));
int N, M;
cin >> N >> M;
for (int i = 0; i < N; ++i) {
cin >> a[i];
}
build(1, 0, N);
for (int i = 0; i < M; ++i) {
int t, ind, x;
cin >> t >> ind >> x;
if (t == 0) {
update(1, 0, N, ind - 1, x);
} else {
cout << find_nearest(1, 0, N, ind - 1, x) + 1 << '\n';
}
}
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTxjYXNzZXJ0PgojZGVmaW5lIE1BWE4gMjAwMDAwCiNkZWZpbmUgTkVVVFJBTCAtMgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IHRbNCAqIE1BWE5dOwppbnQgYVtNQVhOXTsKCnZvaWQgYnVpbGQoaW50IHYsIGludCBsLCBpbnQgcikgewogICAgaWYgKGwgKyAxID09IHIpIHsKICAgICAgICB0W3ZdID0gbDsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbnQgbSA9IChsICsgcikgLyAyOwogICAgYnVpbGQoMiAqIHYsIGwsIG0pOwogICAgYnVpbGQoMiAqIHYgKyAxLCBtLCByKTsKICAgIGlmIChhW3RbMiAqIHZdXSA+PSBhW3RbMiAqIHYgKyAxXV0pIHsKICAgICAgICB0W3ZdID0gdFsyICogdl07CiAgICB9IGVsc2UgewogICAgICAgIHRbdl0gPSB0WzIgKiB2ICsgMV07CiAgICB9Cn0KCnZvaWQgdXBkYXRlKGludCB2LCBpbnQgbCwgaW50IHIsIGludCBwb3MsIGludCB4KSB7CiAgICBpZiAobCArIDEgPT0gcikgewogICAgICAgIGFbcG9zXSA9IHg7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG0gPSAobCArIHIpIC8gMjsKICAgIGlmIChwb3MgPCBtKSB7CiAgICAgICAgdXBkYXRlKDIgKiB2LCBsLCBtLCBwb3MsIHgpOwogICAgfSBlbHNlIHsKICAgICAgICB1cGRhdGUoMiAqIHYsIG0sIHIsIHBvcywgeCk7CiAgICB9CiAgICBpZiAoYVt0WzIgKiB2XV0gPj0gYVt0WzIgKiB2ICsgMV1dKSB7CiAgICAgICAgdFt2XSA9IHRbMiAqIHZdOwogICAgfSBlbHNlIHsKICAgICAgICB0W3ZdID0gdFsyICogdiArIDFdOwogICAgfQp9CgppbnQgZmluZF9uZWFyZXN0KGludCB2LCBpbnQgbCwgaW50IHIsIGludCBpLCBpbnQgeCkgewogICAgaWYgKHIgPD0gaSB8fCBhW3Rbdl1dIDwgeCkgewogICAgICAgIHJldHVybiBORVVUUkFMOwogICAgfQogICAgaWYgKGwgKyAxID09IHIpIHsKICAgICAgICByZXR1cm4gdFt2XTsKICAgIH0KICAgIGludCBtID0gKGwgKyByKSAvIDI7CiAgICBpbnQgYW5zMSA9IC0yLCBhbnMyID0gLTI7CiAgICBpZiAoYVt0WzIgKiB2XV0gPj0geCkgewogICAgICAgIGFuczEgPSBmaW5kX25lYXJlc3QoMiAqIHYsIGwsIG0sIGksIHgpOwogICAgfQogICAgaWYgKGFbdFsyICogdiArIDFdXSA+PSB4KSB7CiAgICAgICAgYW5zMiA9IGZpbmRfbmVhcmVzdCgyICogdiArIDEsIG0sIHIsIGksIHgpOwogICAgfQogICAgaWYgKGFuczEgIT0gLTIpIHsKICAgICAgICByZXR1cm4gYW5zMTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGFuczI7CiAgICB9Cn0KaW50IG1haW4oKSB7CiAgICAvL2Fzc2VydChmcmVvcGVuKCJuZWFyYW5kbW9yZS5pbiIsICJyIiwgc3RkaW4pKTsKICAgIC8vYXNzZXJ0KGZyZW9wZW4oIm5lYXJhbmRtb3JlLm91dCIsICJ3Iiwgc3Rkb3V0KSk7CiAgICBpbnQgTiwgTTsKICAgIGNpbiA+PiBOID4+IE07CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQogICAgYnVpbGQoMSwgMCwgTik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE07ICsraSkgewogICAgICAgIGludCB0LCBpbmQsIHg7CiAgICAgICAgY2luID4+IHQgPj4gaW5kID4+IHg7CiAgICAgICAgaWYgKHQgPT0gMCkgewogICAgICAgICAgICB1cGRhdGUoMSwgMCwgTiwgaW5kIC0gMSwgeCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY291dCA8PCBmaW5kX25lYXJlc3QoMSwgMCwgTiwgaW5kIC0gMSwgeCkgKyAxIDw8ICdcbic7CiAgICAgICAgfQogICAgfQp9