func_code_string: #include <bits/stdc++.h>   using   namespace  std ;   using LL  =  long long ;      short int mark[500005] ;      class cmp{   public:        bool operator () (const pair<int, int> &p1, const pair<int, int> &p2){           return ((p1.first < p2.first) || (p1.first == p2.first && p1.second > p2.second)) ;       }   } ;      int main(){          ios_base::sync_with_stdio(false);       cin.tie(0);              int q ;       cin >>  q ;          int id = 0 ;       queue<int> a ;       priority_queue<pair<int, int> , vector<pair<int, int> > , cmp > b ;          for(int i = 1 ; i <= q ; i++){           int x ;           cin >> x ;              if(x == 1){               int m ;               cin >> m ;               a.push(++id) ;               b.push(make_pair(m, id)) ;           }           else if(x == 2){               while(mark[a.front()])                   a.pop() ;               cout << a.front() <<     ;               mark[a.front()] = 1 ;               a.pop() ;           }           else if(x == 3) {               while(mark[b.top().second])                   b.pop() ;               cout << b.top().second <<     ;               mark[b.top().second] = 1 ;               b.pop() ;           }       }       cout << endl ;          return 0;   }