#include <iostream>
#include<vector>
#include<array>
using namespace std;

void selectSort(vector<int> &v){
  int len = v.size();
  for(int i=0;i<len;i++){
     int min = v[i];
     int id = i;
     for(int j=i+1;j<len;j++){
         if(v[j]<min){
             min = v[j];
             id =j;
         }
     }
     if(id!=i){
         v[id]=v[i];
         v[i]=min;
     }
  }
}

void maopaoSort(vector<int> &v){
  int len = v.size();
  for(int i=0;i<len;i++){
     for(int j=0;j<len-i-1;j++){
         if(v[j]>v[j+1]){
           int temp = v[j+1];
           v[j+1]= v[j];
           v[j] = temp;
         }
     }
  }
}


void charuSort(vector<int> &v){
  int len = v.size();
  for(int i=1;i<len;i++){
     for(int j=i;j> 0;j--){
         if(v[j] < v[j-1]){
           int temp = v[j-1];
           v[j-1]= v[j];
           v[j] = temp;
         }else{
             break;
         }
     }
  }
}

void merge(vector<int> &v,int start,int end){
     int mid = (start + end ) >> 1;
     int arr[end-start+1] = {};
     int i = start;
     int j = mid +1;
     int k = 0;
     while (i <=mid && j<=end) {
         if(v[i]<=v[j]){
             arr[k++]=v[i++];
         }else{
             arr[k++]=v[j++];
         }
     }
     for(int s =i;s<=mid;s++){
         arr[k++]=v[s];
     }
     for(int s =j;s<=end;s++){
         arr[k++]=v[s];
     }
     for(int s =0;s<end-start+1;s++){
         v[start+s]= arr[s];
        // cout << s << "" << arr[s] << endl;
     }
    // cout  << endl;
}

void binGuiSort(vector<int> &v,int start,int end){
  if(start>=end){
      return;
  }
  int mid = (start + end ) >> 1;
  binGuiSort(v,start,mid);
  binGuiSort(v,mid+1,end);
  merge(v,start,end);
}

void quicklySort(vector<int> &v,int start,int end){
    if(start>=end){
        return;
    }
    int base = v[start];
    int baseIndex = start;
    int i = start;
    int j = end;
    while(i<j){
        // 右边
        while (i<j && v[j]>=base) {
            j--;
        }AA
        if(i<j){
            v[baseIndex] = v[j];
            baseIndex = j;
            i++;
        }
        // 左边
        while (i<j && v[i]<=base) {
            i++;
        }

        if(i<j){
            v[baseIndex] = v[i];
            baseIndex = i;
            j--;
        }
        v[i]=base;
    }
    quicklySort(v,start,i-1);
    quicklySort(v,i+1,end);

}

void printArr(vector<int> &v){
  int len = v.size();
  for(int s : v){
      cout << s << " ";
  }
  cout << endl;
}
void test(){
    int n;
    cin >> n;
    vector<int> v =  vector<int>(n);
    for(int i=0;i<n;i++){
        cin >> v[i];
    }
    printArr(v);
    //  selectSort(v);
    // maopaoSort(v);
    //charuSort(v);
    //binGuiSort(v,0,n-1);
    quicklySort(v,0,n-1);
    printArr(v);
    cout << "test end " << endl;
}

int main()
{
    while(true){
        test();
    }
    return 0;
}