import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.TreeSet;
public class Test54 {
/*
题目描述
给定n个字符串,请对n个字符串按照字典序排列。
输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符
串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:
数据输出n行,输出结果为按照字典序排列的字符串。
输入例子:
9
cap
to
cat
card
two
too
up
boat
boot
输出例子:
boat
boot
cap
card
cat
to
too
two
up
*/
public static void main(String[] args) {
Scanner scn=new Scanner(System.in);
while(scn.hasNext()){
getString1(scn.nextInt());
}
}
public static void getString1(int n){
ArrayList<String> list=new ArrayList<String>();
Scanner scn=new Scanner(System.in);
int count=0;
while(count<n){
list.add(scn.nextLine());
count++;
}
Collections.sort(list);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
public static void getString(int n){
Scanner scn=new Scanner(System.in);
//int n=scn.nextInt();
Scanner in=new Scanner(System.in);
String[] strs=new String[n];
int count=0;
while(count<n){
strs[count++]=in.nextLine();
}
for (int i = 0; i < strs.length; i++) {
for (int j = 0; j < strs.length-i-1; j++) {
if(compareString(strs[j], strs[j+1])==1){
String temp=strs[j];
strs[j]=strs[j+1];
strs[j+1]=temp;
}
}
}
for (int i = 0; i < strs.length; i++) {
System.out.println(strs[i]);
}
}
public static int compareString(String str1,String str2){
for (int i = 0,j=0; i <str1.length()&&j<str2.length() ; i++,j++) {
if(str1.charAt(i)>str2.charAt(i)){
return 1;
}else if(str1.charAt(i)<str2.charAt(i)){
return -1;
}
}
if(str1.length()==str2.length()){
return 0;
}else if(str1.length()>str2.length()){
return 1;
}else {
return -1;
}
}
}