#include <vector> 
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=1000;
struct BigInteger{
    int digit[maxn];
    int length;
    BigInteger(string x);
    bool operator< (BigInteger x) ;
};
BigInteger::BigInteger(string x){
    length=0;
    for(int i=x.length()-1;i>=0;i--){
        digit[length++]=x[i]-'0';
    }

}
bool BigInteger:: operator< (BigInteger x) {
    if(length<x.length) return true;
    else if(length>x.length) return false;
    else{
        int i=length-1;
        while(digit[i]==x.digit[i] && i>0){
            i--;
        }
        return digit[i]<x.digit[i];
    }

}
vector<BigInteger> v;
void init(){
    v.clear();
}
void outp(BigInteger x){
    for(int i=x.length-1;i>=0;i--){
        cout<<x.digit[i];
    }
    cout<<endl;
}
int main() {
    int n;
    while(cin>>n){
        init();
        for(int i=0;i<n;i++){
            string x;
            cin>>x;
            v.push_back(BigInteger(x));

        }
        sort(v.begin(), v.end());
        for(int i=0;i<v.size();i++){
            outp(v[i]);
        }
    }
}