Source: https://www.apmep.fr/IMG/pdf/ALGO_2.pdf