Exercise 5.17 ~ 5.18