#include #include #include #include #include using namespace __gnu_pbds; using namespace std; template using Set = tree, rb_tree_tag, tree_order_statistics_node_update>; int main() { int q; cin >> q; Set> st; long long u = 0; vector x(q); for (int i = 0; i < q; i++) { int t; cin >> t >> x[i]; if (t == 1) { x[i] -= u; st.insert(make_pair(x[i], i)); } else if (t == 2) { st.erase(st.find(make_pair(x[x[i] - 1], x[i] - 1))); } else { u += x[i]; } long long ok = 0; long long ng = 2e5; while (ng - ok > 1) { int mid = (ok + ng) / 2; int cnt = st.size() - st.order_of_key(make_pair(mid - u, 0)); if (cnt >= mid) { ok = mid; } else { ng = mid; } } cout << ok << endl; } }