Source: http://www.fast.u-psud.fr/~moisy/teaching/oip2010.pdf