#include <bits/stdc++.h>
const int INF = (int)1e9;
const int long minINF = (int)-1e9;
const int mod = (int)1e9 + 7;
const int MAXN = (int)1e5 + 5;
using namespace std;
int cnt = 1;
map<int, int> ans[(int)(1e6) + 5];
map<int, int> mp;
void upd(int num, int v, int inc) {
  while (v <= (1e9)) {
    ans[num][v] += inc;
    v += (v & -v);
  }
}
int ask(int num, int v) {
  int res = 0;
  while (v > 0) {
    res += ans[num][v];
    v -= (v & -v);
  }
  return res;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  int n, x, y, z;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> x >> y >> z;
    if (!mp[z]) {
      mp[z] = cnt;
      cnt++;
    }
    if (x == 1) {
      upd(mp[z], y, 1);
    } else if (x == 2) {
      upd(mp[z], y, -1);
    } else {
      cout << ask(mp[z], y) << '\n';
    }
  }
}
