The art of computer programming, Vol. 4A - Combinatorial algorithms, Part 1