#include <bits/stdc++.h>
using namespace std;
vector<int> app[300333];
int main() {
  int n, q;
  cin >> n >> q;
  map<int, int> vse;
  int uzout = 0;
  int necteno = 0;
  int gen = 0;
  vector<pair<int, int> > vst;
  for (int(a) = 0; (a) < (q); (a)++) {
    int co, kolik;
    cin >> co >> kolik;
    vst.push_back(make_pair(co, kolik));
  }
  for (int a = 0; a < vst.size(); a++) {
    int co = vst[a].first;
    int kolik = vst[a].second;
    if (co == 1) {
      necteno++;
      app[kolik].push_back(gen);
      vse[gen] = kolik;
      gen++;
    } else if (co == 2) {
      while (app[kolik].size() > 0) {
        int mazu = app[kolik].back();
        app[kolik].pop_back();
        if (mazu >= uzout) {
          vse.erase(mazu);
          necteno--;
        }
      }
    } else if (co == 3) {
      while (vse.size() > 0 && vse.begin()->first < kolik) {
        vse.erase(vse.begin());
        necteno--;
      }
      uzout = max(uzout, kolik);
    }
    printf("%i\n", necteno);
  }
  return 0;
}
