#include #include #include #include #include #include #include using namespace std; constexpr long long INF = std::numeric_limits::max(); constexpr long long NINF = std::numeric_limits::min(); long long Q, K; priority_queue f; priority_queue, greater> e; void task1() { long long v; cin >> v; if (f.size() < K) { f.push(v); return; } if (f.top() > v) { e.push(f.top()); f.pop(); f.push(v); } else { e.push(v); } } void task2() { if (f.size() < K) { cout << -1 << endl; } else { cout << f.top() << endl; f.pop(); if (!e.empty()) { f.push(e.top()); e.pop(); } } } signed main() { cin >> Q >> K; while (Q--) { long long t; cin >> t; if (t == 1) { task1(); } else { task2(); } } }