Source: http://quentin.mrgt.fr/files/teaching/agregation-2012/tp1-info.pdf