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
****************************************************************/