// a528: 大數排序
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool myfunc(const string &a, const string &b) {
if (a[0]=='-' && b[0]=='-') {
if (a.length()==b.length()) {
for(int i=0 ; i<a.length() ; i++) {
if (a[i]>b[i])
return true;
else if (a[i]<b[i])
return false;
}
return true;
}
return a.length()>b.length() ;
}
else if (a[0]!='-' && b[0]!='-') {
if (a.length()==b.length()) {
for(int i=0 ; i<a.length() ; i++) {
if (a[i]>b[i])
return false;
else if (a[i]<b[i])
return true;
}
return true;
}
return a.length()<b.length() ;
}
else
return (a[0]=='-' && b[0]!='-') ;
}
int main()
{
int n;
string s;
vector<string> v;
while( cin>> n) {
v.clear();
for(int i=0 ; i<n ; i++) {
cin>> s ;
v.push_back(s);
}
sort( v.begin(), v.end(), myfunc);
for(int i=0 ; i<n ; i++)
cout<< v[i] << endl;
}
return 0;
}