#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9 + 7;
const int maxN = 1e5 + 7;
int n, m;
int a[maxN];
multiset <int> st[4 * maxN];
void build(int id, int l, int r) {
if (l == r) {
st[id].insert(a[l]);
return;
}
int mid = l + r >> 1;
build(2 * id, l, mid);
build(2 * id + 1, mid + 1, r);
st[id] = st[2 * id + 1];
for (auto x : st[2 * id]) st[id].insert(x);
}
void update(int id, int l, int r, int i, int old, int val) {
if (l > i || r < i) return;
if (l == r) {
st[id].clear();
st[id].insert(val);
return;
}
int mid = l + r >> 1;
update(2 * id, l, mid, i, old, val);
update(2 * id + 1, mid + 1, r, i, old, val);
st[id].erase(st[id].find(old));
st[id].insert(val);
}
int get(int id, int l, int r, int u, int v, int k) {
if (l > v || r < u) return inf;
if (l >= u && r <= v) {
auto it = st[id].lower_bound(k);
if (it == st[id].end()) return inf;
return *it;
}
int mid = l + r >> 1;
int get1 = get(2 * id, l, mid, u, v, k);
int get2 = get(2 * id + 1, mid + 1, r, u, v, k);
return min(get1, get2);
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; ++i) cin >> a[i];
build(1, 1, n);
while (m--){
int type, l, r, k;
cin >> type;
if (type == 1) {
cin >> l >> k;
update(1, 1, n, l, a[l], k);
a[l] = k;
}
else {
cin >> l >> r >> k;
int ans = get(1, 1, n, l, r, k);
cout << ((ans == inf) ? -1 : ans) << '\n';
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IGluZiAgPSAxZTkgKyA3Owpjb25zdCBpbnQgbWF4TiA9IDFlNSArIDc7CgppbnQgbiwgbTsKaW50IGFbbWF4Tl07Cm11bHRpc2V0IDxpbnQ+IHN0WzQgKiBtYXhOXTsKCnZvaWQgYnVpbGQoaW50IGlkLCBpbnQgbCwgaW50IHIpIHsKICAgIGlmIChsID09IHIpIHsKICAgICAgICBzdFtpZF0uaW5zZXJ0KGFbbF0pOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGludCBtaWQgPSBsICsgciA+PiAxOwogICAgYnVpbGQoMiAqIGlkLCBsLCBtaWQpOwogICAgYnVpbGQoMiAqIGlkICsgMSwgbWlkICsgMSwgcik7CgogICAgc3RbaWRdID0gc3RbMiAqIGlkICsgMV07CiAgICBmb3IgKGF1dG8geCA6IHN0WzIgKiBpZF0pIHN0W2lkXS5pbnNlcnQoeCk7Cn0KCnZvaWQgdXBkYXRlKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgaSwgaW50IG9sZCwgaW50IHZhbCkgewogICAgaWYgKGwgPiBpIHx8IHIgPCBpKSByZXR1cm47CiAgICBpZiAobCA9PSByKSB7CiAgICAgICAgc3RbaWRdLmNsZWFyKCk7CiAgICAgICAgc3RbaWRdLmluc2VydCh2YWwpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGludCBtaWQgPSBsICsgciA+PiAxOwogICAgdXBkYXRlKDIgKiBpZCwgbCwgbWlkLCBpLCBvbGQsIHZhbCk7CiAgICB1cGRhdGUoMiAqIGlkICsgMSwgbWlkICsgMSwgciwgaSwgb2xkLCB2YWwpOwogICAgc3RbaWRdLmVyYXNlKHN0W2lkXS5maW5kKG9sZCkpOwogICAgc3RbaWRdLmluc2VydCh2YWwpOwp9CgppbnQgZ2V0KGludCBpZCwgaW50IGwsIGludCByLCBpbnQgdSwgaW50IHYsIGludCBrKSB7CiAgICBpZiAobCA+ICB2IHx8IHIgPCAgdSkgcmV0dXJuIGluZjsKICAgIGlmIChsID49IHUgJiYgciA8PSB2KSB7CiAgICAgICAgYXV0byBpdCA9IHN0W2lkXS5sb3dlcl9ib3VuZChrKTsKICAgICAgICBpZiAoaXQgPT0gc3RbaWRdLmVuZCgpKSByZXR1cm4gaW5mOwogICAgICAgIHJldHVybiAqaXQ7CiAgICB9CgogICAgaW50IG1pZCA9IGwgKyByID4+IDE7CiAgICBpbnQgZ2V0MSA9IGdldCgyICogaWQsIGwsIG1pZCwgdSwgdiwgayk7CiAgICBpbnQgZ2V0MiA9IGdldCgyICogaWQgKyAxLCBtaWQgKyAxLCByLCB1LCB2LCBrKTsKICAgIHJldHVybiBtaW4oZ2V0MSwgZ2V0Mik7Cn0KCmludCBtYWluKCkgewogICAgY2luID4+IG4gPj4gbTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgY2luID4+IGFbaV07CiAgICBidWlsZCgxLCAxLCBuKTsKCiAgICB3aGlsZSAobS0tKXsKICAgICAgICBpbnQgdHlwZSwgbCwgciwgazsKICAgICAgICBjaW4gPj4gdHlwZTsKICAgICAgICBpZiAodHlwZSA9PSAxKSB7CiAgICAgICAgICAgIGNpbiA+PiBsID4+IGs7CiAgICAgICAgICAgIHVwZGF0ZSgxLCAxLCBuLCBsLCBhW2xdLCBrKTsKICAgICAgICAgICAgYVtsXSA9IGs7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBjaW4gPj4gbCA+PiByID4+IGs7CiAgICAgICAgICAgIGludCBhbnMgPSBnZXQoMSwgMSwgbiwgbCwgciwgayk7CiAgICAgICAgICAgIGNvdXQgPDwgKChhbnMgPT0gaW5mKSA/IC0xIDogYW5zKSA8PCAnXG4nOwogICAgICAgIH0KICAgIH0KfQ==