//https://online.codingblocks.com/app/player/93452/content/153370/5316/code-challenge
//https://online.codingblocks.com/app/player/93452/content/153370/5316/code-challenge
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
bool compareDigits(int a, int b)
{
//cout << a << " , " << b << " received" << endl;
string A = to_string(a);
string B = to_string(b);
int i = 0;
while(i < A.size() && i < B.size())
{
if(A[i] != B[i]) return (A[i] < B[i]); //if character mismatch found
else
{
i++;
}
}
if(A.size() == B.size()) return (A.size() == B.size());
else
{
if(A.size() < B.size())
{
i = A.size();
if(B[i] != B[i-1])
return B[i] > B[i-1];
else
{
//cout << B + A << " vs " << A + B << endl;
return (B + A) > (A + B) ;
}
}
else
{
i = B.size();
if(A[i] != A[i-1])
return A[i] < A[i-1];
else
{
//cout << A + B << " vs " << B + A << endl;
return (A + B) < (B + A) ;
}
}
}
}
class solution
{
public:
void getInput()
{
int N;
cin >> N;
vector<int> A;
getArray(A, N);
sort(A.begin(), A.end(), compareDigits);//sorting in ascending order
for(int i = N - 1 ; i >= 0 ; i--)//printing in descending order
{
cout << A[i];
}
cout << endl;
}
void getArray(vector<int> &A, int N)
{
for(int i = 0 ; i < N ; i++)
{
int val;
cin >> val;
A.push_back(val);
}
}
};
int main()
{
int t;
cin >> t;
while(t--)
{
solution Solution;
Solution.getInput();
}
return 0;
}