#include<stdio.h>
#include<stdlib.h>
void merge(int arr[], int left, int mid, int right){
    int n1 = mid - left + 1;
    int n2 = right - mid;
    int *L = (int *)malloc(n1 * sizeof(int));
    int *R = (int *)malloc(n2 * sizeof(int));
    if(L == NULL || R == NULL){
        printf("Memory allocation failed\n");
        exit(1);
    }
    for(int i = 0; i < n1; i++)
        L[i] = arr[left + i];
     for(int j = 0; j < n2; j++)
        R[j] = arr[mid + 1  + j];
    int i = 0, j = 0, k = left;
    while(i < n1 && j < n2){
        if(L[i] <= R[j])
            arr[k++] = L[i++];
        else
            arr[k++] = R[j++];
    }
    while(i < n1)
        arr[k++] = L[i++];
    while(j < n2)
        arr[k++] = R[j++];
    free(L);
    free(R);
}
void mergeSort(int arr[], int left, int right){
    if(left < right){
        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\n");
        return 0;
    }
    if(n <= 0){
        printf("Invalid input\n");
        return 0;
    }
   int *ids = (int *)malloc(n * sizeof(int));
   if(ids == NULL){
        printf("Memoey allocation failed");
        return 0;
    }
    for(int i = 0; i < n; i++){
        if(scanf("%d", &ids[i]) != 1){
            printf("Invalid input");
            free(ids);
            return 0;
        }
    }
    mergeSort(ids, 0, n - 1);
    for(int i = 0; i < n; i++){
        printf("%d", ids[i]);
        if(i < n - 1)
            printf(" ");
    }
    printf("\n");
    free(ids);
    return 0;
}