#include
#include
#define SWAP(x,y) {int t;t=x;x=y;y=t;}
void quicksort(int a[],int left,int right) {
//数组最左边的那个数为基数
int i,j,s;
s=a[left];
if(left
while(1) {
for(i=left+1; i
if(a[i]>=s) break;
}//从左往右找到第一个大于等于基数的数
for(j=right; j>=left+1; j--) {
if(a[j]
}//从右往左找到第一个小于基数的数
if(i>=j) break;
/*i>=j表示右边已经都是大于基数的数,
左边都是小于基数的数*/
SWAP(a[i],a[j]);
}
SWAP(a[left],a[j]);
quicksort(a,left,j-1);
quicksort(a,j+1,right);
}
}
int main() {
int t;//t组数据
scanf("%d",&t);
while(t--) {
int i,n;
int a[100005];
scanf("%d",&n);//每组数据的大小
for(i=0; i<n; i++) {
scanf("%d",&a[i]);
}
quicksort(a,0,n-1);
int flag=0;
for(i=0; i<n; i++) {//输出排完序后的数据
if(flag) printf(" ");
printf("%d",a[i]);
flag++;
}
printf("\n");
}
return 0;
}