#include using namespace std; typedef __int128 ll; typedef pair PII; const int MM = 1e9 + 7; const double eps = 1e-8; const int MAXN = 5e5 + 10; int n, m; void prework(){ } void read(){ } ll now; int N, M; ll f[MAXN]; int tx[MAXN], ty[MAXN]; int a[MAXN]; ll b[MAXN]; void add(int x){ // cout << "ADD : " << x << endl; for (int i = M - 1 + x; i; i /= 2) a[i]++; } void del(int x){ // cout << "DEL : " << x << endl; for (int i = M - 1 + x; i; i /= 2) a[i]--; } bool test(int L){ /* cout << "TEST : " << L << ' ' << now << endl; for (int i = 1; i < 2 * M; i++) cout << "[" << i << ',' << a[i] << "] "; cout << endl; */ int ret = 0; if (b[1] + now >= L){ return L <= a[1]; } int l = 1, r = M; for (int i = 1; l != r; ){ int m = (l + r) / 2; // cout << i << ' ' << l << ' ' << r << ' ' << m << ' ' << b[m + 1] << endl; if (b[m + 1] + now >= L){ ret += a[i * 2 + 1]; r = m, i = i * 2; } else{ l = m + 1; i = i * 2 + 1; } } //if (b[l] + now <= L) ret++; return ret >= L; } /* int query(){ if (b[1] + now >= a[1]) return a[1]; if (b[N] + now < 1) return 0; // [1, M] for (int u = 1, l = 1, r = M; l != r; ){ int m = (l + r) / 2; // at least (m+1) number is large then or equal to m+1 // b[] if () } } */ void solve(int casi){ // cout << "Case #" << casi << ": "; int Q; scanf("%d", &Q); map X; now = 0; int cnt = 0; for (int i = 1; i <= Q; i++){ scanf("%d%d", &ty[i], &tx[i]); if (ty[i] == 3){ now += tx[i]; } if (ty[i] == 1){ X[tx[i] - now] = 1; f[++cnt] = tx[i] - now; } } N = 0; for (auto &x : X){ x.second = ++N; b[N] = x.first; } for (M = 1; M < N; M *= 2); for (int i = N + 1; i <= M; i++) b[i] = b[N] + Q + 2; for (int i = 1; i <= 2 * M; i++) a[i] = 0; /* cout << N << ' ' << M << endl; for (int i = 1; i <= M; i++) cout << b[i] << ' '; cout << endl; */ now = 0; int ans = 0; for (int i = 1; i <= Q; i++){ if (ty[i] == 1){ add(X[tx[i] - now]); if (test(ans + 1)) ans++; } else if (ty[i] == 2){ del(X[f[tx[i]]]); if (!test(ans)) ans--; } else { now += tx[i]; int L = 0, R = a[1] + 1; while (L + 1 < R){ int Mid = (L + R) / 2; if (test(Mid)) L = Mid; else R = Mid; } ans =L;//query(); } printf("%d\n", ans); } } void printans(){ } int main(){ // std::ios::sync_with_stdio(false); prework(); int T = 1; // cin>>T; for(int i = 1; i <= T; i++){ read(); solve(i); printans(); } return 0; }