#include <iostream>
using namespace std;
void heapify(int arr[],int n,int i){
    int root = i;
    int left = 2*i+1;
    int right = 2*i+2;
    if(left<n && arr[left]>arr[root]){
        root = left;
    }
    if(right<n && arr[right]>arr[root]){
        root = right;
    }
    if(root!=i){
        swap(arr[i],arr[root]);
        heapify(arr,n,root);
    }
}
void insertElement(int arr[],int &n,int value){
    arr[n]=value;
    int i=n;
    n++;
    while(i>0 && arr[(i-1)/2] < arr[i]){
        swap(arr[(i-1)/2],arr[i]);
        i=(i-1)/2;
    }
}
void buildMaxHeap(int arr[],int n){
    for(int i=n-1;i>=0;i--){
        heapify(arr,n,i);
    }
}
void heapSort(int arr[],int n){
    bulidMaxHeap(arr,n);
    for(int i=n-1;i>0;i--){
        swap(arr[0],arr[i]);
        heapify(arr,i,0);
    }
}
int main() {
    int size;
    cin>>size;
    int arr[size];
    int n=0;
    for(int i=0;i<size;i++){
        int value;
        cin>>value;
        insertElement(arr,n,value);
    }
    heapSort(arr,n);
    
    for(int i=0;i<n;i++){
        cout<<arr[i]<<" ";
    }
    return 0;
}