#include<iostream>
#include<string>
#include<math.h>
using namespace std;
class MyClass
{
string name;
int x;
int y;
public:
int myvariable;
void set(string _name, int _x, int _y)
{
name = _name;
x = _x;
y = _y;
myvariable = sqrt(x*x + y*y);
}
MyClass()
{
name = " ";
x = 0;
y = 0;
myvariable = 0;
}
void print()
{
cout << name << " " << x << " " << y << endl;
}
};
void quicksort(MyClass *tablic, int lewy, int prawy)
{
int pivot = tablic[(lewy + prawy) / 2].myvariable;
int i, j;
MyClass bufor;
i = lewy;
j = prawy;
do
{
while (tablic[i].myvariable<pivot) i++;
while (tablic[j].myvariable>pivot) j--;
if (i <= j)
{
bufor = tablic[i];
tablic[i] = tablic[j];
tablic[j] = bufor;
i++;
j--;
}
} while (i <= j);
if (j>lewy) quicksort(tablic, lewy, j);
if (i<prawy) quicksort(tablic, i, prawy);
}
int main()
{
MyClass *tablica;
string name;
int x;
int y;
int n;
int test;
cin >> test;
for (int g = 0; g < test; g++)
{
cin >> n;
tablica = new MyClass[n];
for (int i = 0; i < n; i++)
{
cin >> name;
cin >> x;
cin >> y;
tablica[i].set(name, x, y);
}
quicksort(tablica, 0, n - 1);
for (int i = 0; i < n; i++)
{
tablica[i].print();
}
}
delete [] tablica;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0cmluZz4KI2luY2x1ZGU8bWF0aC5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjbGFzcyBNeUNsYXNzCnsKCXN0cmluZyBuYW1lOwoJaW50IHg7CglpbnQgeTsKcHVibGljOgoJaW50IG15dmFyaWFibGU7Cgl2b2lkIHNldChzdHJpbmcgX25hbWUsIGludCBfeCwgaW50IF95KQoJewoJCW5hbWUgPSBfbmFtZTsKCQl4ID0gX3g7CgkJeSA9IF95OwoJCW15dmFyaWFibGUgPSBzcXJ0KHgqeCArIHkqeSk7CgoJfQoJTXlDbGFzcygpCgl7CgoJCW5hbWUgPSAiICI7CgkJeCA9IDA7CgkJeSA9IDA7CgkJbXl2YXJpYWJsZSA9IDA7CgoJfQoJdm9pZCBwcmludCgpCgl7CgkJY291dCA8PCBuYW1lIDw8ICIgIiA8PCB4IDw8ICIgIiA8PCB5IDw8IGVuZGw7Cgl9Cgp9Owp2b2lkIHF1aWNrc29ydChNeUNsYXNzICp0YWJsaWMsIGludCBsZXd5LCBpbnQgcHJhd3kpCnsKCWludCBwaXZvdCA9IHRhYmxpY1sobGV3eSArIHByYXd5KSAvIDJdLm15dmFyaWFibGU7CglpbnQgaSwgajsKCU15Q2xhc3MgYnVmb3I7CglpID0gbGV3eTsKCWogPSBwcmF3eTsKCWRvCgl7CgkJd2hpbGUgKHRhYmxpY1tpXS5teXZhcmlhYmxlPHBpdm90KSBpKys7CgkJd2hpbGUgKHRhYmxpY1tqXS5teXZhcmlhYmxlPnBpdm90KSBqLS07CgkJaWYgKGkgPD0gaikKCQl7CgkJCWJ1Zm9yID0gdGFibGljW2ldOwoJCQl0YWJsaWNbaV0gPSB0YWJsaWNbal07CgkJCXRhYmxpY1tqXSA9IGJ1Zm9yOwoJCQlpKys7CgkJCWotLTsKCQl9Cgl9IHdoaWxlIChpIDw9IGopOwoJaWYgKGo+bGV3eSkgcXVpY2tzb3J0KHRhYmxpYywgbGV3eSwgaik7CglpZiAoaTxwcmF3eSkgcXVpY2tzb3J0KHRhYmxpYywgaSwgcHJhd3kpOwp9CgppbnQgbWFpbigpCnsKCU15Q2xhc3MgKnRhYmxpY2E7CglzdHJpbmcgbmFtZTsKCWludCB4OwoJaW50IHk7CglpbnQgbjsKCWludCB0ZXN0OwoJY2luID4+IHRlc3Q7CmZvciAoaW50IGcgPSAwOyBnIDwgdGVzdDsgZysrKQp7CgljaW4gPj4gbjsKCXRhYmxpY2EgPSBuZXcgTXlDbGFzc1tuXTsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJewoJCWNpbiA+PiBuYW1lOwoJCWNpbiA+PiB4OwoJCWNpbiA+PiB5OwoJCXRhYmxpY2FbaV0uc2V0KG5hbWUsIHgsIHkpOwoKCX0KCgoJcXVpY2tzb3J0KHRhYmxpY2EsIDAsIG4gLSAxKTsKCglmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKCXsKCQl0YWJsaWNhW2ldLnByaW50KCk7Cgl9Cn0KZGVsZXRlIFtdIHRhYmxpY2E7CglyZXR1cm4gMDsKfQ==