#include <iostream>
using namespace std;
int n;
struct node{
char s[210];
int len,sc[110];
}a[5001];
int cmp (const void *x,const void *y){
node *p=(node *)x;
node *q=(node *)y;
if (p->len!=q->len)return q->len-p->len;
for (int i=1;i<=p->len;i++)
if (p->sc[i]!=q->sc[i])return q->sc[i]-p->sc[i];
return q->sc-p->sc;
}
void init (){
cin>>n;
int i;
char ch;
for (i=1;i<=n;i++){
scanf ("%s\n",a[i].s);
scanf ("%c",&ch);
a[i].len=0;
while (ch=='0'){
scanf ("%c",&ch);
}
while (ch>='0'&&ch<='9'){
a[i].len++;
a[i].sc[a[i].len]=ch-'0';
scanf ("%c",&ch);
}
if (a[i].len==0){a[i].sc[++a[i].len]=0;}
}
qsort (a+1,n,sizeof (a[1]),cmp);
}
void out (){
int i;
for (i=1;i<=n;i++)
printf ("%s\n",a[i].s);
}
int main (){
init ();
out ();
return 0;
}