#include <iostream>
using namespace std;
class tabela
{
public:
string napis;
int x,y;
double odleglosc;
};
void wczytaj(tabela *tab, int liczby);
void quicksort(tabela *tab, int lewy, int prawy);
int t; //liczba testów
int ile; //liczba współrzędnych
int main()
{
ios_base::sync_with_stdio(0);
cin>>t;
for (int test=1; test<=t; test++) {
ios_base::sync_with_stdio(0);
cin >> ile;
tabela * tab;
tab = new tabela [ile+1];
wczytaj(tab,ile);
quicksort(tab,0,ile-1);
for (int i=0; i<ile; i++) {
cout << tab[i].napis << " " << tab[i].x << " "<< tab[i].y;
if (i!=ile-1) {
cout << endl;
}
}
if (test!=t) {
cout << endl;
}
delete [] tab;
}
return 0;
}
void wczytaj(tabela *tab, int liczby) {
int a,b;
string nazwa;
for (int i=0; i<liczby; i++) {
ios_base::sync_with_stdio(0);
cin >> nazwa >> a >> b;
tab[i].napis = nazwa;
tab[i].x = a;
tab[i].y = b;
tab[i].odleglosc = (a*a+b*b);
}
cout << endl;
}
void quicksort(tabela *tab, int lewy, int prawy) {
int v=(lewy+prawy)/2;
int i,j;
i=lewy;
j=prawy;
do
{
while(tab[i].odleglosc<tab[v].odleglosc) i++;
while(tab[j].odleglosc>tab[v].odleglosc) j--;
if(i<=j)
{
tab[ile]=tab[i];
tab[i]=tab[j];
tab[j]=tab[ile];
i++;
j--;
}
}
while(i<=j);
if(j>lewy) quicksort(tab,lewy, j);
if(i<prawy) quicksort(tab, i, prawy);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIHRhYmVsYQp7CnB1YmxpYzoKICAgIHN0cmluZyBuYXBpczsKICAgIGludCB4LHk7CiAgICBkb3VibGUgb2RsZWdsb3NjOwp9OwoKdm9pZCB3Y3p5dGFqKHRhYmVsYSAqdGFiLCBpbnQgbGljemJ5KTsKdm9pZCBxdWlja3NvcnQodGFiZWxhICp0YWIsIGludCBsZXd5LCBpbnQgcHJhd3kpOwoKCmludCB0OyAgIC8vbGljemJhIHRlc3TDs3cKaW50IGlsZTsgLy9saWN6YmEgd3Nww7PFgnJ6xJlkbnljaAoKaW50IG1haW4oKQp7Cmlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CmNpbj4+dDsKZm9yIChpbnQgdGVzdD0xOyB0ZXN0PD10OyB0ZXN0KyspIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4gPj4gaWxlOwogICAgdGFiZWxhICogdGFiOwogICAgdGFiID0gbmV3IHRhYmVsYSBbaWxlKzFdOwogICAgd2N6eXRhaih0YWIsaWxlKTsKICAgIHF1aWNrc29ydCh0YWIsMCxpbGUtMSk7CgogICAgZm9yIChpbnQgaT0wOyBpPGlsZTsgaSsrKSB7CiAgICAgICAgY291dCA8PCB0YWJbaV0ubmFwaXMgPDwgIiAiIDw8IHRhYltpXS54IDw8ICIgIjw8IHRhYltpXS55OwogICAgICAgIGlmIChpIT1pbGUtMSkgewogICAgICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICAgICAgfQogICAgfQogICAgaWYgKHRlc3QhPXQpIHsKICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICB9CiAgICBkZWxldGUgW10gdGFiOwp9CiAgICByZXR1cm4gMDsKfQoKdm9pZCB3Y3p5dGFqKHRhYmVsYSAqdGFiLCBpbnQgbGljemJ5KSB7CgogICAgaW50IGEsYjsKICAgIHN0cmluZyBuYXp3YTsKICAgICAgICBmb3IgKGludCBpPTA7IGk8bGljemJ5OyBpKyspIHsKICAgICAgICAgICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgICAgICAgICAgY2luID4+IG5hendhID4+IGEgPj4gYjsKICAgICAgICAgICAgdGFiW2ldLm5hcGlzID0gbmF6d2E7CiAgICAgICAgICAgIHRhYltpXS54ID0gYTsKICAgICAgICAgICAgdGFiW2ldLnkgPSBiOwogICAgICAgICAgICB0YWJbaV0ub2RsZWdsb3NjID0gKGEqYStiKmIpOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICB9Cgp2b2lkIHF1aWNrc29ydCh0YWJlbGEgKnRhYiwgaW50IGxld3ksIGludCBwcmF3eSkgewogICAgaW50IHY9KGxld3krcHJhd3kpLzI7CiAgICBpbnQgaSxqOwogICAgaT1sZXd5OwogICAgaj1wcmF3eTsKICAgIGRvCiAgICB7CiAgICAgICAgd2hpbGUodGFiW2ldLm9kbGVnbG9zYzx0YWJbdl0ub2RsZWdsb3NjKSBpKys7CiAgICAgICAgd2hpbGUodGFiW2pdLm9kbGVnbG9zYz50YWJbdl0ub2RsZWdsb3NjKSBqLS07CiAgICAgICAgaWYoaTw9aikKICAgICAgICB7CiAgICAgICAgICAgIHRhYltpbGVdPXRhYltpXTsKICAgICAgICAgICAgdGFiW2ldPXRhYltqXTsKICAgICAgICAgICAgdGFiW2pdPXRhYltpbGVdOwogICAgICAgICAgICBpKys7CiAgICAgICAgICAgIGotLTsKICAgICAgICB9CiAgICB9CiAgICB3aGlsZShpPD1qKTsKICAgIGlmKGo+bGV3eSkgcXVpY2tzb3J0KHRhYixsZXd5LCBqKTsKICAgIGlmKGk8cHJhd3kpIHF1aWNrc29ydCh0YWIsIGksIHByYXd5KTsKfQo=