#include <iostream>
#include <math.h>
struct Point {
char letter = {};
int A = {};
int B = {};
double distance = 0.0;
};
//hypotenuse - przeciwprostokÄ…tna c^2 = a^2 + b^2
double hypotenuse (Point arrayPoint[], int sizeTab);
void sort (Point arrayPoint[] , int sizeTab);
void show (Point arrayPoint[] , int sizeTab);
int main()
{
int howManySteps = 0;
std::cin >> howManySteps;
do {
int size = 0;
std::cin >> size;
Point tabPoints[size];
for (int i = 0; i < size ; ++i) {
std::cin >> tabPoints[i].letter >> tabPoints[i].A >> tabPoints[i].B;
tabPoints[i].distance = hypotenuse( tabPoints , i );
}
sort( tabPoints , size );
show( tabPoints , size );
--howManySteps;
std::cout << std::endl;
} while (howManySteps > 0);
return 0;
}
double hypotenuse (Point arrayPoint[], int sizeTab) {
if (arrayPoint[sizeTab].A == 0) {
return arrayPoint[sizeTab].B;
}
else if (arrayPoint[sizeTab].B == 0) {
return arrayPoint[sizeTab].A;
}
else {
double c = sqrt( (arrayPoint[sizeTab].A * arrayPoint[sizeTab].A) + (arrayPoint[sizeTab].B * arrayPoint[sizeTab].B) );
return c;
}
}
void sort (Point arrayPoint[] , int sizeTab) {
for(int i = 0; i < sizeTab ; ++i) {
for (int j = i + 1 ; j < sizeTab ; ++j) {
Point minTemp;
if (arrayPoint[i].distance > arrayPoint[j].distance) {
minTemp.letter = arrayPoint[j].letter ;
minTemp.A = arrayPoint[j].A ;
minTemp.B = arrayPoint[j].B ;
minTemp.distance = arrayPoint[j].distance ;
arrayPoint[j].letter = arrayPoint[i].letter ;
arrayPoint[j].A = arrayPoint[i].A ;
arrayPoint[j].B = arrayPoint[i].B ;
arrayPoint[j].distance = arrayPoint[i].distance ;
arrayPoint[i].letter = minTemp.letter ;
arrayPoint[i].A = minTemp.A ;
arrayPoint[i].B = minTemp.B ;
arrayPoint[i].distance = minTemp.distance ;
}
}
}
}
void show (Point arrayPoint[] , int sizeTab) {
for (int i = 0 ; i < sizeTab ; ++i) {
std::cout << arrayPoint[i].letter << " " << arrayPoint[i].A << " " << arrayPoint[i].B << std::endl;
}
}