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