Source: https://www.ifi.uzh.ch/dam/jcr:00000000-386f-451d-ffff-ffffc34c1f93/Sample_Exam_Solutions.pdf