// if (howManyPoint==1){
// System.out.println(list.get(0).nazwa + " " + list.get(0).x + " " + list.get(0).y);
// continue;
// }
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main
(String[] args
) {
Scanner scanner
= new Scanner
(System.
in); int howManyTries = scanner.nextInt();
scanner.nextLine();
for (int i = 0; i < howManyTries; i++) {
int howManyPoint = scanner.nextInt();
scanner.nextLine();
List<Punkt> list = new ArrayList<>();
for (int j = 0; j <howManyPoint ; j++) {
String point
= scanner.
nextLine(); String[] tableofPoints
= point.
split(" "); Punkt punkt
= new Punkt
(tableofPoints
[0],
Integer.
parseInt(tableofPoints
[1]),
Integer.
parseInt(tableofPoints
[2])); list.add(punkt);
}
list.sort(new PunktComparator());
for(Punkt number : list) {
System.
out.
println(number.
nazwa + " " + number.
x + " " + number.
y);
}
}
}
}
class Punkt {
int x;
int y;
double odleglosc;
Punkt
(String nazwa,
int x,
int y
){ this.nazwa = nazwa;
this.x = x;
this.y = y;
odleglosc
= Math.
sqrt(x
*x
+y
*y
); }
public int odleglosc() {
return (int)odleglosc;
}
}
class PunktComparator implements java.util.Comparator<Punkt> {
@Override
public int compare(Punkt a, Punkt b) {
return a.odleglosc() - b.odleglosc();
}
}
Ly8gICAgICAgICAgICBpZiAoaG93TWFueVBvaW50PT0xKXsKLy8gICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGxpc3QuZ2V0KDApLm5hendhICsgIiAiICsgbGlzdC5nZXQoMCkueCAgKyAiICIgKyBsaXN0LmdldCgwKS55KTsKLy8gICAgICAgICAgICAgICAgY29udGludWU7Ci8vICAgICAgICAgICAgfQppbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKaW1wb3J0IGphdmEudXRpbC5MaXN0OwppbXBvcnQgamF2YS51dGlsLlNjYW5uZXI7CgpwdWJsaWMgY2xhc3MgTWFpbiB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CgogICAgICAgIFNjYW5uZXIgc2Nhbm5lciA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CiAgICAgICAgaW50IGhvd01hbnlUcmllcyA9IHNjYW5uZXIubmV4dEludCgpOwogICAgICAgIHNjYW5uZXIubmV4dExpbmUoKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhvd01hbnlUcmllczsgaSsrKSB7CgogICAgICAgICAgICBpbnQgaG93TWFueVBvaW50ID0gc2Nhbm5lci5uZXh0SW50KCk7CiAgICAgICAgICAgIHNjYW5uZXIubmV4dExpbmUoKTsKICAgICAgICAgICAgTGlzdDxQdW5rdD4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8PigpOwogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8aG93TWFueVBvaW50IDsgaisrKSB7CgogICAgICAgICAgICAgICAgU3RyaW5nIHBvaW50ID0gc2Nhbm5lci5uZXh0TGluZSgpOwogICAgICAgICAgICAgICAgU3RyaW5nW10gdGFibGVvZlBvaW50cyA9IHBvaW50LnNwbGl0KCIgIik7CiAgICAgICAgICAgICAgICBQdW5rdCBwdW5rdCA9IG5ldyBQdW5rdCh0YWJsZW9mUG9pbnRzWzBdLCBJbnRlZ2VyLnBhcnNlSW50KHRhYmxlb2ZQb2ludHNbMV0pLCBJbnRlZ2VyLnBhcnNlSW50KHRhYmxlb2ZQb2ludHNbMl0pKTsKICAgICAgICAgICAgICAgIGxpc3QuYWRkKHB1bmt0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsaXN0LnNvcnQobmV3IFB1bmt0Q29tcGFyYXRvcigpKTsKCgogICAgICAgICAgICBmb3IoUHVua3QgbnVtYmVyIDogbGlzdCkgewoKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihudW1iZXIubmF6d2EgKyAiICIgKyBudW1iZXIueCArICIgIiArIG51bWJlci55KTsKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICAgICAgfQogICAgfQp9CmNsYXNzIFB1bmt0IHsKICAgIHB1YmxpYyBTdHJpbmcgbmF6d2E7CiAgICBpbnQgeDsKICAgIGludCB5OwogICAgZG91YmxlIG9kbGVnbG9zYzsKICAgIFB1bmt0KFN0cmluZyBuYXp3YSwgaW50IHgsIGludCB5KXsKICAgICAgICB0aGlzLm5hendhID0gbmF6d2E7CiAgICAgICAgdGhpcy54ID0geDsKICAgICAgICB0aGlzLnkgPSB5OwogICAgICAgIG9kbGVnbG9zYyA9IE1hdGguc3FydCh4KngreSp5KTsKICAgIH0KICAgIHB1YmxpYyBpbnQgb2RsZWdsb3NjKCkgewogICAgICAgIHJldHVybiAoaW50KW9kbGVnbG9zYzsKICAgIH0KfQpjbGFzcyBQdW5rdENvbXBhcmF0b3IgaW1wbGVtZW50cyBqYXZhLnV0aWwuQ29tcGFyYXRvcjxQdW5rdD4gewogICAgQE92ZXJyaWRlCiAgICBwdWJsaWMgaW50IGNvbXBhcmUoUHVua3QgYSwgUHVua3QgYikgewogICAgICAgIHJldHVybiBhLm9kbGVnbG9zYygpIC0gYi5vZGxlZ2xvc2MoKTsKICAgIH0KfQ==