#include <iostream>
#include <set>
#include <cstdio>
using namespace std;

const int MAXN = 200005;\
const int INF = 1 << 30;
int n;

set<int> cities[MAXN];

void printCities() {
    for(int i = 0; i < n; i++) {
        for(set<int>::iterator it = cities[i].begin(); it != cities[i].end(); it++) {
            cout << *it << " ";
        }
        cout << endl;
    }
}

void add(int t, int w) {
    cities[t].insert(w);
}

int collect() {
    //printCities();
    int max=-INF, maxAt, curr;
    for(int i = 0; i < n; i++) {
        curr = (*cities[i].begin());
        if(curr > max) {
            max = curr;
            maxAt = i;
        }
    }
    cities[maxAt].erase(cities[maxAt].begin());
    return max;
}


int main() {
    int m;
    scanf("%d %d", &m, &n);

    int op, t, w;
    int bill;
    for(int i = 0; i < m; i++) {
        scanf("%d", &op);
        if(op == 1) {
            scanf("%d %d", &t, &w);
            add(t-1, w);
        } else {
            bill = collect();
            printf("%d\n", bill);
        }
    }

    return 0;
}
