import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class PAT_1025 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int epoch = scanner.nextInt();
scanner.nextLine();
int a = 0;
ArrayList<Student> llList = new ArrayList<>();
while(epoch!=0) {
a = a+1;
int num = scanner.nextInt();
scanner.nextLine();
ArrayList<Student> list = new ArrayList<>();
//将每个对象保存起来
for (int i = 0; i < num; i++) {
String str = scanner.nextLine().trim();
String []string = str.split("\\ ");
Student student = new Student(Long.parseLong(string[0]), Integer.parseInt(string[1]), 0, a, 0);
list.add(student);
}
Collections.sort(list);
//对每个对象进行排序, 并添加场内名次
for (int i = 0; i < list.size(); i++) {
if(i==0)
list.get(i).setChangneimingci(1);
else if(list.get(i).getFenshu()==list.get(i-1).getFenshu())
list.get(i).setChangneimingci(list.get(i-1).getChangneimingci());
else
list.get(i).setChangneimingci(i+1);
}
//将每个对象添加进大的list里面
for(Student student:list)
llList.add(student);
epoch--;
}
Collections.sort(llList);
for (int i = 0; i < llList.size(); i++) {
if(i==0)
llList.get(i).setQuanbumingci(1);
else if(llList.get(i).getFenshu()==llList.get(i-1).getFenshu())
llList.get(i).setQuanbumingci(llList.get(i-1).getQuanbumingci());
else
llList.get(i).setQuanbumingci(i+1);
}
for(Student student:llList)
System.out.println(student.getKaohao()+" "+
student.getQuanbumingci()+" "+student.getKaochenghao()+" "+student.getChangneimingci());
}
}
class Student implements Comparable<Student>{
long kaohao;
int fenshu;
int quanbumingci;
int kaochenghao;
int changneimingci;
public Student(long kaohao, int fenshu, int quanbumingci, int kaochenghao, int changneimingci) {
super();
this.kaohao = kaohao;
this.fenshu = fenshu;
this.quanbumingci = quanbumingci;
this.kaochenghao = kaochenghao;
this.changneimingci = changneimingci;
}
public long getKaohao() {
return kaohao;
}
public void setKaohao(long kaohao) {
this.kaohao = kaohao;
}
public int getFenshu() {
return fenshu;
}
public void setFenshu(int fenshu) {
this.fenshu = fenshu;
}
public int getQuanbumingci() {
return quanbumingci;
}
public void setQuanbumingci(int quanbumingci) {
this.quanbumingci = quanbumingci;
}
public int getKaochenghao() {
return kaochenghao;
}
public void setKaochenghao(int kaochenghao) {
this.kaochenghao = kaochenghao;
}
public int getChangneimingci() {
return changneimingci;
}
public void setChangneimingci(int changneimingci) {
this.changneimingci = changneimingci;
}
@Override
public int compareTo(Student o1) {
int i = this.getFenshu() - o1.getFenshu();//先按照分数排序
if(i == 0){
if (this.getKaohao() - o1.getKaohao()>0) {
return 1;
}
else
return -1;//如果分数相等了再用考号进行排序
}
return -i;
}
}