Exercise 3.73 ~ 3.74