#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 2e9;
const ll LINF = 1e18;
const int N = 2e5 + 5;
int n, q;
int p[N], a[2][N];
int seg[2][4 * N];
void build(int i, int id, int l, int r) {
if (l == r) {
seg[i][id] = a[i][l];
return;
}
int mid = (l + r) >> 1;
build(i, id << 1, l, mid);
build(i, id << 1 | 1, mid + 1, r);
seg[i][id] = min(seg[i][id << 1], seg[i][id << 1 | 1]);
}
void update(int i, int id, int l, int r, int pos, int val) {
if (l > pos || r < pos) return;
if (l == r) {
seg[i][id] = val;
return;
}
int mid = (l + r) >> 1;
update(i, id << 1, l, mid, pos, val);
update(i, id << 1 | 1, mid + 1, r, pos, val);
seg[i][id] = min(seg[i][id << 1], seg[i][id << 1 | 1]);
}
int getMin(int i, int id, int l, int r, int u, int v) {
if (l > v || r < u) return INF;
if (u <= l && r <= v) return seg[i][id];
int mid = (l + r) >> 1;
return min(getMin(i, id << 1, l, mid, u, v), getMin(i, id << 1 | 1, mid + 1, r, u, v));
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> p[i];
a[0][i] = p[i] + i;
a[1][i] = p[i] - i;
}
build(0, 1, 1, n);
build(1, 1, 1, n);
while (q--) {
int type; cin >> type;
if (type == 1) {
int k, val;
cin >> k >> val;
update(0, 1, 1, n, k, val + k);
update(1, 1, 1, n, k, val - k);
p[k] = val;
}
else {
int k; cin >> k;
// Xét các chung cư có vị trí >= k
int ans = -k + getMin(0, 1, 1, n, k, n);
// Xét các chung cư có vị trí < k
if (k - 1 >= 1) ans = min(ans, k + getMin(1, 1, 1, n, 1, k - 1));
cout << ans << '\n';
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAgCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsgIAp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOyAgCgpjb25zdCBpbnQgSU5GID0gMmU5OyAgCmNvbnN0IGxsIExJTkYgPSAxZTE4OyAgCgpjb25zdCBpbnQgTiA9IDJlNSArIDU7IAoKaW50IG4sIHE7IAppbnQgcFtOXSwgYVsyXVtOXTsgCgppbnQgc2VnWzJdWzQgKiBOXTsgCgp2b2lkIGJ1aWxkKGludCBpLCBpbnQgaWQsIGludCBsLCBpbnQgcikgewoJaWYgKGwgPT0gcikgewoJCXNlZ1tpXVtpZF0gPSBhW2ldW2xdOyAgCgkJcmV0dXJuOyAgCgl9CglpbnQgbWlkID0gKGwgKyByKSA+PiAxOyAgCglidWlsZChpLCBpZCA8PCAxLCBsLCBtaWQpOyAKCWJ1aWxkKGksIGlkIDw8IDEgfCAxLCBtaWQgKyAxLCByKTsgCglzZWdbaV1baWRdID0gbWluKHNlZ1tpXVtpZCA8PCAxXSwgc2VnW2ldW2lkIDw8IDEgfCAxXSk7IAp9Cgp2b2lkIHVwZGF0ZShpbnQgaSwgaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCBwb3MsIGludCB2YWwpIHsKCWlmIChsID4gcG9zIHx8IHIgPCBwb3MpIHJldHVybjsgCgoJaWYgKGwgPT0gcikgewoJCXNlZ1tpXVtpZF0gPSB2YWw7IAoJCXJldHVybjsgCgl9CgoJaW50IG1pZCA9IChsICsgcikgPj4gMTsgCgl1cGRhdGUoaSwgaWQgPDwgMSwgbCwgbWlkLCBwb3MsIHZhbCk7IAoJdXBkYXRlKGksIGlkIDw8IDEgfCAxLCBtaWQgKyAxLCByLCBwb3MsIHZhbCk7IAoKCXNlZ1tpXVtpZF0gPSBtaW4oc2VnW2ldW2lkIDw8IDFdLCBzZWdbaV1baWQgPDwgMSB8IDFdKTsgCn0KCmludCBnZXRNaW4oaW50IGksIGludCBpZCwgaW50IGwsIGludCByLCBpbnQgdSwgaW50IHYpIHsKCWlmIChsID4gdiB8fCByIDwgdSkgcmV0dXJuIElORjsgIAoKCWlmICh1IDw9IGwgJiYgciA8PSB2KSByZXR1cm4gc2VnW2ldW2lkXTsgCgoJaW50IG1pZCA9IChsICsgcikgPj4gMTsgCglyZXR1cm4gbWluKGdldE1pbihpLCBpZCA8PCAxLCBsLCBtaWQsIHUsIHYpLCBnZXRNaW4oaSwgaWQgPDwgMSB8IDEsIG1pZCArIDEsIHIsIHUsIHYpKTsgCn0KCmludCBtYWluKCkgewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7ICAJCgljaW4gPj4gbiA+PiBxOyAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWNpbiA+PiBwW2ldOyAgCgkJYVswXVtpXSA9IHBbaV0gKyBpOyAgCgkJYVsxXVtpXSA9IHBbaV0gLSBpOyAKCX0gCgoJYnVpbGQoMCwgMSwgMSwgbik7ICAKCWJ1aWxkKDEsIDEsIDEsIG4pOyAKCgl3aGlsZSAocS0tKSB7CgkJaW50IHR5cGU7IGNpbiA+PiB0eXBlOyAKCgkJaWYgKHR5cGUgPT0gMSkgewoJCQlpbnQgaywgdmFsOyAKCQkJY2luID4+IGsgPj4gdmFsOyAKCQkJdXBkYXRlKDAsIDEsIDEsIG4sIGssIHZhbCArIGspOyAKCQkJdXBkYXRlKDEsIDEsIDEsIG4sIGssIHZhbCAtIGspOyAgCgkJCXBba10gPSB2YWw7IAoJCX0KCQllbHNlIHsKCQkJaW50IGs7IGNpbiA+PiBrOyAgIAoJCQkvLyBYw6l0IGPDoWMgY2h1bmcgY8awIGPDsyB24buLIHRyw60gPj0gawoJCQlpbnQgYW5zID0gLWsgKyBnZXRNaW4oMCwgMSwgMSwgbiwgaywgbik7ICAKCQkJLy8gWMOpdCBjw6FjIGNodW5nIGPGsCBjw7MgduG7iyB0csOtIDwgawoJCQlpZiAoayAtIDEgPj0gMSkgYW5zID0gbWluKGFucywgayArIGdldE1pbigxLCAxLCAxLCBuLCAxLCBrIC0gMSkpOyAKCgkJCWNvdXQgPDwgYW5zIDw8ICdcbic7IAoJCX0KCX0KfQ==