#include<iostream>
#include<vector>
#include<queue>
#include<cmath>
using namespace std;
// ZA koito ne nz znae VednYj

long n,m,i,j,p;
long node,weight;

priority_queue<long> a[5000];
void check(priority_queue<long> a)
{
    while(!a.empty()){cout<<a.top()<<' ';a.pop();}
}
void gather()
{
return ;
}

int main()
{cin>>n>>m;
for(i=0;i<n;i++)
{cin>>p;
if(p==2){int max1=0,maxind;
for(int j=1;j<=m;j++)
{//cout<<a[i].top()<<' '<<i<<endl;
    //check(a[i]);
    if(fabs(a[j].top())>max1){max1=fabs(a[j].top());maxind=j;}
}
a[maxind].pop();
//check(a[maxind]);
cout<<max1<<endl;
}
else cin>>node>>weight;
a[node].push(-weight);

}

return 0;
}
