#include <bits/stdc++.h>
using namespace std;
int n, x_val, q;
int a[2000005];
int BIT[2000005];
int lowbit(int i) {
return i & (-i);
}
void modify(int i, int val) {
for (; i <= n; i += lowbit(i)) BIT[i] += val;
}
int query(int i) {
int sum = 0;
for (; i > 0; i -= lowbit(i)) sum += BIT[i];
return sum;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> x_val;
for (int i = 1; i <= n; i++) {
cin >> a[i];
if (a[i] == x_val) modify(i, 1); // Đánh dấu nếu là x
}
cin >> q;
while (q--) {
int type;
cin >> type;
if (type == 1) {
int l, r, k;
cin >> l >> r >> k;
int s_before = query(l - 1);
int target = s_before + k;
// Kiểm tra xem trong đoạn [1, r] có đủ target số x không
if (query(r) < target) {
cout << -1 << "\n";
} else {
// Chặt nhị phân tìm vị trí nhỏ nhất đạt được target
int low = l, high = r, ans = -1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (query(mid) >= target) {
ans = mid;
high = mid - 1;
} else {
low = mid + 1;
}
}
cout << ans << "\n";
}
} else {
int idx, v;
cin >> idx >> v;
if (a[idx] == x_val && v != x_val) modify(idx, -1);
else if (a[idx] != x_val && v == x_val) modify(idx, 1);
a[idx] = v;
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgppbnQgbiwgeF92YWwsIHE7CmludCBhWzIwMDAwMDVdOwppbnQgQklUWzIwMDAwMDVdOwoKCmludCBsb3diaXQoaW50IGkpIHsKICAgIHJldHVybiBpICYgKC1pKTsKfQoKCnZvaWQgbW9kaWZ5KGludCBpLCBpbnQgdmFsKSB7CiAgICBmb3IgKDsgaSA8PSBuOyBpICs9IGxvd2JpdChpKSkgQklUW2ldICs9IHZhbDsKfQoKCmludCBxdWVyeShpbnQgaSkgewogICAgaW50IHN1bSA9IDA7CiAgICBmb3IgKDsgaSA+IDA7IGkgLT0gbG93Yml0KGkpKSBzdW0gKz0gQklUW2ldOwogICAgcmV0dXJuIHN1bTsKfQoKCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwoKCiAgICBjaW4gPj4gbiA+PiB4X3ZhbDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgICAgIGlmIChhW2ldID09IHhfdmFsKSBtb2RpZnkoaSwgMSk7IC8vIMSQw6FuaCBk4bqldSBu4bq/dSBsw6AgeAogICAgfQoKCiAgICBjaW4gPj4gcTsKICAgIHdoaWxlIChxLS0pIHsKICAgICAgICBpbnQgdHlwZTsKICAgICAgICBjaW4gPj4gdHlwZTsKICAgICAgICBpZiAodHlwZSA9PSAxKSB7CiAgICAgICAgICAgIGludCBsLCByLCBrOwogICAgICAgICAgICBjaW4gPj4gbCA+PiByID4+IGs7CiAgICAgICAgICAgCiAgICAgICAgICAgIGludCBzX2JlZm9yZSA9IHF1ZXJ5KGwgLSAxKTsKICAgICAgICAgICAgaW50IHRhcmdldCA9IHNfYmVmb3JlICsgazsKICAgICAgICAgICAKICAgICAgICAgICAgLy8gS2nhu4NtIHRyYSB4ZW0gdHJvbmcgxJFv4bqhbiBbMSwgcl0gY8OzIMSR4bunIHRhcmdldCBz4buRIHgga2jDtG5nCiAgICAgICAgICAgIGlmIChxdWVyeShyKSA8IHRhcmdldCkgewogICAgICAgICAgICAgICAgY291dCA8PCAtMSA8PCAiXG4iOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gQ2jhurd0IG5o4buLIHBow6JuIHTDrG0gduG7iyB0csOtIG5o4buPIG5o4bqldCDEkeG6oXQgxJHGsOG7o2MgdGFyZ2V0CiAgICAgICAgICAgICAgICBpbnQgbG93ID0gbCwgaGlnaCA9IHIsIGFucyA9IC0xOwogICAgICAgICAgICAgICAgd2hpbGUgKGxvdyA8PSBoaWdoKSB7CiAgICAgICAgICAgICAgICAgICAgaW50IG1pZCA9IGxvdyArIChoaWdoIC0gbG93KSAvIDI7CiAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXJ5KG1pZCkgPj0gdGFyZ2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFucyA9IG1pZDsKICAgICAgICAgICAgICAgICAgICAgICAgaGlnaCA9IG1pZCAtIDE7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgbG93ID0gbWlkICsgMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaW50IGlkeCwgdjsKICAgICAgICAgICAgY2luID4+IGlkeCA+PiB2OwogICAgICAgICAgICBpZiAoYVtpZHhdID09IHhfdmFsICYmIHYgIT0geF92YWwpIG1vZGlmeShpZHgsIC0xKTsKICAgICAgICAgICAgZWxzZSBpZiAoYVtpZHhdICE9IHhfdmFsICYmIHYgPT0geF92YWwpIG1vZGlmeShpZHgsIDEpOwogICAgICAgICAgICBhW2lkeF0gPSB2OwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9Cg==