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