#include
using namespace std;
const int N = 1e4 + 5, M = 1e4 + 5;
int a[N];
int n;
void show()
{
for(int i = 1; i <= n; i++)
cout << a[i] << ' ';
}
void insertSort_1()
{
/*
for(int i = 2; i <= n; i++){
int t = a[i], j = i - 1;
while(j >= 1 && a[j] > t){ // j>=1 注意数组不要越界
a[j + 1] = a[j]; // 比t大的元素往后挪
j--;
}
a[j + 1] = t;
}
*/
a[0] = -0x3f3f3f3f; // 哨兵 足够小的数 内层循环可以不写j>=1
for(int i = 2; i <= n; i++){
int t = a[i], j = i - 1;
while(a[j] > t){
a[j + 1] = a[j]; // 比t大的元素往后挪
j--;
}
a[j + 1] = t;
}
}
void insertSort_2()
{
/*
for(int i = 2; i <= n; i++){
int j = i - 1;
while(j >= 1 && a[j] > a[j + 1]){ // j>=1 注意数组不要越界
swap(a[j], a[j + 1]); // 交换方式完成插入
j--;
}
}
*/
a[0] = -0x3f3f3f3f; // 哨兵 足够小的数 内层循环可以不写j>=1
for(int i = 2; i <= n; i++){
int j = i - 1;
while(a[j] > a[j + 1]){
swap(a[j], a[j + 1]);
j--;
}
}
}
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
cin >> a[i];
//insertSort_1();
insertSort_2();
show();
return 0;
}