public class Competition { private List runners; private BinarySearchTree leaderboard; private RaceSimulator sim; public Competition() { runners = new List<>(); leaderboard = new BinarySearchTree<>(); sim = new RaceSimulator(); } public void newRunner(String name) { runners.append(new Athlete(name)); } public void simulate() { runners.toFirst(); while (runners.hasAccess()) { sim.simulate(runners.getContent()); leaderboard.insert(runners.getContent()); runners.next(); } leaderboard.printInOrder(); } public Athlete[] top3() { Athlete[] top = new Athlete[3]; //TODO return top; } }