Source: https://sites.fas.harvard.edu/~cscie22/files/sections/practice_midterm.pdf