#include <bits/stdc++.h>
using namespace std;
#define fastio ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
// Function to compare two large numbers as strings by splitting
bool compare_as_large_integers(const string &a, const string &b) {
if (a.length() != b.length()) {
return a.length() > b.length();
}
return a > b; // Lexicographical comparison if lengths are equal
}
void solve() {
int n, k;
cin >> n >> k;
vector<string> arr(n);
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
while (k > 0 && arr.size() > 1) {
string max_concat = "";
int max_index = 0;
for (int j = 0; j < arr.size() - 1; j++) {
string concat = arr[j] + arr[j + 1];
if (compare_as_large_integers(concat, max_concat)) {
max_concat = concat;
max_index = j;
}
}
arr[max_index] = max_concat;
arr.erase(arr.begin() + max_index + 1);
k--;
}
// Find the maximum string in the remaining list
string ans = arr[0];
for (int i = 1; i < arr.size(); i++) {
if (compare_as_large_integers(arr[i], ans)) {
ans = arr[i];
}
}
cout << ans << endl;
}
int main() {
fastio;
int t;
cin >> t;
while (t--) {
solve();
}
return 0;
}