#include <bits/stdc++.h>
using namespace std;
using int64 = long long;
// Đếm số cặp có |x - y| <= d, làm việc trên các giá trị phân biệt
static inline long long count_at_most(const vector<int>& val,
const vector<long long>& freq,
long long d) {
int m = (int)val.size();
vector<long long> pref(m + 1, 0);
for (int i = 0; i < m; ++i) pref[i + 1] = pref[i] + freq[i];
long long res = 0;
int j = 0;
for (int i = 0; i < m; ++i) {
if (j < i) j = i;
while (j + 1 < m && (long long)val[j + 1] - val[i] <= d) ++j;
long long ci = freq[i];
long long sum_right = pref[j + 1] - pref[i + 1]; // tổng f_{i+1..j}
res += ci * sum_right + ci * (ci - 1) / 2; // cặp khác nhóm + trong nhóm
}
return res;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N, Q;
if (!(cin >> N >> Q)) return 0;
// multiset giá trị: lưu theo (giá trị -> tần suất)
map<int, long long> cnt;
cnt[1] = N;
while (Q--) {
int tp;
cin >> tp;
if (tp == 1) {
int a, b; cin >> a >> b;
// giảm a, b
auto dec = [&](int x){
auto it = cnt.find(x);
if (it == cnt.end() || it->second == 0) return; // input đảm bảo hợp lệ
if (--(it->second) == 0) cnt.erase(it);
};
dec(a); dec(b);
cnt[a + b]++; // tăng a+b
} else {
long long k; cin >> k;
// gom về 2 mảng đã sort sẵn
vector<int> val; val.reserve(cnt.size());
vector<long long> freq; freq.reserve(cnt.size());
long long n = 0;
for (auto &p : cnt) {
val.push_back(p.first);
freq.push_back(p.second);
n += p.second;
}
// biên nhị phân
long long lo = 0, hi = val.back() - val.front(); // khoảng cách tối đa
// bảo toàn: tổng số cặp = nC2, k luôn hợp lệ theo đề
while (lo < hi) {
long long mid = (lo + hi) >> 1;
if (count_at_most(val, freq, mid) >= k) hi = mid;
else lo = mid + 1;
}
cout << lo << '\n';
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyBpbnQ2NCA9IGxvbmcgbG9uZzsKCi8vIMSQ4bq/bSBz4buRIGPhurdwIGPDsyB8eCAtIHl8IDw9IGQsIGzDoG0gdmnhu4djIHRyw6puIGPDoWMgZ2nDoSB0cuG7iyBwaMOibiBiaeG7h3QKc3RhdGljIGlubGluZSBsb25nIGxvbmcgY291bnRfYXRfbW9zdChjb25zdCB2ZWN0b3I8aW50PiYgdmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlY3Rvcjxsb25nIGxvbmc+JiBmcmVxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBkKSB7CiAgICBpbnQgbSA9IChpbnQpdmFsLnNpemUoKTsKICAgIHZlY3Rvcjxsb25nIGxvbmc+IHByZWYobSArIDEsIDApOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtOyArK2kpIHByZWZbaSArIDFdID0gcHJlZltpXSArIGZyZXFbaV07CgogICAgbG9uZyBsb25nIHJlcyA9IDA7CiAgICBpbnQgaiA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG07ICsraSkgewogICAgICAgIGlmIChqIDwgaSkgaiA9IGk7CiAgICAgICAgd2hpbGUgKGogKyAxIDwgbSAmJiAobG9uZyBsb25nKXZhbFtqICsgMV0gLSB2YWxbaV0gPD0gZCkgKytqOwogICAgICAgIGxvbmcgbG9uZyBjaSA9IGZyZXFbaV07CiAgICAgICAgbG9uZyBsb25nIHN1bV9yaWdodCA9IHByZWZbaiArIDFdIC0gcHJlZltpICsgMV07IC8vIHThu5VuZyBmX3tpKzEuLmp9CiAgICAgICAgcmVzICs9IGNpICogc3VtX3JpZ2h0ICsgY2kgKiAoY2kgLSAxKSAvIDI7ICAgICAgIC8vIGPhurdwIGtow6FjIG5ow7NtICsgdHJvbmcgbmjDs20KICAgIH0KICAgIHJldHVybiByZXM7Cn0KCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKCiAgICBpbnQgTiwgUTsKICAgIGlmICghKGNpbiA+PiBOID4+IFEpKSByZXR1cm4gMDsKCiAgICAvLyBtdWx0aXNldCBnacOhIHRy4buLOiBsxrB1IHRoZW8gKGdpw6EgdHLhu4sgLT4gdOG6p24gc3XhuqV0KQogICAgbWFwPGludCwgbG9uZyBsb25nPiBjbnQ7CiAgICBjbnRbMV0gPSBOOwoKICAgIHdoaWxlIChRLS0pIHsKICAgICAgICBpbnQgdHA7IAogICAgICAgIGNpbiA+PiB0cDsKICAgICAgICBpZiAodHAgPT0gMSkgewogICAgICAgICAgICBpbnQgYSwgYjsgY2luID4+IGEgPj4gYjsKICAgICAgICAgICAgLy8gZ2nhuqNtIGEsIGIKICAgICAgICAgICAgYXV0byBkZWMgPSBbJl0oaW50IHgpewogICAgICAgICAgICAgICAgYXV0byBpdCA9IGNudC5maW5kKHgpOwogICAgICAgICAgICAgICAgaWYgKGl0ID09IGNudC5lbmQoKSB8fCBpdC0+c2Vjb25kID09IDApIHJldHVybjsgLy8gaW5wdXQgxJHhuqNtIGLhuqNvIGjhu6NwIGzhu4cKICAgICAgICAgICAgICAgIGlmICgtLShpdC0+c2Vjb25kKSA9PSAwKSBjbnQuZXJhc2UoaXQpOwogICAgICAgICAgICB9OwogICAgICAgICAgICBkZWMoYSk7IGRlYyhiKTsKICAgICAgICAgICAgY250W2EgKyBiXSsrOyAvLyB0xINuZyBhK2IKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBsb25nIGxvbmcgazsgY2luID4+IGs7CgogICAgICAgICAgICAvLyBnb20gduG7gSAyIG3huqNuZyDEkcOjIHNvcnQgc+G6tW4KICAgICAgICAgICAgdmVjdG9yPGludD4gdmFsOyB2YWwucmVzZXJ2ZShjbnQuc2l6ZSgpKTsKICAgICAgICAgICAgdmVjdG9yPGxvbmcgbG9uZz4gZnJlcTsgZnJlcS5yZXNlcnZlKGNudC5zaXplKCkpOwogICAgICAgICAgICBsb25nIGxvbmcgbiA9IDA7CiAgICAgICAgICAgIGZvciAoYXV0byAmcCA6IGNudCkgewogICAgICAgICAgICAgICAgdmFsLnB1c2hfYmFjayhwLmZpcnN0KTsKICAgICAgICAgICAgICAgIGZyZXEucHVzaF9iYWNrKHAuc2Vjb25kKTsKICAgICAgICAgICAgICAgIG4gKz0gcC5zZWNvbmQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gYmnDqm4gbmjhu4sgcGjDom4KICAgICAgICAgICAgbG9uZyBsb25nIGxvID0gMCwgaGkgPSB2YWwuYmFjaygpIC0gdmFsLmZyb250KCk7IC8vIGtob+G6o25nIGPDoWNoIHThu5FpIMSRYQogICAgICAgICAgICAvLyBi4bqjbyB0b8OgbjogdOG7lW5nIHPhu5EgY+G6t3AgPSBuQzIsIGsgbHXDtG4gaOG7o3AgbOG7hyB0aGVvIMSR4buBCiAgICAgICAgICAgIHdoaWxlIChsbyA8IGhpKSB7CiAgICAgICAgICAgICAgICBsb25nIGxvbmcgbWlkID0gKGxvICsgaGkpID4+IDE7CiAgICAgICAgICAgICAgICBpZiAoY291bnRfYXRfbW9zdCh2YWwsIGZyZXEsIG1pZCkgPj0gaykgaGkgPSBtaWQ7CiAgICAgICAgICAgICAgICBlbHNlIGxvID0gbWlkICsgMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb3V0IDw8IGxvIDw8ICdcbic7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0=