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] = punkt;
xTab[i] = x;
yTab[i] = y;
}
sortJeden(nazwaTab, xTab, yTab);
}
}
private static void sortJeden
(String[] punkt,
int[] punktX,
int[] punktY
) { double[] odleploscPunktu = new double[punkt.length];
for (int j = 0; j < punkt.length; j++) {
if (punktX[j] == 0) {
odleploscPunktu[j] = punktY[j];
} else if (punktY[j] == 0) {
odleploscPunktu[j] = punktX[j];
} else {
odleploscPunktu
[j
] = Math.
sqrt(Math.
pow(punktX
[j
],
2) + Math.
pow(punktY
[j
],
2)); }
}
int tempX;
int tempY;
double tempOdleglosc;
int zmiana = 1;
while (zmiana > 0) {
zmiana = 0;
for (int k = 0; k < punkt.length - 1; k++) {
if (odleploscPunktu[k] > odleploscPunktu[k + 1]) {
tempOdleglosc = odleploscPunktu[k + 1];
odleploscPunktu[k + 1] = odleploscPunktu[k];
odleploscPunktu[k] = tempOdleglosc;
tempPunkt = punkt[k + 1];
punkt[k + 1] = punkt[k];
punkt[k] = tempPunkt;
tempX = punktX[k + 1];
punktX[k + 1] = punktX[k];
punktX[k] = tempX;
tempY = punktY[k + 1];
punktY[k + 1] = punktY[k];
punktY[k] = tempY;
zmiana++;
}
}
}
for (int l = 0; l < punkt.length; l++) {
System.
out.
println(punkt
[l
] + " " + punktX
[l
] + " " + punktY
[l
] + " odleglosc = " + odleploscPunktu
[l
]); }
}
private static Scanner sc
= new Scanner
(System.
in); }
aW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIGludCB0OwogICAgICAgIHQgPSBzYy5uZXh0SW50KCk7CiAgICAgICAgZm9yICg7IDAgPCB0OyB0LS0pIHsKICAgICAgICAgICAgaW50IGlsb3NjUHVua3RvdyA9IHNjLm5leHRJbnQoKTsKICAgICAgICAgICAgU3RyaW5nW10gbmF6d2FUYWIgPSBuZXcgU3RyaW5nW2lsb3NjUHVua3Rvd107CiAgICAgICAgICAgIGludFtdIHhUYWIgPSBuZXcgaW50W2lsb3NjUHVua3Rvd107CiAgICAgICAgICAgIGludFtdIHlUYWIgPSBuZXcgaW50W2lsb3NjUHVua3Rvd107CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaWxvc2NQdW5rdG93OyBpKyspIHsKICAgICAgICAgICAgICAgIFN0cmluZyBwdW5rdCA9IHNjLm5leHQoKTsKICAgICAgICAgICAgICAgIGludCB4ID0gc2MubmV4dEludCgpOwogICAgICAgICAgICAgICAgaW50IHkgPSBzYy5uZXh0SW50KCk7CiAgICAgICAgICAgICAgICBuYXp3YVRhYltpXSA9IHB1bmt0OwogICAgICAgICAgICAgICAgeFRhYltpXSA9IHg7CiAgICAgICAgICAgICAgICB5VGFiW2ldID0geTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzb3J0SmVkZW4obmF6d2FUYWIsIHhUYWIsIHlUYWIpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHNvcnRKZWRlbihTdHJpbmdbXSBwdW5rdCwgaW50W10gcHVua3RYLCBpbnRbXSBwdW5rdFkpIHsKICAgICAgICBkb3VibGVbXSBvZGxlcGxvc2NQdW5rdHUgPSBuZXcgZG91YmxlW3B1bmt0Lmxlbmd0aF07CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBwdW5rdC5sZW5ndGg7IGorKykgewogICAgICAgICAgICBpZiAocHVua3RYW2pdID09IDApIHsKICAgICAgICAgICAgICAgIG9kbGVwbG9zY1B1bmt0dVtqXSA9IHB1bmt0WVtqXTsKICAgICAgICAgICAgfSBlbHNlIGlmIChwdW5rdFlbal0gPT0gMCkgewogICAgICAgICAgICAgICAgb2RsZXBsb3NjUHVua3R1W2pdID0gcHVua3RYW2pdOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgb2RsZXBsb3NjUHVua3R1W2pdID0gTWF0aC5zcXJ0KE1hdGgucG93KHB1bmt0WFtqXSwgMikgKyBNYXRoLnBvdyhwdW5rdFlbal0sIDIpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaW50IHRlbXBYOwogICAgICAgIGludCB0ZW1wWTsKICAgICAgICBTdHJpbmcgdGVtcFB1bmt0OwogICAgICAgIGRvdWJsZSB0ZW1wT2RsZWdsb3NjOwogICAgICAgIGludCB6bWlhbmEgPSAxOwogICAgICAgIHdoaWxlICh6bWlhbmEgPiAwKSB7CiAgICAgICAgICAgIHptaWFuYSA9IDA7CiAgICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgcHVua3QubGVuZ3RoIC0gMTsgaysrKSB7CiAgICAgICAgICAgICAgICBpZiAob2RsZXBsb3NjUHVua3R1W2tdID4gb2RsZXBsb3NjUHVua3R1W2sgKyAxXSkgewogICAgICAgICAgICAgICAgICAgIHRlbXBPZGxlZ2xvc2MgPSBvZGxlcGxvc2NQdW5rdHVbayArIDFdOwogICAgICAgICAgICAgICAgICAgIG9kbGVwbG9zY1B1bmt0dVtrICsgMV0gPSBvZGxlcGxvc2NQdW5rdHVba107CiAgICAgICAgICAgICAgICAgICAgb2RsZXBsb3NjUHVua3R1W2tdID0gdGVtcE9kbGVnbG9zYzsKICAgICAgICAgICAgICAgICAgICB0ZW1wUHVua3QgPSBwdW5rdFtrICsgMV07CiAgICAgICAgICAgICAgICAgICAgcHVua3RbayArIDFdID0gcHVua3Rba107CiAgICAgICAgICAgICAgICAgICAgcHVua3Rba10gPSB0ZW1wUHVua3Q7CiAgICAgICAgICAgICAgICAgICAgdGVtcFggPSBwdW5rdFhbayArIDFdOwogICAgICAgICAgICAgICAgICAgIHB1bmt0WFtrICsgMV0gPSBwdW5rdFhba107CiAgICAgICAgICAgICAgICAgICAgcHVua3RYW2tdID0gdGVtcFg7CiAgICAgICAgICAgICAgICAgICAgdGVtcFkgPSBwdW5rdFlbayArIDFdOwogICAgICAgICAgICAgICAgICAgIHB1bmt0WVtrICsgMV0gPSBwdW5rdFlba107CiAgICAgICAgICAgICAgICAgICAgcHVua3RZW2tdID0gdGVtcFk7CiAgICAgICAgICAgICAgICAgICAgem1pYW5hKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvciAoaW50IGwgPSAwOyBsIDwgcHVua3QubGVuZ3RoOyBsKyspIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHB1bmt0W2xdICsgIiAiICsgcHVua3RYW2xdICsgIiAiICsgcHVua3RZW2xdICsgIiBvZGxlZ2xvc2MgPSAiICsgb2RsZXBsb3NjUHVua3R1W2xdKTsKICAgICAgICB9CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgU2Nhbm5lciBzYyA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7Cn0=