//johnsjava.webs.com import java.util.*; public class NameNode { public NameNode left = null; public NameNode right = null; public String name = ""; public NameNode(String n) { name = n; } public int getLength() { return name.length(); } public void add(NameNode nn) { if((left == null) && (nn.getLength() < getLength())) { left = nn; } else if((left != null) && (nn.getLength() < getLength())) { left.add(nn); } else if((right == null) && (nn.getLength() >= getLength())) { right = nn; } else if((right != null) && (nn.getLength() >= getLength())) { right.add(nn); } } public ArrayList getList() { ArrayList names = new ArrayList(); if(left != null) { names.addAll(left.getList()); } names.add(this); if(right != null) { names.addAll(right.getList()); } return names; } public String toString() { return name; } public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); NameNode top = new NameNode(keyboard.nextLine()); while(true) { System.out.println(top.getList()); top.add(new NameNode(keyboard.nextLine())); } } }