func_code_string: #include <bits/stdc++.h>   using namespace std;   inline long long getint() {     long long _x = 0, _tmp = 1;     char _tc = getchar();     while ((_tc <  0  || _tc >  9 ) && _tc !=  - ) _tc = getchar();     if (_tc ==  - ) _tc = getchar(), _tmp = -1;     while (_tc >=  0  && _tc <=  9 ) _x *= 10, _x += (_tc -  0 ), _tc = getchar();     return _x * _tmp;   }   inline long long add(long long _x, long long _y,                        long long _mod = 1000000007ll) {     long long _ = _x + _y;     if (_ >= _mod) _ -= _mod;     return _;   }   inline long long sub(long long _x, long long _y,                        long long _mod = 1000000007ll) {     long long _ = _x - _y;     if (_ < 0) _ += _mod;     return _;   }   inline long long mul(long long _x, long long _y,                        long long _mod = 1000000007ll) {     long long _ = _x * _y;     if (_ >= _mod) _ %= _mod;     return _;   }   long long mypow(long long _a, long long _x, long long _mod) {     if (_x == 0) return 1ll;     long long _tmp = mypow(_a, _x / 2, _mod);     _tmp = mul(_tmp, _tmp, _mod);     if (_x & 1) _tmp = mul(_tmp, _a, _mod);     return _tmp;   }   long long mymul(long long _a, long long _x, long long _mod) {     if (_x == 0) return 0ll;     long long _tmp = mymul(_a, _x / 2, _mod);     _tmp = add(_tmp, _tmp, _mod);     if (_x & 1) _tmp = add(_tmp, _a, _mod);     return _tmp;   }   inline bool equal(double _x, double _y) {     return _x > _y - 1e-9 && _x < _y + 1e-9;   }   int __ = 1, _cs;   void build() {}   int n, q;   void init() {     n = getint();     q = getint();   }   set<pair<int, int> > S;   set<int> v[303030];   void solve() {     int cnt = 0;     while (q--) {       int cmd = getint();       int xi = getint();       if (cmd == 1) {         v[xi].insert(++cnt);         S.insert({cnt, xi});       } else if (cmd == 2) {         for (int ii : v[xi]) S.erase({ii, xi});         v[xi].clear();       } else {         while (S.size() && S.begin()->first <= xi) {           v[S.begin()->second].erase(S.begin()->first);           S.erase(S.begin());         }       }       printf( %d n , (int)S.size());     }   }   int main() {     build();     while (__--) {       init();       solve();     }   }   