WA:
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
int n, sum, lst, lsti;
map <int, int> mp;
map < pair <int, int>, int > f;
map <int, int> vis;
signed main() {
// freopen("sb.in", "r", stdin);
// freopen("sb.out", "w", stdout);
cin >> n;
// for(int i = 1;i <= 1e5; ++i)
for(int i = 1, op, k, b;i <= n; ++i) {
sum = max(0, sum);
scanf("%d %d %d", &op, &k, &b);
if(lst and lst != k and vis[k] != lst) vis[k] = lst, mp[k] = 0, f[{k, b}] = 0;
if(op == 1) {
sum ++;
mp[k] ++; f[{k, b}] ++;
}
else if(op == 2) {
if(!mp[k]) mp[k] = 0;
// cout << mp[k] << " " << sum << "\n";
printf("%d\n", sum - max(0, mp[k]));
}
else {
if(!mp[k]) mp[k] = 0;
if(!f[{k, b}]) f[{k, b}] = 0;
sum = mp[k] - f[{k, b}];
mp[k] -= f[{k, b}]; f[{k, b}] = 0;
lst = k, lsti = b; vis[k] = lst;
}
// cout << sum << " ";
}
return 0;
}