//#include <stdio.h>
//
//int main()
//{
// int a[100001] = {};
// int t, n, i, j, temp;
//
// scanf("%d", &n);
// for (i=1; i<=n; i++)
// {
// scanf("%d", &t);
// a[t]=a[t]+1;
// }
//
// for (i = 0; i <= 100000; i++)
// {
// for(j=0; j<a[i]; j++)
// {
// printf("%d ", i);
// }
// }
//
// return 0;
//}
//
//#include<stdio.h>
//
//int main()
//{
// int n, i, t;
// int a[24]= {};
// scanf("%d", &n); //개수 입력받기
// for(i=1; i<=n; i++) //개수만큼 입력받기
// {
// scanf("%d", &t); //읽어서
// a[t]=a[t]+1; //들어있던 값에 1만큼 더해 다시 저장. a[t]+=1 과 같다.
// }
// for(i=1; i<=23; i++)
// {
// printf("%d ", a[i]); //1~23 번 배열에 저장되어있는 값 출력하기
// }
//
//}
//#include <stdio.h>
//int a[10001];
//int n, i, j, temp, min;
//int main()
//{
// scanf("%d", &n);
// for (i = 1; i <= n; i++)
// scanf("%d", &a[i]);
// for (i=1; i<n; i++)
// {
// min=i;
// for (j=i+1; j<=n; j++)
// {
// if(a[min]>a[j])
// {
// min=j;
// }
// }
// temp = a[i];
// a[i] = a[min];
// a[min] = temp;
// }
// for (i=1; i<=n; i++)
// printf("%d\n", a[i]);
// return 0;
//}
#include <stdio.h>
int a[10001];
int n, i, j, temp, key;
int main()
{
scanf("%d", &n);
for (i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (i=2; i<=n; i++)
{
key=a[i];
for(j=i-1; a[j]>key; j--)
{
a[j+1]=a[j];
}
a[j+1]=key;
}
for (i=1; i<=n; i++)
printf("%d\n", a[i]);
return 0;
}