Exercise 2.30 ~ 2.32