#include <bits/stdc++.h>
using namespace std;
#define esh29() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define ll long long int
#define pb push_back
#define ep emplace_back
#define forn(i, n) for(int i = 0; i < int(n); i++)
#define form(i, n) for(int i = 1; i < int(n); i++)
#define MOD 1000000007
#define w(t) int t; cin >> t; cin.ignore(); while (t--)
const double eps = 1e-9;
const double PI = acos(-1);
#define F first
#define S second
#define all(a) (a).begin(),(a).end()
#define rall(a) (a).rbegin(),(a).rend()
#define sz(x) (int)x.size()
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<vi> vvi;
typedef vector<vl> vvl;
typedef pair<int,int> pii;
typedef pair<double, double> pdd;
typedef pair<ll, ll> pll;
typedef vector<pii> vii;
typedef vector<pll> vll;
typedef double dl;
#define dbg(args...) do {cerr << #args << " : "; faltu(args); } while(0)
#define fraction() cout.unsetf(ios::floatfield); cout.precision(10); cout.setf(ios::fixed,ios::floatfield);
ll gcd ( ll a, ll b ) { return __gcd ( a, b ); }
ll lcm ( ll a, ll b ) { return a * ( b / gcd ( a, b ) ); }
bool pp(const string &a, const string &b) {
return a.size() < b.size();
}
void solve() {
ll n, k,i,j,p;
cin >> n >> k;
vector<string> a(n);
forn(i, n) {
cin >> a[i];
}
sort(rall(a));
sort(a.rbegin(), a.rend() - 1, pp);
string ans = a[0];
for (i=1; i<=k; i++){
ans += a[i];
}
cout << ans << endl;
}
int main() {
esh29();
w(t) {
solve();
}
return 0;
}