Exercise 2.63 ~ 2.66