#include using namespace std; #define REP(i,n)for(int i=0;i<(n);++i) #define REP1(i,n)for(int i=1;i<=(n);++i) #define FORE(...)for(auto&&__VA_ARGS__) #define ALL(x)begin(x),end(x) #define mset(x,y)memset(x,y,sizeof x) #define pb push_back #define eb emplace_back #define V vector #define lb(x,y)(lower_bound(begin(x),end(x),y)-begin(x)) #define ub(x,y)(upper_bound(begin(x),end(x),y)-begin(x)) templateinline bool chmin(T&A,S B){return A>B?A=B,1:0;} templateinline bool chmax(T&A,S B){return A; using PLL=pair; int main(){ fastIO(); int N,Q;cin>>N>>Q; VA,B; mapmp; mapmp2; setst; int cnt=0; Vans; while(Q--){ int op;cin>>op; if(op==1){ string s; int r; cin>>s>>r; mp[s]=r; mp2[r]=s; A.pb(r); ++cnt; } if(op==2){ int x;cin>>x; N-=x; } if(op==3){ string s; int x;cin>>s>>x; N+=x; st.insert(s); B.pb(mp[s]); } if(cnt>N){ cnt=N; sort(ALL(A)); A.erase(unique(ALL(A)),end(A)); sort(ALL(B)); B.erase(unique(ALL(B)),end(B)); setss; VNA,NB; int now=0; for(int i=size(B);i--;){ if(nowt; REP(i,size(B))if(!ss.count(B[i])){ t.pb(B[i]); } REP(i,size(A))if(!ss.count(A[i])){ t.pb(A[i]); } sort(ALL(t)); t.erase(unique(ALL(t)),end(t)); REP(i,size(t))ans.pb(mp2[t[i]]); A=NA; B=NB; } } REP(i,size(ans))cout<