Exercise 2.24 ~ 2.29