Source: https://largo.lip6.fr/trac/sesi-almo/chrome/site/examens/examen_almo_jan_2011_correction.pdf