import java.io.*;
import java.math.*;
import java.util.*;
public final class Main {
private static final class tokens extends LinkedList<String> {
super(new LinkedList<String>());
for (String token
: line.
split(" ")) add(token); }
int nextInt
() { return Integer.
parseInt(remove
()); } } try { line = cin.readLine(); }
return new tokens(line); }
private static byte[] to_bytes
(String s
) { return s.
getBytes(); } private static byte[] to_bytes
(Integer x
) { return to_bytes
(x.
toString()); } private final static byte[] space = to_bytes(" ");
private final static byte[] endl = to_bytes("\n");
final int M = 101;
for (int T = nextLine(cin).nextInt(); T > 0; --T) {
final int[] count = new int[M];
final int N = nextLine(cin).nextInt();
final tokens A = nextLine(cin);
for (int i = 0; i < N; ++i)
++count[A.nextInt()];
for (int a = 1; a < M; ++a)
if (count[a] > 0) {
byte[] s = to_bytes(a);
for (int c = count[a]; c > 0; --c) {
cout.write(s);
cout.write(space); } }
cout.write(endl); }
cout.flush(); } }
aW1wb3J0IGphdmEuaW8uKjsKaW1wb3J0IGphdmEubWF0aC4qOwppbXBvcnQgamF2YS51dGlsLio7CgpwdWJsaWMgZmluYWwgY2xhc3MgTWFpbiB7Cglwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyB0b2tlbnMgZXh0ZW5kcyBMaW5rZWRMaXN0PFN0cmluZz4gewoJCXRva2VucyhTdHJpbmcgbGluZSkgeyAKCQkJc3VwZXIobmV3IExpbmtlZExpc3Q8U3RyaW5nPigpKTsgCgkJCWZvciAoU3RyaW5nIHRva2VuOiBsaW5lLnNwbGl0KCIgIikpCgkJCQlhZGQodG9rZW4pOyB9IAoJCWludCBuZXh0SW50KCkgeyByZXR1cm4gSW50ZWdlci5wYXJzZUludChyZW1vdmUoKSk7IH0gfQoJcHJpdmF0ZSBzdGF0aWMgdG9rZW5zIG5leHRMaW5lKEJ1ZmZlcmVkUmVhZGVyIGNpbikgeyAKCQlTdHJpbmcgbGluZSA9IG51bGw7CgkJdHJ5IHsgbGluZSA9IGNpbi5yZWFkTGluZSgpOyB9CgkJY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsgZS5wcmludFN0YWNrVHJhY2UoKTsgfQoJCXJldHVybiBuZXcgdG9rZW5zKGxpbmUpOyB9Cglwcml2YXRlIHN0YXRpYyBieXRlW10gdG9fYnl0ZXMoU3RyaW5nIHMpIHsgcmV0dXJuIHMuZ2V0Qnl0ZXMoKTsgfQoJcHJpdmF0ZSBzdGF0aWMgYnl0ZVtdIHRvX2J5dGVzKEludGVnZXIgeCkgeyByZXR1cm4gdG9fYnl0ZXMoeC50b1N0cmluZygpKTsgfQoJcHJpdmF0ZSBmaW5hbCBzdGF0aWMgYnl0ZVtdIHNwYWNlID0gdG9fYnl0ZXMoIiAiKTsKCXByaXZhdGUgZmluYWwgc3RhdGljIGJ5dGVbXSBlbmRsICA9IHRvX2J5dGVzKCJcbiIpOwoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIElPRXhjZXB0aW9uIHsKCSAgICBmaW5hbCBJbnB1dFN0cmVhbVJlYWRlciBpc3RyZWFtID0gbmV3IElucHV0U3RyZWFtUmVhZGVyKFN5c3RlbS5pbik7CgkJZmluYWwgQnVmZmVyZWRSZWFkZXIgY2luID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKGlzdHJlYW0pOwoJCWZpbmFsIEJ1ZmZlcmVkT3V0cHV0U3RyZWFtIGNvdXQgPSBuZXcgQnVmZmVyZWRPdXRwdXRTdHJlYW0oU3lzdGVtLm91dCk7CgkgICAgZmluYWwgaW50IE0gPSAxMDE7CgkgICAgZm9yIChpbnQgVCA9IG5leHRMaW5lKGNpbikubmV4dEludCgpOyBUID4gMDsgLS1UKSB7CgkgICAgICAgIGZpbmFsIGludFtdIGNvdW50ID0gbmV3IGludFtNXTsKCSAgICAgICAgZmluYWwgaW50IE4gPSBuZXh0TGluZShjaW4pLm5leHRJbnQoKTsKCSAgICAgICAgZmluYWwgdG9rZW5zIEEgPSBuZXh0TGluZShjaW4pOwogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkKCSAgICAgICAgICAgICsrY291bnRbQS5uZXh0SW50KCldOwoJICAgICAgICBmb3IgKGludCBhID0gMTsgYSA8IE07ICsrYSkgCgkgICAgICAgICAgICBpZiAoY291bnRbYV0gPiAwKSB7CgkgICAgICAgICAgICAgICAgYnl0ZVtdIHMgPSB0b19ieXRlcyhhKTsKCSAgICAgICAgICAgICAgICBmb3IgKGludCBjID0gY291bnRbYV07IGMgPiAwOyAtLWMpIHsKCSAgICAgICAgICAgICAgICAgICAgY291dC53cml0ZShzKTsKCSAgICAgICAgICAgICAgICAgICAgY291dC53cml0ZShzcGFjZSk7IH0gfQoJICAgICAgIGNvdXQud3JpdGUoZW5kbCk7IH0KCQljb3V0LmZsdXNoKCk7IH0gfQo=