Click here to start
a breakdown of the algorithm