Exercise 2.46 ~ 2.47