The Design and analysis of computer algorithms - Hopcroft, John E. (1974)