#define PROBLEM "https://judge.yosupo.jp/problem/double_ended_priority_queue"
#include"../template.h"voidsolve(){intn,q;cin>>n>>q;priority_queue<int>maxElement;priority_queue<int,vector<int>,greater<int>>minElement;unordered_map<int,int>maxRev,minRev;for(inti=0;i<n;i++){intx;cin>>x;maxElement.push(x);minElement.push(x);}autolazyRev=[&](){while(!maxElement.empty()&&maxRev[maxElement.top()]>0){maxRev[maxElement.top()]--;maxElement.pop();}while(!minElement.empty()&&minRev[minElement.top()]>0){minRev[minElement.top()]--;minElement.pop();}};while(q--){inttv;cin>>tv;if(tv==0){intx;cin>>x;maxElement.push(x);minElement.push(x);}elseif(tv==1){lazyRev();intmn=minElement.top();minElement.pop();maxRev[mn]++;cout<<mn<<'\n';}elseif(tv==2){lazyRev();intmx=maxElement.top();maxElement.pop();minRev[mx]++;cout<<mx<<'\n';}}}
#line 1 "DataStructure/Double_end_priority_queue.test.cpp"
#define PROBLEM "https://judge.yosupo.jp/problem/double_ended_priority_queue"
#line 2 "template.h"
#include<bits/stdc++.h>usingnamespacestd;#define ll long long
#define MOD (ll)(1e9+7)
#define all(x) (x).begin(),(x).end()
#define unique(x) x.erase(unique(all(x)), x.end())
#define INF32 ((1ull<<31)-1)
#define INF64 ((1ull<<63)-1)
#define inf (ll)1e18
#define vi vector<int>
#define pii pair<int, int>
#define pll pair<ll, ll>
#define fi first
#define se second
constintmod=998244353;voidsolve();intmain(){ios_base::sync_with_stdio(false);cin.tie(NULL);// cin.exceptions(cin.failbit);// int t; cin >> t;// while(t--)solve();cerr<<"\nTime run: "<<1000*clock()/CLOCKS_PER_SEC<<"ms"<<'\n';return0;}#line 4 "DataStructure/Double_end_priority_queue.test.cpp"
voidsolve(){intn,q;cin>>n>>q;priority_queue<int>maxElement;priority_queue<int,vector<int>,greater<int>>minElement;unordered_map<int,int>maxRev,minRev;for(inti=0;i<n;i++){intx;cin>>x;maxElement.push(x);minElement.push(x);}autolazyRev=[&](){while(!maxElement.empty()&&maxRev[maxElement.top()]>0){maxRev[maxElement.top()]--;maxElement.pop();}while(!minElement.empty()&&minRev[minElement.top()]>0){minRev[minElement.top()]--;minElement.pop();}};while(q--){inttv;cin>>tv;if(tv==0){intx;cin>>x;maxElement.push(x);minElement.push(x);}elseif(tv==1){lazyRev();intmn=minElement.top();minElement.pop();maxRev[mn]++;cout<<mn<<'\n';}elseif(tv==2){lazyRev();intmx=maxElement.top();maxElement.pop();minRev[mx]++;cout<<mx<<'\n';}}}