Description:
Dr lee cuts a string S into N pieces,s[1],…,s[N].
Now, Dr lee gives you these N sub-strings: s[1],…s[N]. There might be several possibilities that the string S could be. For example, if Dr. lee gives you three sub-strings {“a”,“ab”,”ac”}, the string S could be “aabac”,”aacab”,”abaac”,…
Your task is to output the lexicographically smallest S.
Input:
The first line of the input is a positive integer T. T is the number of the test cases followed.
The first line of each test case is a positive integer N (1 <=N<= 8 ) which represents the number of sub-strings. After that, N lines followed. The i-th line is the i-th sub-string s[i]. Assume that the length of each sub-string is positive and less than 100.
Output:
The output of each test is the lexicographically smallest S. No redundant spaces are needed.
Sample
Input:
1
3
a
ab
ac
Output:
aabac
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=50000+10;
string s[N];
int cmp(string a,string b)
{
return a+b < b+a;
}
int main()
{
int a;
cin>>a;
for(int k=0;k < a;k++){
int n;
cin>>n;
for(int i=0;i < n;i++)
cin>>s[i];
sort(s,s+n,cmp);
for(int i=0;i < n;i++)
cout << s[i];
cout << endl;
}
return 0;
}