#include<cstdio>
#include<queue>
int n,m;
std::vector<std::priority_queue<int> > q;
int main()
{
	//setvbuf

	scanf("%d%d",&n,&m);
	q.resize(m);
	for(int i=0;i<n;++i)
	{
		int k,a,b;
		scanf("%d",&k);
		if(k==1)
		{
			scanf("%d%d",&a,&b);
			q[a-1].push(-b);
		}
		else
		{
			int mx=0;
			for(int i=1;i<m;++i)
				if(q[mx].top()>q[i].top())
					mx=i;
			printf("%d\n",-q[mx].top());
			q[mx].pop();
		}
	}
	return 0;
}
