// #pragma GCC optimize("Ofast,unroll-loops")
// #pragma GCC target("avx,avx2,fma")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define dd double
#define ld long double
#define sl(n) scanf("%lld", &n)
#define si(n) scanf("%d", &n)
#define sd(n) scanf("%lf", &n)
#define pll pair <ll, ll>
#define pii pair <int, int>
#define mp make_pair
#define pb push_back
#define all(v) v.begin(), v.end()
#define inf (1LL << 61)
#define loop(i, start, stop, inc) for(ll i = start; i <= stop; i += inc)
#define for1(i, stop) for(ll i = 1; i <= stop; ++i)
#define for0(i, stop) for(ll i = 0; i < stop; ++i)
#define rep1(i, start) for(ll i = start; i >= 1; --i)
#define rep0(i, start) for(ll i = (start-1); i >= 0; --i)
#define ms(n, i) memset(n, i, sizeof(n))
#define casep(n) printf("Case %lld:", ++n)
#define pn printf("\n")
#define pf printf
#define EL '\n'
#define fastio std::ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
const ll sz = 22, MAX_N = (1<<14)+10, psz = 4*MAX_N + MAX_N*14, lim = 6;
ll ara[sz], n, idx, tot, l, r;
ll tr[psz], Left[psz], Right[psz], root[MAX_N], sufSub[MAX_N], idn;
vector <ll> num;
void build(ll lo, ll hi, ll node)
{
if(lo == hi) {
tr[node] = 0;
return;
}
int mid = lo+hi>>1;
Left[node] = ++idn, Right[node] = ++idn;
build(lo, mid, Left[node]);
build(mid+1, hi, Right[node]);
tr[node] = 0;
}
ll upd(ll lo, ll hi, ll indx, ll node)
{
if(lo > indx || hi < indx)
return node;
ll nnode = ++idn;
if(lo == hi) {
tr[nnode] = tr[node]+1;
return nnode;
}
int mid = lo+hi>>1;
Left[nnode] = upd(lo, mid, indx, Left[node]);
Right[nnode] = upd(mid+1, hi, indx, Right[node]);
tr[nnode] = tr[ Left[nnode] ] + tr[ Right[nnode] ];
return nnode;
}
ll query(ll lo, ll hi, ll l, ll r, ll lnode, ll rnode)
{
if(lo > r || hi < l)
return 0;
if(lo >= l && hi <= r)
return tr[rnode] - tr[lnode];
int mid = lo+hi>>1;
return query(lo, mid, l, r, Left[lnode], Left[rnode])
+ query(mid+1, hi, l, r, Right[lnode], Right[rnode]);
}
ll solve(ll pos, ll sum, ll x)
{
if(pos > min(n, lim))
return 0;
ll nsum = sum+ara[pos], ret = 0;
tot++;
if(tot >= l && tot <= r)
ret += (nsum <= x);
ret += solve(pos+1, nsum, x);
if(nsum <= x) {
ll start = max(1LL, l-tot), stop = min(idx, r-tot);
ll xp = upper_bound(all(num), x-nsum) - num.begin();
if(start <= stop)
ret += query(0, idx, 0, xp, root[start-1], root[stop]);
}
tot += idx;
ret += solve(pos+1, sum, x);
return ret;
}
void solve2(ll pos, ll sum)
{
if(pos > n)
return;
sufSub[++idx] = sum+ara[pos];
solve2(pos+1, sum+ara[pos]);
solve2(pos+1, sum);
}
void makeSufSub()
{
solve2(lim+1, 0);
for1(i, idx) num.pb(sufSub[i]);
sort(all(num));
num.erase(unique(all(num)), num.end());
root[0] = ++idn;
build(0, idx, root[0]);
for1(i, idx) {
ll pos = upper_bound(all(num), sufSub[i]) - num.begin();
root[i] = upd(0, idx, pos, root[i-1]);
}
}
ll countLeq(ll x)
{
tot = 0;
ll ret = solve(1, 0, x);
ll start = max(1LL, l-tot), stop = min(idx, r-tot);
if(start <= stop) {
ll xp = upper_bound(all(num), x) - num.begin();
ret += query(0, idx, 0, xp, root[start-1], root[stop]);
}
return ret;
}
ll findk(ll k)
{
ll lo = 1, hi = n*(ll)1e9, ret;
while(lo <= hi) {
ll mid = lo+hi >> 1;
ll got = countLeq(mid);
if(got >= k) {
ret = mid;
hi = mid-1;
}
else
lo = mid+1;
}
return ret;
}
int main()
{
ll q;
cin >> n >> q;
for1(i, n) {
sl(ara[i]);
}
if(n > lim)
makeSufSub();
while(q--) {
ll typ; sl(typ);
if(typ == 1) {
ll k, c;
sl(k), sl(c);
ara[k] = c;
}
else {
ll k;
sl(l), sl(r), sl(k);
pf("%lld\n", findk(k));
}
}
return 0;
}
Ly8gI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0LHVucm9sbC1sb29wcyIpCi8vICNwcmFnbWEgR0NDIHRhcmdldCgiYXZ4LGF2eDIsZm1hIikKCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgZGQgZG91YmxlCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBzbChuKSBzY2FuZigiJWxsZCIsICZuKQojZGVmaW5lIHNpKG4pIHNjYW5mKCIlZCIsICZuKQojZGVmaW5lIHNkKG4pIHNjYW5mKCIlbGYiLCAmbikKI2RlZmluZSBwbGwgcGFpciA8bGwsIGxsPgojZGVmaW5lIHBpaSBwYWlyIDxpbnQsIGludD4KI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBhbGwodikgdi5iZWdpbigpLCB2LmVuZCgpCiNkZWZpbmUgaW5mICgxTEwgPDwgNjEpCiNkZWZpbmUgbG9vcChpLCBzdGFydCwgc3RvcCwgaW5jKSBmb3IobGwgaSA9IHN0YXJ0OyBpIDw9IHN0b3A7IGkgKz0gaW5jKQojZGVmaW5lIGZvcjEoaSwgc3RvcCkgZm9yKGxsIGkgPSAxOyBpIDw9IHN0b3A7ICsraSkKI2RlZmluZSBmb3IwKGksIHN0b3ApIGZvcihsbCBpID0gMDsgaSA8IHN0b3A7ICsraSkKI2RlZmluZSByZXAxKGksIHN0YXJ0KSBmb3IobGwgaSA9IHN0YXJ0OyBpID49IDE7IC0taSkKI2RlZmluZSByZXAwKGksIHN0YXJ0KSBmb3IobGwgaSA9IChzdGFydC0xKTsgaSA+PSAwOyAtLWkpCiNkZWZpbmUgbXMobiwgaSkgbWVtc2V0KG4sIGksIHNpemVvZihuKSkKI2RlZmluZSBjYXNlcChuKSBwcmludGYoIkNhc2UgJWxsZDoiLCArK24pCiNkZWZpbmUgcG4gcHJpbnRmKCJcbiIpCiNkZWZpbmUgcGYgcHJpbnRmCiNkZWZpbmUgRUwgJ1xuJwojZGVmaW5lIGZhc3RpbyBzdGQ6Omlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpO2Npbi50aWUoTlVMTCk7Y291dC50aWUoTlVMTCk7Cgpjb25zdCBsbCBzeiA9IDIyLCBNQVhfTiA9ICgxPDwxNCkrMTAsIHBzeiA9IDQqTUFYX04gKyBNQVhfTioxNCwgbGltID0gNjsKbGwgYXJhW3N6XSwgbiwgaWR4LCB0b3QsIGwsIHI7CgpsbCB0cltwc3pdLCBMZWZ0W3Bzel0sIFJpZ2h0W3Bzel0sIHJvb3RbTUFYX05dLCBzdWZTdWJbTUFYX05dLCBpZG47CnZlY3RvciA8bGw+IG51bTsKCnZvaWQgYnVpbGQobGwgbG8sIGxsIGhpLCBsbCBub2RlKQp7CiAgICBpZihsbyA9PSBoaSkgewogICAgICAgIHRyW25vZGVdID0gMDsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaW50IG1pZCA9IGxvK2hpPj4xOwogICAgTGVmdFtub2RlXSA9ICsraWRuLCBSaWdodFtub2RlXSA9ICsraWRuOwoKICAgIGJ1aWxkKGxvLCBtaWQsIExlZnRbbm9kZV0pOwogICAgYnVpbGQobWlkKzEsIGhpLCBSaWdodFtub2RlXSk7CgogICAgdHJbbm9kZV0gPSAwOwp9CgpsbCB1cGQobGwgbG8sIGxsIGhpLCBsbCBpbmR4LCBsbCBub2RlKQp7CiAgICBpZihsbyA+IGluZHggfHwgaGkgPCBpbmR4KQogICAgICAgIHJldHVybiBub2RlOwoKICAgIGxsIG5ub2RlID0gKytpZG47CgogICAgaWYobG8gPT0gaGkpIHsKICAgICAgICB0cltubm9kZV0gPSB0cltub2RlXSsxOwogICAgICAgIHJldHVybiBubm9kZTsKICAgIH0KCiAgICBpbnQgbWlkID0gbG8raGk+PjE7CgogICAgTGVmdFtubm9kZV0gPSB1cGQobG8sIG1pZCwgaW5keCwgTGVmdFtub2RlXSk7CiAgICBSaWdodFtubm9kZV0gPSB1cGQobWlkKzEsIGhpLCBpbmR4LCBSaWdodFtub2RlXSk7CgogICAgdHJbbm5vZGVdID0gdHJbIExlZnRbbm5vZGVdIF0gKyB0clsgUmlnaHRbbm5vZGVdIF07CiAgICByZXR1cm4gbm5vZGU7Cn0KCmxsIHF1ZXJ5KGxsIGxvLCBsbCBoaSwgbGwgbCwgbGwgciwgbGwgbG5vZGUsIGxsIHJub2RlKQp7CiAgICBpZihsbyA+IHIgfHwgaGkgPCBsKQogICAgICAgIHJldHVybiAwOwoKICAgIGlmKGxvID49IGwgJiYgaGkgPD0gcikKICAgICAgICByZXR1cm4gdHJbcm5vZGVdIC0gdHJbbG5vZGVdOwoKICAgIGludCBtaWQgPSBsbytoaT4+MTsKCiAgICByZXR1cm4gcXVlcnkobG8sIG1pZCwgbCwgciwgTGVmdFtsbm9kZV0sIExlZnRbcm5vZGVdKQogICAgICAgICsgIHF1ZXJ5KG1pZCsxLCBoaSwgbCwgciwgUmlnaHRbbG5vZGVdLCBSaWdodFtybm9kZV0pOwp9CgpsbCBzb2x2ZShsbCBwb3MsIGxsIHN1bSwgbGwgeCkKewogICAgaWYocG9zID4gbWluKG4sIGxpbSkpCiAgICAgICAgcmV0dXJuIDA7CgogICAgbGwgbnN1bSA9IHN1bSthcmFbcG9zXSwgcmV0ID0gMDsKICAgIHRvdCsrOwoKICAgIGlmKHRvdCA+PSBsICYmIHRvdCA8PSByKQogICAgICAgIHJldCArPSAobnN1bSA8PSB4KTsKCiAgICByZXQgKz0gc29sdmUocG9zKzEsIG5zdW0sIHgpOwoKICAgIGlmKG5zdW0gPD0geCkgewogICAgICAgIGxsIHN0YXJ0ID0gbWF4KDFMTCwgbC10b3QpLCBzdG9wID0gbWluKGlkeCwgci10b3QpOwogICAgICAgIGxsIHhwID0gdXBwZXJfYm91bmQoYWxsKG51bSksIHgtbnN1bSkgLSBudW0uYmVnaW4oKTsKCiAgICAgICAgaWYoc3RhcnQgPD0gc3RvcCkKICAgICAgICAgICAgcmV0ICs9IHF1ZXJ5KDAsIGlkeCwgMCwgeHAsIHJvb3Rbc3RhcnQtMV0sIHJvb3Rbc3RvcF0pOwogICAgfQoKICAgIHRvdCArPSBpZHg7CgogICAgcmV0ICs9IHNvbHZlKHBvcysxLCBzdW0sIHgpOwoKICAgIHJldHVybiByZXQ7Cn0KCnZvaWQgc29sdmUyKGxsIHBvcywgbGwgc3VtKQp7CiAgICBpZihwb3MgPiBuKQogICAgICAgIHJldHVybjsKCiAgICBzdWZTdWJbKytpZHhdID0gc3VtK2FyYVtwb3NdOwoKICAgIHNvbHZlMihwb3MrMSwgc3VtK2FyYVtwb3NdKTsKICAgIHNvbHZlMihwb3MrMSwgc3VtKTsKfQoKdm9pZCBtYWtlU3VmU3ViKCkKewogICAgc29sdmUyKGxpbSsxLCAwKTsKCiAgICBmb3IxKGksIGlkeCkgbnVtLnBiKHN1ZlN1YltpXSk7CgogICAgc29ydChhbGwobnVtKSk7CiAgICBudW0uZXJhc2UodW5pcXVlKGFsbChudW0pKSwgbnVtLmVuZCgpKTsKCiAgICByb290WzBdID0gKytpZG47CiAgICBidWlsZCgwLCBpZHgsIHJvb3RbMF0pOwoKICAgIGZvcjEoaSwgaWR4KSB7CiAgICAgICAgbGwgcG9zID0gdXBwZXJfYm91bmQoYWxsKG51bSksIHN1ZlN1YltpXSkgLSBudW0uYmVnaW4oKTsKICAgICAgICByb290W2ldID0gdXBkKDAsIGlkeCwgcG9zLCByb290W2ktMV0pOwogICAgfQp9CgpsbCBjb3VudExlcShsbCB4KQp7CiAgICB0b3QgPSAwOwogICAgbGwgcmV0ID0gc29sdmUoMSwgMCwgeCk7CgogICAgbGwgc3RhcnQgPSBtYXgoMUxMLCBsLXRvdCksIHN0b3AgPSBtaW4oaWR4LCByLXRvdCk7CgogICAgaWYoc3RhcnQgPD0gc3RvcCkgewogICAgICAgIGxsIHhwID0gdXBwZXJfYm91bmQoYWxsKG51bSksIHgpIC0gbnVtLmJlZ2luKCk7CiAgICAgICAgcmV0ICs9IHF1ZXJ5KDAsIGlkeCwgMCwgeHAsIHJvb3Rbc3RhcnQtMV0sIHJvb3Rbc3RvcF0pOwogICAgfQoKICAgIHJldHVybiByZXQ7Cn0KCmxsIGZpbmRrKGxsIGspCnsKICAgIGxsIGxvID0gMSwgaGkgPSBuKihsbCkxZTksIHJldDsKCiAgICB3aGlsZShsbyA8PSBoaSkgewogICAgICAgIGxsIG1pZCA9IGxvK2hpID4+IDE7CgogICAgICAgIGxsIGdvdCA9IGNvdW50TGVxKG1pZCk7CgogICAgICAgIGlmKGdvdCA+PSBrKSB7CiAgICAgICAgICAgIHJldCA9IG1pZDsKICAgICAgICAgICAgaGkgPSBtaWQtMTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgICBsbyA9IG1pZCsxOwogICAgfQoKICAgIHJldHVybiByZXQ7Cn0KCmludCBtYWluKCkKewogICAgbGwgcTsKICAgIGNpbiA+PiBuID4+IHE7CgogICAgZm9yMShpLCBuKSB7CiAgICAgICAgc2woYXJhW2ldKTsKICAgIH0KCiAgICBpZihuID4gbGltKQogICAgICAgIG1ha2VTdWZTdWIoKTsKCiAgICB3aGlsZShxLS0pIHsKICAgICAgICBsbCB0eXA7IHNsKHR5cCk7CgogICAgICAgIGlmKHR5cCA9PSAxKSB7CiAgICAgICAgICAgIGxsIGssIGM7CiAgICAgICAgICAgIHNsKGspLCBzbChjKTsKCiAgICAgICAgICAgIGFyYVtrXSA9IGM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBsbCBrOwogICAgICAgICAgICBzbChsKSwgc2wociksIHNsKGspOwoKICAgICAgICAgICAgcGYoIiVsbGRcbiIsIGZpbmRrKGspKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K