import java.io.BufferedReader;
import java.io.FileReader;
import java.text.CollationKey;
import java.text.Collator;
import java.text.RuleBasedCollator;
import java.util.Locale;
import java.util.Vector;
class CollateApp {
public static void main(String args[]) {
if (args.length != 1) {
System.out.println("Usage: java CollateApp file");
}
Locale defaultLocale = Locale.getDefault();
RuleBasedCollator collator = (RuleBasedCollator) Collator.getInstance(defaultLocale);
Vector keyVector = new Vector();
try {
BufferedReader in = new BufferedReader(new FileReader(args[0]));
String line;
while ((line = in.readLine()) != null)
keyVector.addElement(collator.getCollationKey(line));
in.close();
} catch (Exception ex) {
System.out.println(ex);
}
CollationKey keys[] = new CollationKey[keyVector.size()];
keys = sort(keys);
for (int i = 0; i < keys.length; ++i)
System.out.println(keys[i].getSourceString());
}
static CollationKey[] sort(CollationKey keys[]) {
boolean changes = true;
while (changes) {
changes = false;
for (int i = 0; i < keys.length - 1; ++i) {
int compare = keys[i].compareTo(keys[i + 1]);
if (compare > 0) {
changes = true;
CollationKey temp = keys[i];
keys[i] = keys[i + 1];
keys[i + 1] = temp;
}
}
}
return keys;
}
}