#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;
}