Source: https://www.apmep.fr/IMG/pdf/Olymp2012-3.pdf