Source: https://laure.gonnord.org/pro/teaching/MIF08_Compil1718/exam_session2_mif08_2017.pdf