#include <bits/stdc++.h>
using namespace std;
vector<int> adj[300005];
int main() {
  int i, j, n, m, q;
  cin >> n >> q;
  set<int> s;
  int noti = 0;
  for (i = 1; i <= q; i++) {
    int qtype;
    cin >> qtype;
    if (qtype == 1) {
      int x;
      cin >> x;
      noti++;
      adj[x].push_back(noti);
      s.insert(noti);
    } else if (qtype == 2) {
      int x;
      cin >> x;
      for (auto v : adj[x]) {
        s.erase(v);
      }
      adj[x].clear();
    } else {
      int t;
      cin >> t;
      auto itr = s.begin();
      while (!s.empty() && *itr <= t) {
        s.erase(*itr);
        if (!s.empty()) itr = s.begin();
      }
    }
    cout << (s.size()) << endl;
  }
  return 0;
}
