Source: https://www.cs.fsu.edu/~lacher/courses/COP4610/ch01-08essay answers.pdf