import sys
class volunteer:
    def __init__(self,id,score):
        self.id = id
        self.score=score
    def cmp(self,v):
        if self.score==v.score:
            #id越小越排前
            return self.id<v.id
        else:
            return self.score>v.score
n,m=map(int,input().split())
data = sys.stdin.read().splitlines()
vs=list()
cnt=int(m*1.5)#预估的可能人数,但由于最低分可能有重分的所以要检查一下
for i in range(n):
    id,score=map(int,data[i].split())
    vs.append(volunteer(id,score))
# 方法1:使用functools.cmp_to_key将自定义比较方法转换为排序key
# from functools import cmp_to_key
# def compare(a,b):
#     # 适配cmp_to_key的比较函数(要求返回整数:1/0/-1)
#     # 对应逻辑:a应该排在b前面返回-1,a应该排在b后面返回1,相等返回0
#     if a.cmp(b):  # a符合排序要求(分数更高或同分编号更小),a排在b前面
#         return -1
#     else:  # a不符合排序要求,a排在b后面
#         return 1
# vs.sort(key=cmp_to_key(compare))
# count=0#记录与最低分重分的人数
# for i in range(cnt,n):
#     if vs[i].score==vs[cnt-1].score:
#         count+=1
# cnt+=count
# print(vs[cnt-1].score,cnt)
# for i in range(cnt):
#     print(vs[i].id,vs[i].score)

# 方法2:直接使用lambda表达式构建排序key
# 排序逻辑:先按分数降序,再按编号升序
#()内为判断标准,靠前优先级高,-号表降序,
vs.sort(key=lambda x: (-x.score,x.id))
#筛选最终入选名单,保证最低分重分者也能进去
final_volunteers = [v for v in vs if v.score>=vs[cnt-1].score]
cnt=len(final_volunteers)
print(vs[cnt-1].score,cnt)
for i in range(cnt):
    print(vs[i].id,vs[i].score)