Exercise 4.64 ~ 4.66