# 勉强可以通过pat检测
num_of_place = input()
# 用列表存放学生信息
stu_list = [] # 0:编号 1:分数 2:考场号 3:考场排名 4:总排名
for i in range(int(num_of_place)):
num_of_stu = input()
stu_list_i = []
for j in range(int(num_of_stu)):
# 得到准考号和分数
stu = input().split(' ')
# 添加考场号
stu.append(i+1)
# 加入列表
stu_list_i.append(stu)
# 按分数排名
stu_list_i.sort(key=lambda x: int(x[1]), reverse=True) # 按分数排名
# 增加考场排名
for k in range(len(stu_list_i)):
stu_list_i[k].append(k+1)
# 修改排名
stu_list.append(stu_list_i[0])
for k in range(1, len(stu_list_i)):
if(stu_list_i[k][1] == stu_list_i[k-1][1]):
stu_list_i[k][3] = stu_list_i[k-1][3]
stu_list.append(stu_list_i[k])
# 确保相同分数下,准考证号小的排前面,
# python的sorted函数排序是稳定的,所以这里不借助cmp函数的方法而是采取排序两次的方式,
# 具体可以参考官方文档:https://docs.python.org/zh-cn/3.7/howto/sorting.html#sortinghowto
stu_list.sort(key=lambda x: int(x[0]), reverse=False) # 先按准考证号排序
stu_list.sort(key=lambda x: int(x[1]), reverse=True) # 再按总分排序
# 增加总排名
for k in range(len(stu_list)):
stu_list[k].append(k+1)
# 修改总排名,符合同分同排名,但是占排名位置
for k in range(1, len(stu_list)):
if(stu_list[k][1] == stu_list[k-1][1]):
stu_list[k][4] = stu_list[k-1][4]
print(len(stu_list))
for k in range(len(stu_list)):
print('{} {} {} {}'.format(stu_list[k][0], stu_list[k][4], stu_list[k][2], stu_list[k][3]))