Source: https://www2.mat.ulaval.ca/fileadmin/Cours/MAT-16139/Theorie_combinatoire.pdf