#include<stdio.h>
void merge(int arr[],int left,int mid,int right)
{
    int i=left,j=mid+1,k=0;
    int temp[right-left+1];
    
    while(i<=mid&&j<=right)
    {
        if(arr[i]<=arr[j])
        {
            temp[k++]=arr[j++];
        }
        else{
            temp[k++]=arr[j++];
        }
    }
    
    while(i<=mid)
    {
        temp[k++]=arr[i++];
        
    }
    while(j<=right)
    {
        temp[k++]=arr[j++];
    }
    for(i=left,k=0;i<=right;i++,k++)
    {
        arr[i]=temp[k];
    }
}
void mergesort(int arr[],int left,int right)
{
    if(left<right)
    {
        int mid=(left+right)/2;
        mergesort(arr,left,mid);
        mergesort(arr,mid+1,right);
        merge(arr,left,mid,right);
    }
}
int issorted(int arr[],int n)
{
    for(int i=0;i<n;i++)
    {
        if(arr[i]>arr[i+1])
        {
            return 0;
        }
        return 1;
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    
    if(n<1||n>100)
    {
        printf("Invalid input");
        return 0;
    }
    
    int arr[n];
    for(int i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
        if(arr[i]<0||arr[i]>100)
        {
            printf("Invalid input");
            return 0;
        }
    }
    
    if(issorted(arr,0,n-1))
    {
        printf("List is already sorted");
        return 0;
    }
    
    mergesort(arr,0,n-1);
    
    for(int i=0;i<n;i++)
    {
        printf("%d",arr[i]);
        if(i<n-1)
        {
            printf(" ");
        }
    }
    
    return 0;
}