#include<iostream>
using namespace std;
void swap(int *a, int i, int j){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
void sort012(int *a, int n)
{
int i = 0;
int j = n-1;
// first loop sorts the array with 0 at front and {1, 2} at end
while (i <j) {
while (a[i] ==0 && i<j) {
i++;
}
while ((a[j] == 1 && i<j) || (a[j] == 2 && i<j)) {
j--;
}
if(i<j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
i++;
j--;
}
}
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
cout<<endl;
cout<<"i"<<i<<endl;
cout<<"j"<<j<<endl;
// This loop sorts array of 1 & 2
if(i==j)
i+=1;
else if(i<j)
i=j;
j = n-1;
cout<<endl;
cout<<"i"<<i<<endl;
cout<<"j"<<j<<endl;
while (i <j) {
while (a[i] ==1 && i<j) {
i++;
}
while (a[j] == 2 && i<j) {
j--;
}
if(i<j)
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
i++;
j--;
}
}
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
int main()
{
//code
int t; //test cases
cin>>t;
while(t--)
{
int n;
cin>>n;
int arr[n];
for(int i=0;i<n;i++)
cin>>arr[i];
sort012(arr,n);
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIHN3YXAoaW50ICphLCBpbnQgaSwgaW50IGopewogICAgaW50IHRlbXAgPSBhW2ldOwogICAgYVtpXSA9IGFbal07CiAgICBhW2pdID0gdGVtcDsKfQogCnZvaWQgc29ydDAxMihpbnQgKmEsIGludCBuKQp7CiAgICBpbnQgaSA9IDA7CiAgICBpbnQgaiA9IG4tMTsKIAogICAgLy8gZmlyc3QgbG9vcCBzb3J0cyB0aGUgYXJyYXkgd2l0aCAwIGF0IGZyb250IGFuZCB7MSwgMn0gYXQgZW5kCiAgICB3aGlsZSAoaSA8aikgewogICAgICAgIHdoaWxlIChhW2ldID09MCAmJiBpPGopIHsKICAgICAgICAgICAgaSsrOwogICAgICAgIH0KICAgICAgICB3aGlsZSAoKGFbal0gPT0gMSAmJiBpPGopIHx8IChhW2pdID09IDIgJiYgaTxqKSkgewogICAgICAgICAgICBqLS07CiAgICAgICAgfQogICAgICAgIGlmKGk8aikKICAgICAgICB7CiAgICAgICAgCWludCB0ZW1wPWFbaV07CiAgICAgICAgCWFbaV09YVtqXTsKICAgICAgICAJYVtqXT10ZW1wOwogICAgICAgIAlpKys7CiAgICAgICAgCWotLTsKICAgICAgICB9CiAgICB9CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgY291dDw8YVtpXTw8IiAiOwogICAgY291dDw8ZW5kbDsKICAgIGNvdXQ8PGVuZGw7CiAgICBjb3V0PDwiaSI8PGk8PGVuZGw7CiAgICBjb3V0PDwiaiI8PGo8PGVuZGw7CgogICAgLy8gVGhpcyBsb29wIHNvcnRzIGFycmF5IG9mIDEgJiAyCiAgICAKICAgIGlmKGk9PWopCiAgICBpKz0xOwogICAgZWxzZSBpZihpPGopCiAgICBpPWo7CiAgICBqID0gbi0xOwogICAgY291dDw8ZW5kbDsKICAgIGNvdXQ8PCJpIjw8aTw8ZW5kbDsKICAgIGNvdXQ8PCJqIjw8ajw8ZW5kbDsKICAgIHdoaWxlIChpIDxqKSB7CiAgICAgICAgd2hpbGUgKGFbaV0gPT0xICYmIGk8aikgewogICAgICAgICAgICBpKys7CiAgICAgICAgfQogICAgICAgIHdoaWxlIChhW2pdID09IDIgJiYgaTxqKSB7CiAgICAgICAgICAgIGotLTsKICAgICAgICB9CiAgICAgICAgaWYoaTxqKQogICAgICAgIHsKICAgICAgICAJaW50IHRlbXA9YVtpXTsKICAgICAgICAJYVtpXT1hW2pdOwogICAgICAgIAlhW2pdPXRlbXA7CiAgICAgICAgCWkrKzsKICAgICAgICAJai0tOwogICAgICAgIH0KICAgIH0KICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICBjb3V0PDxhW2ldPDwiICI7CiAgICBjb3V0PDxlbmRsOwp9CgoKCmludCBtYWluKCkKIHsKCS8vY29kZQogICAgICAgIGludCB0OyAgICAgICAgICAgICAgIC8vdGVzdCBjYXNlcwogICAgICAgIGNpbj4+dDsKICAgICAgICAgd2hpbGUodC0tKQogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgbjsKICAgICAgICAgICAgIGNpbj4+bjsKICAgICAgICAgICAgIGludCBhcnJbbl07CiAgICAgICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgICAgICAgICAgY2luPj5hcnJbaV07CiAgICAgICAgICAgICBzb3J0MDEyKGFycixuKTsKICAgICAgICAgfQoJcmV0dXJuIDA7Cn0=
Mwo4NQowIDIgMiAxIDAgMCAyIDAgMSAxIDEgMCAwIDIgMCAxIDIgMSAyIDAgMiAyIDAgMCAxIDIgMSAyIDIgMSAwIDIgMSAyIDEgMCAwIDEgMCAyIDAgMiAwIDEgMCAxIDIgMCAwIDIgMSAyIDIgMiAxIDAgMiAyIDAgMiAwIDAgMSAyIDEgMCAwIDIgMiAxIDIgMCAxIDIgMiAxIDIgMiAxIDIgMSAxIDIgMSAwCjMKMCAxIDAKOAowIDAgMSAwIDAgMCAxIDI=
3
85
0 2 2 1 0 0 2 0 1 1 1 0 0 2 0 1 2 1 2 0 2 2 0 0 1 2 1 2 2 1 0 2 1 2 1 0 0 1 0 2 0 2 0 1 0 1 2 0 0 2 1 2 2 2 1 0 2 2 0 2 0 0 1 2 1 0 0 2 2 1 2 0 1 2 2 1 2 2 1 2 1 1 2 1 0
3
0 1 0
8
0 0 1 0 0 0 1 2