#include <iostream>
#include <vector>
auto sortedPoints(const std::vector<int> &points) {
std::vector<int> toReturn;
const int size = points.size();
int maxCount{1};
int max = points[0];
for (int i = 1; i < size; i++) {
if (points[i] > max) {
max = points[i];
maxCount = { 1 };
}
else if (points[i] == max) {
++maxCount;
}
}
for (int i = 0; i < maxCount; i++) {
toReturn.push_back(max);
}
std::vector<int> ntb;
for (int i = 0; i < size; i++) {
if (points[i] != max)
ntb.push_back(points[i]);
}
for (int i = 1; i < ntb.size(); i++) {
for (int j = 1; j < ntb.size(); j++) {
if (ntb[i] < ntb[i - 1]) {
int t = ntb[i];
ntb[i] = ntb[i - 1];
ntb[i - 1] = t;
}
}
}
for (int i = 0; i < ntb.size(); i++) {
toReturn.push_back(ntb[i]);
}
return toReturn;
}
int main(){
int D;
std::cin >> D;
for (int i = 0; i < D; i++) {
int N;
std::cin >> N;
std::vector<int> points(N);
for (auto& i : points) {
std::cin >> i;
}
auto res = sortedPoints(points);
for (auto i : res) {
std::cout << i << " ";
}
std::cout << "\n";
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKYXV0byBzb3J0ZWRQb2ludHMoY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiAmcG9pbnRzKSB7CglzdGQ6OnZlY3RvcjxpbnQ+IHRvUmV0dXJuOwoKCWNvbnN0IGludCBzaXplID0gcG9pbnRzLnNpemUoKTsKCWludCBtYXhDb3VudHsxfTsgCglpbnQgbWF4ID0gcG9pbnRzWzBdOwoKCWZvciAoaW50IGkgPSAxOyBpIDwgc2l6ZTsgaSsrKSB7CgkJaWYgKHBvaW50c1tpXSA+IG1heCkgewoJCQltYXggPSBwb2ludHNbaV07CgkJCW1heENvdW50ID0geyAxIH07CgkJfQoJCWVsc2UgaWYgKHBvaW50c1tpXSA9PSBtYXgpIHsKCQkJKyttYXhDb3VudDsKCQl9Cgl9CgoJZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhDb3VudDsgaSsrKSB7CgkJdG9SZXR1cm4ucHVzaF9iYWNrKG1heCk7Cgl9CgoJc3RkOjp2ZWN0b3I8aW50PiBudGI7IAoKCWZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CgkJaWYgKHBvaW50c1tpXSAhPSBtYXgpCgkJCW50Yi5wdXNoX2JhY2socG9pbnRzW2ldKTsKCX0KCglmb3IgKGludCBpID0gMTsgaSA8IG50Yi5zaXplKCk7IGkrKykgewoJCWZvciAoaW50IGogPSAxOyBqIDwgbnRiLnNpemUoKTsgaisrKSB7CgkJCWlmIChudGJbaV0gPCBudGJbaSAtIDFdKSB7CgkJCQlpbnQgdCA9IG50YltpXTsKCQkJCW50YltpXSA9IG50YltpIC0gMV07CgkJCQludGJbaSAtIDFdID0gdDsKCQkJfQoJCX0KCX0KCglmb3IgKGludCBpID0gMDsgaSA8IG50Yi5zaXplKCk7IGkrKykgewoJCXRvUmV0dXJuLnB1c2hfYmFjayhudGJbaV0pOwoJfQoKCXJldHVybiB0b1JldHVybjsKfQoKaW50IG1haW4oKXsKCWludCBEOwoJc3RkOjpjaW4gPj4gRDsKCglmb3IgKGludCBpID0gMDsgaSA8IEQ7IGkrKykgewoJCWludCBOOwoJCXN0ZDo6Y2luID4+IE47CgoJCXN0ZDo6dmVjdG9yPGludD4gcG9pbnRzKE4pOwoJCWZvciAoYXV0byYgaSA6IHBvaW50cykgewoJCQlzdGQ6OmNpbiA+PiBpOwoJCX0KCQkJCgkJYXV0byByZXMgPSBzb3J0ZWRQb2ludHMocG9pbnRzKTsKCgkJZm9yIChhdXRvIGkgOiByZXMpIHsKCQkJc3RkOjpjb3V0IDw8IGkgPDwgIiAiOwoJCX0KCQlzdGQ6OmNvdXQgPDwgIlxuIjsKCX0KfQoK