Probability and Computing by Michael Mitzenmacher