#include<stdio.h>
#include<stdlib.h>
voide merge(long long arr[], lon long temp[], int left, int mid, int right){
    int i = left, j = mid + 1, k = left;
    while(i <= mid && j <= right){
        if(arr[i] <= arr[j])
            temp[k++] = arr[i++];
        else
            temp[k++] = arr[j++];
    }
    while(i <= mid)
        temp[k++] = arr[i++];
    while(j <= right)
        temp[k++] = arr[j++];
    for(i = left; i <= right; i++)
        arr[i] = temp[i];
}
void mergeSort(long long arr[], long long temp[], int left, int right[]){
    if(left >= right)
        return;
    int mid = left + (right - left) / 2;
    mergeSort(arr, temp, left, mid);
    mergeSort(arr, temp, mid + 1;right);
    merge(arr, temp, left, mid, right);
}
int main(){
    int n;
    if(scanf("%d", &n) != 1){
        printf("Invalid input");
        return 0;
    }
    if(n <= 0){
        printf("Invalid input");
        return 0;
    }
    long long *arr = (long long *)malloc(n * sizeof(long long));
    long long *temp = (long long *)malloc(n * sizeof(long long));
    if(!arr || !temp){
        printf("Memoey allocation failed");
        return 0;
    }
    for(int i = 0; i < n; i++){
        if(scanf("%lld", &arr[i]) != 1){
            printf("Invalid input");
            free(arr);
            free(temp);
            return 0;
        }
    }
    mergeSort(arr, temp, 0, n - 1);
    for(int i = 0; i < n; i++){
        if(i > 0)
            printf(" ");
        printf("%lld", arr[i]);
    }
    free(arr);
    free(temp);
    return 0;
}