#include<iostream>
#include<cstring>

using namespace std;

bool jude(string s1, string s2) { //判断s1是否比s2大
    if (s1.size() < s2.size())return false;
    if (s1.size() > s2.size())return true;
    int i = 0;
    while (s1[i] == s2[i] && i < s1.size())i++;
    if (i < s2.size() && s1[i] > s2[i])return true;
    else return false;
}

int main() {
    int n;
    while (cin >> n) {
        string* s = new string[n];
        for (int i = 0; i < n; i++)cin >> s[i];
        for (int i = 0; i < n - 1; i++)
            for (int j = 0; j < n - i - 1; j++)
                if (jude(s[j], s[j + 1]))swap(s[j], s[j + 1]);
        for (int i = 0; i < n; i++)cout << s[i] << endl;
    }
    return 0;
}