#include <iostream>
using namespace std;
struct node {int x[10];} a[100100], b[10][100100];
int cnt[10];
inline int f(int n, int x)
{
return (n % x) / (x / 10);
}
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; ++i)
{
cin >> a[i].x[0];
int x = 10;
for (int j = 1; j <= 9; ++j)
{
a[i].x[j] = f(a[i].x[0], x);
x *= 10;
}
}
for (int i = 1; i <= 9; ++i)
{
for (int j = 0; j <= 9; ++j) cnt[j] = 0;
for (int j = 1; j <= n; ++j)
b[a[j].x[i]][++cnt[a[j].x[i]]] = a[j];
int tp = 0;
for (int j = 0; j <= 9; ++j)
{
for (int k = 1; k <= cnt[j]; ++k)
{
a[++tp] = b[j][k];
}
}
}
for (int i = 1; i <= n; ++i) cout << a[i].x[0] << " ";
return 0;
}