Source: https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-fall-2011/c9dacb06398e3504b12dc1c28c8c6a3b_MIT6_006F11_quiz2_sol.pdf