#include <fstream>
#include <vector>
using namespace std;
vector <int> aux;
void inter(vector <int> &v, int st, int dr) {
int m = (st + dr) / 2, i = st, j = m + 1, k = st;
while (i <= m && j <= dr) {
if (v[i] <= v[j]) {
aux[k++] = v[i++];
} else {
aux[k++] = v[j++];
}
}
while (i <= m) {
aux[k++] = v[i++];
}
while (j <= dr) {
aux[k++] = v[j++];
}
for (int i = st; i <= dr; i++) {
v[i] = aux[i];
}
}
void ms(vector <int> &v, int st, int dr) {
if (st == dr) {
return;
}
int m = (st + dr) / 2;
ms(v, st, m);
ms(v, m + 1, dr);
inter(v, st, dr);
}
int main() {
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
fin >> n;
aux.resize(n);
vector <int> v(n);
for (int i = 0; i < n; i++) {
fin >> v[i];
}
fin.close();
ms(v, 0, n - 1);
for (int i = 0; i < n; i++) {
fout << v[i] << " ";
}
fout << "\n";
fout.close();
return 0;
}