#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, q, acum = 0, ultimo = 0, type, a, count;
  scanf("%d%d", &n, &q);
  vector<int> timeline[300010];
  unordered_set<int> notificaciones;
  while (q--) {
    scanf("%d%d", &type, &a);
    a--;
    switch (type) {
      case 1:
        acum++;
        notificaciones.insert(acum);
        timeline[a].push_back(acum);
        break;
      case 2:
        for (int j : timeline[a]) notificaciones.erase(j);
        timeline[a].clear();
        break;
      case 3:
        a++;
        for (int i = ultimo; i <= a; i++) notificaciones.erase(i);
        if (a > ultimo) ultimo = a;
        break;
    }
    printf("%d\n", notificaciones.size());
  }
  return 0;
}
