Exercise 4.67 ~ 4.69