#include<stdio.h>
#include<stdlib.h>
struct Node{
    int data;
    struct Node* next;
};
struct Queue{
    struct Node* front;
    struct Node*rear;
};
void initQueue(struct Queue* q){
    q->front = q->rear=NULL;
}
int isEmpty(struct Queue* q){
    return q->front==NULL;
}
void enqueue(struct Queue* q,int value){
    struct Node* newNode=(struct Node*)malloc(sizeof(struct Node));
    newNode->data=value;
    newNode->next=NULL;
    if(q->rear==NULL){
        q->front=q->rear=newNode;
    }
    else{
        q->rear->next=newNode;
        q->rear=newNode;
    }
}
int dequeue(struct Queue* q){
    if(isEmpty(q)) return -1;
    struct Node* temp=q->front;
    int value = temp->data;
    q->front=q->front->next;
    if(q->front==NULL) q->rear=NULL;
    free(temp);
    return value;
}
int main(){
    int n;
    if(scanf("%d",&n)!=1){
        printf("Invalid input");
        return 0;
    }
    if(n<1||n>100){
        printf("Invalid input");
        return 0;
    }
    int arr[n];
    struct Queue q;
    initQueue(&q);
    for(int i=0;i<n;i++){
        int speed;
        if(scanf("%d",&speed)!=1||speed<0||speed>300){
            printf("Invalid input");
            return 0;
        }
        enqueue(&q,speed);
    }
    for(int i=0;i<n;i++){
        arr[i]=deque(&q);
    }
    for(int i=0;i<n-1;i++){
        for(int j=0;j<n-i-1;j++){
            if(arr[j]>arr[j+1]){
                int temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
            }
        }
    }
    for(int i=0;i<n;i++){
        printf("%d",arr[i]);
        if(i<n-1) printf(" ");
    }
    printf("\n");
    return 0;
}