#include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; using ld = long double; using P = pair; using Graph = vector>; int dx[] = {0, 1, 0, -1}; int dy[] = {1, 0, -1, 0}; #define INF 1000000000000000000 #define MAX 200001 #define MOD 1000000007 int main(){ int Q, K; cin >> Q >> K; vector ans; priority_queue zen; priority_queue, greater> kou; for(int i = 0; i < Q; i++){ int type; cin >> type; if(type == 1){ ll v; cin >> v; if(zen.size() < K) zen.push(v); else{ ll u = zen.top(); if(v < u){ zen.pop(); kou.push(u); zen.push(v); } else{ kou.push(v); } } } else{ if(zen.size() == K){ ll a = zen.top(); zen.pop(); ans.push_back(a); if(kou.size() != 0){ zen.push(kou.top()); kou.pop(); } } else{ ans.push_back(-1); } } } for(int i = 0; i < ans.size(); i++) cout << ans[i] << endl; }