import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num=sc.nextInt();//要输入的次数
String[] str;
str=new String[num];//创建String数组来存放数据
for (int i = 0; i < num; i++) {
str[i] = sc.next();//循环输入数据
}
//下面套用冒泡排序的方法
for (int k = 0; k < str.length-1; k++) {
for (int j = 0; j < str.length-1-k; j++) {//下面是循环比较两个单词的相对字母之间的顺序关系
for (int i = 0; i < str[j].length()&&i<str[j+1].length(); i++)
{
String left1=str[j];
int left0=left1.charAt(i);
String right1=str[j+1];
int right0=right1.charAt(i);
if (left0>right0) {
str[j]=right1;
str[j+1]=left1;
break;
}else if(left0<right0) {
break;
}else if(right1.subSequence(0, Math.min(right1.length(), left1.length())).equals(left1.subSequence(0, Math.min(right1.length(), left1.length())))&&right1.length()<left1.length()) {
str[j]=right1;
str[j+1]=left1;
break;
}else if(right1.subSequence(0, Math.min(right1.length(), left1.length())).equals(left1.subSequence(0, Math.min(right1.length(), left1.length())))&&right1.length()>left1.length()) {
break;
}
}
}
}
for (int h = 0; h < str.length; h++) {
System.out.println(str[h]);
}
}
}