import java.util.Scanner ;
public class Main {
public static void main
( String [ ] args
) { int t;
t = sc.nextInt ( ) ;
for ( ; 0 < t; t-- ) {
int iloscPunktow = sc.nextInt ( ) ;
int [ ] xTab = new int [ iloscPunktow] ;
int [ ] yTab = new int [ iloscPunktow] ;
for ( int i = 0 ; i < iloscPunktow; i++ ) {
int x = sc.nextInt ( ) ;
int y = sc.nextInt ( ) ;
nazwaTab[ i] = nazwa;
xTab[ i] = x;
yTab[ i] = y;
}
sortJeden( nazwaTab, xTab, yTab) ;
}
}
private static void sortJeden
( String [ ] nazwa,
int [ ] punktX,
int [ ] punktY
) { int tempX;
int tempY;
int zmiana = 1 ;
while ( zmiana > 0 ) {
zmiana = 0 ;
for ( int j = 0 ; j < nazwa.length - 1 ; j++ ) {
if ( Math .
abs ( punktX
[ j
] ) > Math .
abs ( punktX
[ j
+ 1 ] ) ) { tempX = punktX[ j + 1 ] ;
punktX[ j + 1 ] = punktX[ j] ;
punktX[ j] = tempX;
tempY = punktY[ j + 1 ] ;
punktY[ j + 1 ] = punktY[ j] ;
punktY[ j] = tempY;
tempNazwa = nazwa[ j + 1 ] ;
nazwa[ j + 1 ] = nazwa[ j] ;
nazwa[ j] = tempNazwa;
zmiana++;
}
else if ( Math .
abs ( punktX
[ j
] ) == Math .
abs ( punktX
[ j
+ 1 ] ) ) { if ( Math .
abs ( punktY
[ j
] ) > Math .
abs ( punktY
[ j
+ 1 ] ) ) { tempX = punktX[ j + 1 ] ;
punktX[ j + 1 ] = punktX[ j] ;
punktX[ j] = tempX;
tempY = punktY[ j + 1 ] ;
punktY[ j + 1 ] = punktY[ j] ;
punktY[ j] = tempY;
tempNazwa = nazwa[ j + 1 ] ;
nazwa[ j + 1 ] = nazwa[ j] ;
nazwa[ j] = tempNazwa;
zmiana++;
}
}
}
}
for ( int k = 0 ; k < nazwa.length ; k++ ) {
System .
out .
println ( nazwa
[ k
] + " " + punktX
[ k
] + " " + punktY
[ k
] ) ; }
}
private static Scanner sc
= new Scanner
( System .
in ) ; }
aW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIGludCB0OwogICAgICAgIHQgPSBzYy5uZXh0SW50KCk7CiAgICAgICAgZm9yICg7IDAgPCB0OyB0LS0pIHsKICAgICAgICAgICAgaW50IGlsb3NjUHVua3RvdyA9IHNjLm5leHRJbnQoKTsKICAgICAgICAgICAgU3RyaW5nW10gbmF6d2FUYWIgPSBuZXcgU3RyaW5nW2lsb3NjUHVua3Rvd107CiAgICAgICAgICAgIGludFtdIHhUYWIgPSBuZXcgaW50W2lsb3NjUHVua3Rvd107CiAgICAgICAgICAgIGludFtdIHlUYWIgPSBuZXcgaW50W2lsb3NjUHVua3Rvd107CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaWxvc2NQdW5rdG93OyBpKyspIHsKICAgICAgICAgICAgICAgIFN0cmluZyBuYXp3YSA9IHNjLm5leHQoKTsKICAgICAgICAgICAgICAgIGludCB4ID0gc2MubmV4dEludCgpOwogICAgICAgICAgICAgICAgaW50IHkgPSBzYy5uZXh0SW50KCk7CiAgICAgICAgICAgICAgICBuYXp3YVRhYltpXSA9IG5hendhOwogICAgICAgICAgICAgICAgeFRhYltpXSA9IHg7CiAgICAgICAgICAgICAgICB5VGFiW2ldID0geTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzb3J0SmVkZW4obmF6d2FUYWIsIHhUYWIsIHlUYWIpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHNvcnRKZWRlbihTdHJpbmdbXSBuYXp3YSwgaW50W10gcHVua3RYLCBpbnRbXSBwdW5rdFkpIHsKICAgICAgICBpbnQgdGVtcFg7CiAgICAgICAgaW50IHRlbXBZOwogICAgICAgIFN0cmluZyB0ZW1wTmF6d2E7CiAgICAgICAgaW50IHptaWFuYSA9IDE7CiAgICAgICAgd2hpbGUgKHptaWFuYSA+IDApIHsKICAgICAgICAgICAgem1pYW5hID0gMDsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBuYXp3YS5sZW5ndGggLSAxOyBqKyspIHsKICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhwdW5rdFhbal0pID4gTWF0aC5hYnMocHVua3RYW2ogKyAxXSkpIHsKICAgICAgICAgICAgICAgICAgICB0ZW1wWCA9IHB1bmt0WFtqICsgMV07CiAgICAgICAgICAgICAgICAgICAgcHVua3RYW2ogKyAxXSA9IHB1bmt0WFtqXTsKICAgICAgICAgICAgICAgICAgICBwdW5rdFhbal0gPSB0ZW1wWDsKICAgICAgICAgICAgICAgICAgICB0ZW1wWSA9IHB1bmt0WVtqICsgMV07CiAgICAgICAgICAgICAgICAgICAgcHVua3RZW2ogKyAxXSA9IHB1bmt0WVtqXTsKICAgICAgICAgICAgICAgICAgICBwdW5rdFlbal0gPSB0ZW1wWTsKICAgICAgICAgICAgICAgICAgICB0ZW1wTmF6d2EgPSBuYXp3YVtqICsgMV07CiAgICAgICAgICAgICAgICAgICAgbmF6d2FbaiArIDFdID0gbmF6d2Fbal07CiAgICAgICAgICAgICAgICAgICAgbmF6d2Fbal0gPSB0ZW1wTmF6d2E7CiAgICAgICAgICAgICAgICAgICAgem1pYW5hKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKE1hdGguYWJzKHB1bmt0WFtqXSkgPT0gTWF0aC5hYnMocHVua3RYW2ogKyAxXSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMocHVua3RZW2pdKSA+IE1hdGguYWJzKHB1bmt0WVtqICsgMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBYID0gcHVua3RYW2ogKyAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgcHVua3RYW2ogKyAxXSA9IHB1bmt0WFtqXTsKICAgICAgICAgICAgICAgICAgICAgICAgcHVua3RYW2pdID0gdGVtcFg7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBZID0gcHVua3RZW2ogKyAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgcHVua3RZW2ogKyAxXSA9IHB1bmt0WVtqXTsKICAgICAgICAgICAgICAgICAgICAgICAgcHVua3RZW2pdID0gdGVtcFk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBOYXp3YSA9IG5hendhW2ogKyAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgbmF6d2FbaiArIDFdID0gbmF6d2Fbal07CiAgICAgICAgICAgICAgICAgICAgICAgIG5hendhW2pdID0gdGVtcE5hendhOwogICAgICAgICAgICAgICAgICAgICAgICB6bWlhbmErKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgbmF6d2EubGVuZ3RoOyBrKyspIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5hendhW2tdICsgIiAiICsgcHVua3RYW2tdICsgIiAiICsgcHVua3RZW2tdKTsKICAgICAgICB9CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgU2Nhbm5lciBzYyA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7Cn0K
stdin
OAozCkEgMCAwCkMgNSA1CkIgMSAtMQoKMSAKWCAxIDEKCjIKQSAxIDEKQiAwIDAKCjIKQSAxIDEKQiAwIDAKCjIKQSAxIDEKQiAwIDAKCjIKQSAxIDEKQiAwIDAKCjEKWCAwIDAKCjkKYSAzIDMwCmIgMyA0MApjIDMgNTAKZCAyIDcKZSAyIDYKZiAyIDUKZyAxIDMwMApoIDEgMjAwIAppIDEgMTAw
8
3
A 0 0
C 5 5
B 1 -1
1
X 1 1
2
A 1 1
B 0 0
2
A 1 1
B 0 0
2
A 1 1
B 0 0
2
A 1 1
B 0 0
1
X 0 0
9
a 3 30
b 3 40
c 3 50
d 2 7
e 2 6
f 2 5
g 1 300
h 1 200
i 1 100