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)