#include using namespace std; #define rep(i,a,b) for (int i=(int)(a);i<(int)(b);i++) #define all(p) p.begin(),p.end() #include using mint = atcoder::modint998244353; // ローリングハッシュの base int base = 10; vector naive(vector p){ int N = (int)p.size(); vector> ans(N, {N + 1}); rep(i, 0, 1 << (N - 1)){ vector> q = {{p[0]}}; int c = 0; rep(j, 0, N - 1){ if (i & (1 << j)){ q.push_back({}); c++; } q.back().push_back(p[j + 1]); } sort(all(q)); vector tmp; for (auto x : q) for (auto y : x) tmp.push_back(y); ans[c] = min(ans[c], tmp); } vector res(N); rep(i, 0, N){ for (auto x : ans[i]){ res[i] *= base; res[i] += x; } } return res; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T; cin >> T; while (T--){ int N; cin >> N; vector p(N); rep(i, 0, N){ cin >> p[i]; } auto ans = naive(p); rep(i, 0, N){ cout << ans[i].val() << (i + 1 == N ? "\n" : " "); } } }