#include <bits/stdc++.h>
using namespace std;
long long int mod = 998244353;
long long int mul(long long int a, long long int b) {
  return ((a % mod) * (b % mod)) % mod;
}
long long int add(long long int a, long long int b) {
  return ((a % mod) + (b % mod)) % mod;
}
long long int sub(long long int a, long long int b) {
  return ((a % mod) - (b % mod) + mod) % mod;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  map<long long int, set<long long int>> m;
  long long int n, tt;
  cin >> n >> tt;
  long long int out = 0;
  queue<long long int> q;
  long long int u = 0;
  long long int g = 0;
  for (long long int i = 0; i < tt; i++) {
    long long int t, x;
    cin >> t >> x;
    if (t == 1) {
      m[x].insert(g);
      out++;
      q.push(x);
      g++;
    }
    if (t == 2) {
      out -= m[x].size();
      m[x].clear();
    }
    if (t == 3) {
      long long int y = x;
      x -= u;
      for (long long int j = 0; j < x; j++) {
        long long int p = q.front();
        q.pop();
        auto it = m[p].find(j + u);
        auto itt = m[p].begin();
        if (it != m[p].end()) {
          out--;
          m[p].erase(it);
        }
      }
      u = max(u, y);
    }
    cout << out << "\n";
  }
}
