Exercise 2.67 ~ 2.69