import std.stdio; import std.range; import std.array; import std.string; import std.conv; import std.typecons; import std.algorithm; import std.container; void main() { auto val = readln.chomp.split.map!(to!int); int q = val.front; int k = val.back; alias TreeOne = RedBlackTree!(ulong, "a < b", true); TreeOne tree = new TreeOne(); foreach (i; 0..q) { auto wal = readln.chomp.split.map!(to!ulong); if (wal.front == 1) { auto trg = wal.back; tree.insert(trg); } else { auto l = tree.length; if (l < k) { writeln = -1; continue; } ulong left = tree.front; ulong right = tree.back + 1; while (right - left > 1) { ulong mid = (left + right) / 2; auto res = tree.lowerBound(mid + 1); auto r = res.walkLength; if (r > k) { right = mid; } else { left = mid; } } auto res = tree.lowerBound(left + 1); if (res.walkLength < k) { auto trg = tree.upperBound(left).front; writeln = trg; tree.removeKey = trg; } else { auto trg = res.back; writeln = trg; tree.removeKey = trg; } } } }