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