#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]);
}
}
}