#include #pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") using namespace std; using ll = long long; const ll mod = 998244353; #define fi first #define se second #define rep(i,n) for(ll i=0;i> N >> Q; vector R(100,-1); vector used(100,false); map M; vector VS; set> s1,s2; rep(i,Q){ ll q; cin >> q; if(q==1){ string s; ll r; cin >> s >> r; M[s]=VS.size(); R[VS.size()]=r; s2.insert({r,VS.size()}); VS.push_back(s); } if(q==2){ ll x; cin >> x; N-=x; } if(q==3){ string s; ll x; cin >> s >> x; used[M[s]]=true; N+=x; s2.erase({R[M[s]],M[s]}); s1.insert({R[M[s]],M[s]}); } set> s3; while(s1.size()+s2.size()>N){ if(s2.size()>0){ auto it=*s2.begin(); s3.insert(it); s2.erase(it); }else{ auto it=*s1.begin(); s3.insert(it); s1.erase(it); } } while(s3.size()>0){ auto it=*s3.begin(); cout << VS[it.se] << endl; s3.erase(it); } } return 0; }