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

int n,m;
priority_queue<int, vector<int>, greater<int> > q[200001];

void slowsolve()
{
    int cmd, a, b, k, mx, cr;
    //cout << n << ' ' << m << endl;
    for(int i=0; i<n; i++)
    {
        scanf("%d", &cmd);
        if(cmd==1)
        {
            scanf("%d%d", &a, &b);
            q[a].push(b);
        }
        else
        {
            mx=0;
            for(int i=1; i<=m; i++)
            {
                if(!q[i].empty())
                {
                    cr=q[i].top();
                    if(cr>mx){ k=i; mx=cr;}
                }
            }
            printf("%d\n", mx);
            q[k].pop();
        }
    }
}

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

    if(n<=5000 || m<=5)
        slowsolve();
    else slowsolve();
}
