#include<bits/stdc++.h>
using namespace std;
struct viewer
{
int no; //考号。
int scr; //分数。
}vr[5000];
bool cmp(viewer a,viewer b) //排序。
{
if(a.scr==b.scr)return a.no<b.no;//分数相等时小的编号在前。
else return a.scr>b.scr; //分数高的在前。
}
int main()
{
int n=0,m=0,sd=0,count=0; //人数,录取系数,录取人数线,实际录取人数。
scanf("%d%d",&n,&m);
sd=floor(m*1.5); //得出录取人数后向下取整得到所求人数线。
if(sd>n)sd=n;
for(int i=0;i<n;i++)
{
scanf("%d%d",&vr[i].no,&vr[i].scr);
}
stable_sort(vr,vr+n,cmp); //稳定排序。
for(int i=0;i<n;i++)
{
if(vr[i].scr>=vr[sd-1].scr)count++; //如果得分在分数线之上就记录为实际录取人数。
else break;
}
printf("%d %d\n",vr[sd-1].scr,count); //输出所求样式。
for(int i=0;i<count;i++)
{
printf("%d %d\n",vr[i].no,vr[i].scr);
}
return 0;
}