#include <bits/stdc++.h>
const long long N = 1e12;
struct SegmentTree {
std::vector<long long> seg_data{0}, mx{N};
std::vector<int> L{0}, R{0};
void check(int &x, long long rx){
if(x) return;
x = (int)seg_data.size();
seg_data.push_back(0);
mx.push_back(rx-1);
L.push_back(0);
R.push_back(0);
}
long long get(long long i, long long ni=0, long long lx=-N, long long rx=N+1){
if(rx - lx == 1)
return seg_data[ni]+lx;
long long mid = (lx + rx) / 2;
if(i < mid) {
check(L[ni], mid);
return get(i, L[ni], lx, mid) + seg_data[ni];
}
check(R[ni], rx);
return get(i, R[ni], mid, rx)+seg_data[ni];
}
void add(long long l, long long r, int v, long long ni=0, long long lx=-N, long long rx=N+1) {
if(lx >= l && rx <= r) {
seg_data[ni] += v;
mx[ni] += v;
return;
}
if(rx <= l || lx >= r)
return;
long long mid = (lx + rx) / 2;
check(L[ni], mid);
add(l, r, v, L[ni], lx, mid);
check(R[ni], rx);
add(l, r, v, R[ni], mid, rx);
mx[ni] = mx[R[ni]]+seg_data[ni];
}
long long upper_bound(long long x, long long ni=0, long long lx=-N, long long rx=N){
x -= seg_data[ni];
if(rx-lx==1)
return lx > x ? lx : rx;
long long mid = (lx+rx)/2;
check(L[ni], mid);
if(mx[L[ni]] > x)
return upper_bound(x, L[ni], lx, mid);
check(R[ni], rx);
return upper_bound(x, R[ni], mid, rx);
}
};
int main() {
std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr);
int n, q;
std::cin >> n >> q;
SegmentTree st;
auto add = [&]()->void{
long long p;
int a, b;
std::cin >> p >> a >> b;
long long l = st.upper_bound(p);
st.add(-N, l, -b);
st.add(l, N+1, a);
};
while(n--)
add();
while(q--){
int op;
std::cin >> op;
if(op == 1)
add();
else {
long long x;
std::cin >> x;
std::cout << st.get(x) << '\n';
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CmNvbnN0IGxvbmcgbG9uZyBOID0gMWUxMjsKc3RydWN0IFNlZ21lbnRUcmVlIHsKICAgIHN0ZDo6dmVjdG9yPGxvbmcgbG9uZz4gc2VnX2RhdGF7MH0sIG14e059OwogICAgc3RkOjp2ZWN0b3I8aW50PiBMezB9LCBSezB9OwoKICAgIHZvaWQgY2hlY2soaW50ICZ4LCBsb25nIGxvbmcgcngpewogICAgICAgIGlmKHgpIHJldHVybjsKICAgICAgICB4ID0gKGludClzZWdfZGF0YS5zaXplKCk7CiAgICAgICAgc2VnX2RhdGEucHVzaF9iYWNrKDApOwogICAgICAgIG14LnB1c2hfYmFjayhyeC0xKTsKICAgICAgICBMLnB1c2hfYmFjaygwKTsKICAgICAgICBSLnB1c2hfYmFjaygwKTsKICAgIH0KCiAgICBsb25nIGxvbmcgZ2V0KGxvbmcgbG9uZyBpLCBsb25nIGxvbmcgbmk9MCwgbG9uZyBsb25nIGx4PS1OLCBsb25nIGxvbmcgcng9TisxKXsKICAgICAgICBpZihyeCAtIGx4ID09IDEpCiAgICAgICAgICAgIHJldHVybiBzZWdfZGF0YVtuaV0rbHg7CgogICAgICAgIGxvbmcgbG9uZyBtaWQgPSAobHggKyByeCkgLyAyOwogICAgICAgIGlmKGkgPCBtaWQpIHsKICAgICAgICAgICAgY2hlY2soTFtuaV0sIG1pZCk7CiAgICAgICAgICAgIHJldHVybiBnZXQoaSwgTFtuaV0sIGx4LCBtaWQpICsgc2VnX2RhdGFbbmldOwogICAgICAgIH0KICAgICAgICBjaGVjayhSW25pXSwgcngpOwogICAgICAgIHJldHVybiBnZXQoaSwgUltuaV0sIG1pZCwgcngpK3NlZ19kYXRhW25pXTsKICAgIH0KCiAgICB2b2lkIGFkZChsb25nIGxvbmcgbCwgbG9uZyBsb25nIHIsIGludCB2LCBsb25nIGxvbmcgbmk9MCwgbG9uZyBsb25nIGx4PS1OLCBsb25nIGxvbmcgcng9TisxKSB7CgogICAgICAgIGlmKGx4ID49IGwgJiYgcnggPD0gcikgewogICAgICAgICAgICBzZWdfZGF0YVtuaV0gKz0gdjsKICAgICAgICAgICAgbXhbbmldICs9IHY7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYocnggPD0gbCB8fCBseCA+PSByKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGxvbmcgbG9uZyBtaWQgPSAobHggKyByeCkgLyAyOwogICAgICAgIGNoZWNrKExbbmldLCBtaWQpOwogICAgICAgIGFkZChsLCByLCB2LCBMW25pXSwgbHgsIG1pZCk7CiAgICAgICAgY2hlY2soUltuaV0sIHJ4KTsKICAgICAgICBhZGQobCwgciwgdiwgUltuaV0sIG1pZCwgcngpOwoKICAgICAgICBteFtuaV0gPSBteFtSW25pXV0rc2VnX2RhdGFbbmldOwogICAgfQoKICAgIGxvbmcgbG9uZyB1cHBlcl9ib3VuZChsb25nIGxvbmcgeCwgbG9uZyBsb25nIG5pPTAsIGxvbmcgbG9uZyBseD0tTiwgbG9uZyBsb25nIHJ4PU4pewogICAgICAgIHggLT0gc2VnX2RhdGFbbmldOwogICAgICAgIGlmKHJ4LWx4PT0xKQogICAgICAgICAgICByZXR1cm4gbHggPiB4ID8gbHggOiByeDsKICAgICAgICBsb25nIGxvbmcgbWlkID0gKGx4K3J4KS8yOwogICAgICAgIGNoZWNrKExbbmldLCBtaWQpOwogICAgICAgIGlmKG14W0xbbmldXSA+IHgpCiAgICAgICAgICAgIHJldHVybiB1cHBlcl9ib3VuZCh4LCBMW25pXSwgbHgsIG1pZCk7CiAgICAgICAgY2hlY2soUltuaV0sIHJ4KTsKICAgICAgICByZXR1cm4gdXBwZXJfYm91bmQoeCwgUltuaV0sIG1pZCwgcngpOwogICAgfQp9OwppbnQgbWFpbigpIHsKICAgIHN0ZDo6aW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IHN0ZDo6Y2luLnRpZShudWxscHRyKTsKICAgIGludCBuLCBxOwogICAgc3RkOjpjaW4gPj4gbiA+PiBxOwogICAgU2VnbWVudFRyZWUgc3Q7CiAgICBhdXRvIGFkZCA9IFsmXSgpLT52b2lkewogICAgICAgIGxvbmcgbG9uZyBwOwogICAgICAgIGludCBhLCBiOwogICAgICAgIHN0ZDo6Y2luID4+IHAgPj4gYSA+PiBiOwogICAgICAgIGxvbmcgbG9uZyBsID0gc3QudXBwZXJfYm91bmQocCk7CiAgICAgICAgc3QuYWRkKC1OLCBsLCAtYik7CiAgICAgICAgc3QuYWRkKGwsIE4rMSwgYSk7CiAgICB9OwogICAgd2hpbGUobi0tKQogICAgICAgIGFkZCgpOwogICAgd2hpbGUocS0tKXsKICAgICAgICBpbnQgb3A7CiAgICAgICAgc3RkOjpjaW4gPj4gb3A7CiAgICAgICAgaWYob3AgPT0gMSkKICAgICAgICAgICAgYWRkKCk7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGxvbmcgbG9uZyB4OwogICAgICAgICAgICBzdGQ6OmNpbiA+PiB4OwogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgc3QuZ2V0KHgpIDw8ICdcbic7CiAgICAgICAgfQogICAgfQp9