import java.util.*;
public class Main{
public static void main(String[] args){
String[] arr = new String[105];
Scanner scan = new Scanner(System.in);
int i,n;
while(scan.hasNextInt()){
n = scan.nextInt();
for(i=0; i<n; i++){
arr[i] = scan.next();
}
qsort(arr, 0, n-1, new BigComparator());
for(i=0; i<n; i++){
System.out.println(arr[i]);
}
}
}
public static <T> void qsort(T[] a, int start, int end, Comparator<? super T> cmp){
if(start >= end){
return;
}
int i=start, j=end;
boolean dir = true;
while(i < j){
if(cmp.compare(a[i], a[j]) > 0){
T t = a[i];
a[i] = a[j];
a[j] = t;
dir = !dir;
}
if(dir){
--j;
}else{
++i;
}
}
qsort(a, start, i-1, cmp);
qsort(a, i+1, end, cmp);
}
}
class BigComparator implements Comparator<String>{
@Override
public int compare(String a, String b){
int len = a.length();
if(len != b.length()){
return len - b.length();
}
for(int i=0; i<len; i++){
if(a.charAt(i) != b.charAt(i)){
return a.charAt(i)-b.charAt(i);
}
}
return 0;
}
}
/**************************************************************
Problem: 2202
User: admin
Language: Java
Result: Accepted
Time:1054 ms
Memory:44660 kb
****************************************************************/