#include <stdio.h>
#include<windows.h>
int arr[1000] = {0};
void quickSort(int pivot, int left, int right);
int main() {
int n, i;
scanf("%d", &n);
for (i=0; i<n; i++) {
scanf("%d", &arr[i]);
}
quickSort(0,1,n-1);
for (i=0; i<n; i++) {
printf("%d\n", arr[i]);
}
return 0;
}
void quickSort(int pivot, int left, int right) {
int temp, max=right;
printf("func Pivot: %d left: %d right: %d\n", pivot, left, right);
if (left==right && right==pivot) {
return;
}
while (left<right) {
printf("l, r, p: %d %d %d | %d %d %d\n", left, right, pivot, arr[left], arr[right],arr[pivot]);
Sleep(1000);
if (arr[pivot]>arr[left] && arr[pivot]>arr[right]) {
printf("1\n");
left++;
}
else if (arr[pivot]<arr[left] && arr[pivot]>arr[right]){
printf("2\n");
temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
else if (arr[pivot]<arr[left] && arr[pivot]<arr[right]) {
printf("3\n");
right--;
}
}
if (pivot<left) {
if (arr[pivot]>arr[left]) {
temp = arr[left];
arr[left] = arr[pivot];
arr[pivot] = temp;
}
else {
// temp = left;
// left = pivot;
// pivot = temp;
return;
}
}
if (left==right) {
printf("if\n");
quickSort(0,1,left);
printf("max: %d right: %d\n", max, right);
for (int k=0; k<5; k++) {
printf("%d", arr[k]);
}
if (max-right>=2) {
quickSort(right, right+1, max);
}
}
else {
quickSort(0,1,right);
printf("second2\n");
if (max-left>=2) {
quickSort(left, left+1, max);
}
}
return;
}



