https://class.coursera.org/algs4partI-002/assignment/view?assignment_id=1