#include <iostream>
#include <vector>
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;
#define saleh \
ios_base::sync_with_stdio(false); \
cin.tie(nullptr);
#define ll long long
int n, m;
struct node
{
int val;
node(int x)
{
val = x;
}
};
struct segTree
{
int size = 1;
vector<int> segData;
void build(int n)
{
while (size < n)
{
size *= 2;
}
segData.resize(2 * size);
}
void build(vector<int> &v, int x, int lx, int rx)
{
if (rx - lx == 1)
{
if (lx < v.size())
{
segData[x] = (v[lx]);
}
return;
}
int mid = (lx + rx) / 2;
build(v, 2 * x + 1, lx, mid);
build(v, 2 * x + 2, mid, rx);
segData[x] = max(segData[2 * x + 1], segData[2 * x + 2]);
}
void build(vector<int> &v)
{
build(v, 0, 0, size);
}
void change(int i, int v, int x, int lx, int rx)
{
if (rx - lx == 1)
{
segData[x] = v;
return;
}
int mid = (lx + rx) / 2;
if (i < mid)
{
change(i, v, 2 * x + 1, lx, mid);
}
else
{
change(i, v, 2 * x + 2, mid, rx);
}
segData[x] = max(segData[2 * x + 1], segData[2 * x + 2]);
}
void change(int i, int v)
{
change(i, v, 0, 0, size);
}
int find(int v, int l, int x, int lx, int rx)
{
if (rx - lx == 1)
{
if (segData[x] >= v && lx >= l)
return lx;
else
return n;
}
int mid = (lx + rx) / 2;
int leftpart = n, rightpart = n;
if (v <= segData[2 * x + 1] && l<mid)
{
leftpart = find(v, l, 2 * x + 1, lx, mid);
}
if (v <= segData[2 * x + 2])
{
rightpart = find(v, l, 2 * x + 2, mid, rx);
}
return min(leftpart, rightpart);
}
int find(int v, int l)
{
return find(v, l, 0, 0, size);
}
};
void solve()
{
cin >> n >> m;
segTree segment;
segment.build(n);
vector<int> v(n);
for (auto &i : v)
{
cin >> i;
}
segment.build(v);
while (m--)
{
int op;
cin >> op;
if (op == 1)
{
int ind, v;
cin >> ind >> v;
segment.change(ind, v);
}
else
{
int x, l;
cin >> x >> l;
int ans = segment.find(x, l);
cout << (ans != n ? ans : -1) << endl;
}
}
}
int main()
{
saleh;
solve();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIHNhbGVoICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBcCiAgICBjaW4udGllKG51bGxwdHIpOwojZGVmaW5lIGxsIGxvbmcgbG9uZwoKaW50IG4sIG07CgpzdHJ1Y3Qgbm9kZQp7CiAgICBpbnQgdmFsOwoKICAgIG5vZGUoaW50IHgpCiAgICB7CiAgICAgICAgdmFsID0geDsKICAgIH0KfTsKCnN0cnVjdCBzZWdUcmVlCnsKICAgIGludCBzaXplID0gMTsKICAgIHZlY3RvcjxpbnQ+IHNlZ0RhdGE7CgogICAgdm9pZCBidWlsZChpbnQgbikKICAgIHsKICAgICAgICB3aGlsZSAoc2l6ZSA8IG4pCiAgICAgICAgewogICAgICAgICAgICBzaXplICo9IDI7CiAgICAgICAgfQogICAgICAgIHNlZ0RhdGEucmVzaXplKDIgKiBzaXplKTsKICAgIH0KCiAgICB2b2lkIGJ1aWxkKHZlY3RvcjxpbnQ+ICZ2LCBpbnQgeCwgaW50IGx4LCBpbnQgcngpCiAgICB7CiAgICAgICAgaWYgKHJ4IC0gbHggPT0gMSkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChseCA8IHYuc2l6ZSgpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzZWdEYXRhW3hdID0gKHZbbHhdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGludCBtaWQgPSAobHggKyByeCkgLyAyOwogICAgICAgIGJ1aWxkKHYsIDIgKiB4ICsgMSwgbHgsIG1pZCk7CiAgICAgICAgYnVpbGQodiwgMiAqIHggKyAyLCBtaWQsIHJ4KTsKICAgICAgICBzZWdEYXRhW3hdID0gbWF4KHNlZ0RhdGFbMiAqIHggKyAxXSwgc2VnRGF0YVsyICogeCArIDJdKTsKICAgIH0KCiAgICB2b2lkIGJ1aWxkKHZlY3RvcjxpbnQ+ICZ2KQogICAgewogICAgICAgIGJ1aWxkKHYsIDAsIDAsIHNpemUpOwogICAgfQoKICAgIHZvaWQgY2hhbmdlKGludCBpLCBpbnQgdiwgaW50IHgsIGludCBseCwgaW50IHJ4KQogICAgewogICAgICAgIGlmIChyeCAtIGx4ID09IDEpCiAgICAgICAgewoKICAgICAgICAgICAgc2VnRGF0YVt4XSA9IHY7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaW50IG1pZCA9IChseCArIHJ4KSAvIDI7CiAgICAgICAgaWYgKGkgPCBtaWQpCiAgICAgICAgewogICAgICAgICAgICBjaGFuZ2UoaSwgdiwgMiAqIHggKyAxLCBseCwgbWlkKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgY2hhbmdlKGksIHYsIDIgKiB4ICsgMiwgbWlkLCByeCk7CiAgICAgICAgfQogICAgICAgIHNlZ0RhdGFbeF0gPSBtYXgoc2VnRGF0YVsyICogeCArIDFdLCBzZWdEYXRhWzIgKiB4ICsgMl0pOwogICAgfQoKICAgIHZvaWQgY2hhbmdlKGludCBpLCBpbnQgdikKICAgIHsKICAgICAgICBjaGFuZ2UoaSwgdiwgMCwgMCwgc2l6ZSk7CiAgICB9CgogICAgaW50IGZpbmQoaW50IHYsIGludCBsLCBpbnQgeCwgaW50IGx4LCBpbnQgcngpCiAgICB7CiAgICAgICAgaWYgKHJ4IC0gbHggPT0gMSkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChzZWdEYXRhW3hdID49IHYgJiYgbHggPj0gbCkKICAgICAgICAgICAgICAgIHJldHVybiBseDsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIG47CiAgICAgICAgfQogICAgICAgIGludCBtaWQgPSAobHggKyByeCkgLyAyOwogICAgICAgIGludCBsZWZ0cGFydCA9IG4sIHJpZ2h0cGFydCA9IG47CiAgICAgICAgaWYgKHYgPD0gc2VnRGF0YVsyICogeCArIDFdICYmIGw8bWlkKQogICAgICAgIHsKICAgICAgICAgICAgbGVmdHBhcnQgPSBmaW5kKHYsIGwsIDIgKiB4ICsgMSwgbHgsIG1pZCk7CiAgICAgICAgfQogICAgICAgIGlmICh2IDw9IHNlZ0RhdGFbMiAqIHggKyAyXSkKICAgICAgICB7CiAgICAgICAgICAgIHJpZ2h0cGFydCA9IGZpbmQodiwgbCwgMiAqIHggKyAyLCBtaWQsIHJ4KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG1pbihsZWZ0cGFydCwgcmlnaHRwYXJ0KTsKICAgIH0KCiAgICBpbnQgZmluZChpbnQgdiwgaW50IGwpCiAgICB7CiAgICAgICAgcmV0dXJuIGZpbmQodiwgbCwgMCwgMCwgc2l6ZSk7CiAgICB9Cn07Cgp2b2lkIHNvbHZlKCkKewoKICAgIGNpbiA+PiBuID4+IG07CgogICAgc2VnVHJlZSBzZWdtZW50OwogICAgc2VnbWVudC5idWlsZChuKTsKICAgIHZlY3RvcjxpbnQ+IHYobik7CiAgICBmb3IgKGF1dG8gJmkgOiB2KQogICAgewogICAgICAgIGNpbiA+PiBpOwogICAgfQoKICAgIHNlZ21lbnQuYnVpbGQodik7CgogICAgd2hpbGUgKG0tLSkKICAgIHsKICAgICAgICBpbnQgb3A7CiAgICAgICAgY2luID4+IG9wOwogICAgICAgIGlmIChvcCA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAgaW50IGluZCwgdjsKICAgICAgICAgICAgY2luID4+IGluZCA+PiB2OwogICAgICAgICAgICBzZWdtZW50LmNoYW5nZShpbmQsIHYpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBpbnQgeCwgbDsKICAgICAgICAgICAgY2luID4+IHggPj4gbDsKICAgICAgICAgICAgaW50IGFucyA9IHNlZ21lbnQuZmluZCh4LCBsKTsKICAgICAgICAgICAgY291dCA8PCAoYW5zICE9IG4gPyBhbnMgOiAtMSkgPDwgZW5kbDsKICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgc2FsZWg7CiAgICBzb2x2ZSgpOwp9Cg==