#include <bits/stdc++.h>
using namespace std;
int n, m, k, l, i, j, a, b, d[300005], g[300005], res;
queue<pair<int, int> > q1;
int main() {
  cin >> n >> m;
  for (i = 0; i <= n; i++) {
    g[i] = -1;
  }
  for (i = 1; i <= m; i++) {
    cin >> a;
    if (a == 1) {
      cin >> a;
      q1.push({a, i});
      d[a]++;
      res++;
    } else if (a == 2) {
      cin >> a;
      res -= d[a];
      d[a] = 0;
      g[a] = i;
    } else if (a == 3) {
      cin >> a;
      while (j < a) {
        j++;
        if (d[q1.front().first] > 0 &&
            g[q1.front().first] < q1.front().second) {
          res--;
          d[q1.front().first]--;
          g[q1.front().first] = q1.front().second;
        }
        q1.pop();
      }
    }
    res = max(res, 0);
    cout << res << endl;
  }
}
