Exercise 4.71 ~ 4.72