#include<stdio.h>
void mergesort(long long int a[], long long int low, long long int high);
void merge(long long int a[], long long int low, long long int high, long long int mid);
void mergesort(long long int a[], long long int low, long long int high)
{
long long int mid;
if(low<high)
{
mid=(low+high)/2;
mergesort(a,low,mid);
mergesort(a,mid+1,high);
merge(a,low,high,mid);
}
}
void merge(long long int a[], long long int low, long long int high, long long int mid)
{
long long int i, j, k, c[50];
i=low;
j=mid+1;
k=low;
while((i<=mid)&&(j<=high))
{
if(a[i]<a[j])
{
c[k]=a[i];
k++;
i++;
}
else
{
c[k]=a[j];
k++;
j++;
}
}
while(i<=mid)
{
c[k]=a[i];
k++;
i++;
}
while(j<=high)
{
c[k]=a[j];
k++;
j++;
}
for(i=low;i<k;i++)
{
a[i]=c[i];
}
}
int main()
{long long int a[1000000],b,k,ni,i,j,flag1=1,flag2=1;
scanf("%lld",&b);
for(k=0;k<b;k++)
{scanf("%lld",&ni);
for(i=0;i<ni;i++)
scanf("%lld",&a[i]);
// printf("%lld\n",b);
mergesort(a,0,ni-1);
// printf("%lld\n",b);
flag2=1;
/*if((a[0]==1) && (a[1]==2) && (a[2]==3) && (ni==3))
{ printf("%lld %lld %lld",a[0],a[1],a[2]);
flag1=0;
}*/
if((a[0]==2) && (a[1]==3)&& (ni==2))
{ printf("%lld %lld",a[0],a[1]);
flag2=0;
}
if((a[0]==1))
{j=0;
while(a[j]==1)
{printf("%lld ",a[j]);
j++;
}
if((a[j]==2) && (a[j+1]==3) && (ni==(j+2)))
printf("%lld %lld",a[j],a[j+1]);
else
for(i=ni-1;i>=j;i--)
printf("%lld ",a[i]);
}
if((a[0]!=1) && (flag2==1))
for(i=ni-1;i>=0;i--)
printf("%lld ",a[i]);
printf("\n");
//printf("%lld",b);
//printf("%lld\n",k);
}
return 0;
}