#include <iostream>
#include <vector>
#include <queue>

struct cmp {
    bool operator()(int a, int b) {
        return a > b;
    }
};

std::priority_queue<int, std::vector<int>, cmp> que[1 << 18];
int main() {
    std::cin.tie(NULL);
    int queries, cities;
    std::cin >> queries >> cities;
    for (int i = 0;i < queries; ++i) {
        int code;
        std::cin >> code;
        if (code == 1) {
            int city, w;
            std::cin >> city >> w;
            que[city].push(w);
        }
        if (code == 2) {
            int minIndex = 1;
            for (int j = 2; j <= cities; ++j) {
                if (que[minIndex].top() < que[j].top())
                    minIndex = j;
            }
            std::cout << que[minIndex].top() << '\n';
            que[minIndex].pop();
        }
    }
    return 0;
}
