#include <bits/stdc++.h>
#define int long long
using namespace std;
int m, t, a, b, cnt, moneyCache;
struct ProtectedMoney {
int price, secured;
ProtectedMoney(int a, int b) {
price = a, secured = b;
}
inline bool operator>(const ProtectedMoney &ano) const {
return secured > ano.secured;
}
};
priority_queue<ProtectedMoney, vector<ProtectedMoney>, greater<ProtectedMoney>> que;
int32_t main(int32_t argc, char const *argv[]) {
scanf("%lld", &m);
for (int event = 1; event <= m; event++) {
scanf("%lld%lld", &t, &a);
while ((!que.empty()) && (que.top().secured == event)) {
moneyCache += que.top().price;
que.pop();
}
if (t == 1) {
moneyCache += a;
}
if (t == 2) {
if (moneyCache >= a) {
moneyCache -= a;
}
else {
++cnt;
}
}
if (t == 3) {
scanf("%lld", &b);
moneyCache -= b;
que.push(ProtectedMoney(a, b));
}
}
printf("%lld\n", cnt);
system("pause");
return 0;
}