#include //#include "atcoder/all" #pragma GCC target("avx2") #pragma GCC optimize("Ofast") using namespace std; using i64 = long long; void solve(){ int n, q; cin >> n >> q; std::map tel; tel.emplace(0, 0); for(int i = 0; i < q; ++i){ int ty; cin >> ty; if(ty == 1){ int x; cin >> x; --x; i64 cost = 1e18; auto it = tel.lower_bound(x); if(it != tel.end()){ cost = min(cost, abs(it->first - x) + it->second); } auto prev_it = prev(it); cost = min(cost, abs(prev_it->first - x) + prev_it->second); cout << cost << endl; } else{ int x; i64 c; cin >> x >> c; --x; auto it = tel.lower_bound(x); bool fl = true; while(it != tel.end()){ if(abs(it->first - x) + c < it->second){ it = tel.erase(it); } else if(abs(it->first - x) + it->second <= c){ fl = false; break; } else{ break; } } it = prev(tel.upper_bound(x)); while(it != tel.begin()){ if(abs(it->first - x) + c < it->second){ it = tel.erase(it); --it; } else if(abs(it->first - x) + it->second <= c){ fl = false; break; } else{ break; } } if(fl){ tel.emplace(x, c); } } } } signed main(){ solve(); }