#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define Rep(b, e, i) for(int i = b; i <= e; i++) #define Repr(e, b, i) for(int i = e; i >= b; i--) #define rep(n, i) Rep(0, n-1, i) #define repr(n, i) Repr(n-1, 0, i) #define all(v) (v).begin(), (v).end() #define pb(v) push_back(v) #define uniq(v) (v).erase(unique(all(v)),(v).end()) #define bitcnt(x) __builtin_popcount(x) #define fst first #define snd second #define Pqaz(T) priority_queue,greater> #define Pqza(T) priority_queue #define put(x) cout << x; #define putsp(x) cout << x << ' '; #define putbd cout << "---------------------------------------------" << endl; #define putln(x) cout << x << endl; #define debug(x) cerr << #x << "=" << x << endl; #define ENJYU std::ios::sync_with_stdio(false);std::cin.tie(0); #define yuiyui 0 typedef long long ll; typedef unsigned long long ul; typedef pair intP; typedef pair llP; typedef pair ulP; typedef complex comp; typedef vector vec; typedef vector vecll; typedef vector
    vecul; typedef vector vecd; typedef vector mat; typedef vector matll; typedef vector matul; typedef vector matd; //vector の中身を出力 template ostream &operator<<(ostream &o,const vector&v) {o<<"{";for(int i=0;i<(int)v.size();i++)o<<(i>0?", ":"")< struct BIT { int N, K; vector bit; BIT (int X) { bit = vector(X+1, 0); N = X+1; K = pow(2, (int)(log(X)/log(2))); } void add(int idx, T w) { for (int x = idx; x <= N; x += x&-x) { bit[x] += w; } } T sum(int idx) { T res = 0; for (int x = idx; x > 0; x -= x&-x) res += bit[x]; return res; } int lb(T w) { int k = K, idx = 0; while(k > 0) { if (idx + k <= N && w > bit[idx+k]) { w -= bit[idx+k]; idx += k; } k >>= 1; } return idx+1; } void chmax(int idx, T w) { for (int x = idx; x <= N; x += x&-x) { bit[x] = max(bit[x], w); } } T getmax(int idx) { T res = 0; for (int x = idx; x > 0; x -= x&-x) res = max(res, bit[x]); return res; } }; void solve(void){ int Q, K; ll q, x; scanf("%d%d\n", &Q, &K); vecll xs, qs; while(Q--) { scanf("%lld\n", &q); if (q==1) { scanf("%lld\n", &x); xs.pb(x); qs.pb(x); } else { qs.pb(-1); } } sort(all(xs)); uniq(xs); int n = xs.size(); BIT bit(MAX); map mp; rep(n, i) mp[xs[i]] = i+1; int cnt = 0; for (ll q : qs) { if (q >= 0) { bit.add(mp[q], 1); cnt++; } else { if (cnt < K) { printf("-1\n"); continue; } int idx = bit.lb(K); printf("%lld\n", xs[idx-1]); bit.add(idx, -1); cnt--; } } } int main(void) { solve(); //cout << "yui(*-v・)yui" << endl; return yuiyui; }