Combinatorial algorithms: generation, enumeration and search - Donald L. Kreher (CRC Press, 1999)