#include <bits/stdc++.h>
using namespace std;
// #Sorting #Theory
void Merger(vector<int> &a, int l,int m,int r){
int ls=(m-l)+1; // size of left array
int rs=(r-(m+1))+1; // size of right array
vector<int> lar(ls); // left array
vector<int> rar(rs); // right array
for(int i=0;i<ls;i++){ // copying left array
lar[i]=a[l+i];
}
for(int i=0;i<rs;i++){ // copying right array
rar[i]=a[m+1+i];
}
int i=0; // iterator for left array
int j=0; // iterator for right array
int k=l; // iterator for main array
while(i<ls && j<rs){ // filling in the array by comparing
if(lar[i]<=rar[j]){ // until any array becomes empty
a[k]=lar[i];
i++;
}else{
a[k]=rar[j];
j++;
}
k++;
}
while(i<ls){ // if rar is emptied then add all of lar elements
a[k]=lar[i];
i++;
k++;
}
while(j<rs){ // // if rar is emptied then add all of lar elements
a[k]=rar[j];
j++;
k++;
}
}
void MergeSort(vector<int> &a,int l,int r){ // passing vector by reference
if(l<r){ // Base case: size>1 or l<r
int m=l+((r-l)/2);
MergeSort(a,l,m); // Sort all left elements
MergeSort(a,m+1,r); // Sort all right elements
Merger(a,l,m,r); // Merge the sorted arrays
}
}
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
vector<int> a(n);
for(int i=0;i<n;i++){
cin>>a[i];
}
cout<<"Original: ";
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
MergeSort(a,0,n-1);
cout<<"Sorted: ";
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
return 0;
}