Exercise 2.19 ~ 2.20