Exercise 3.67 ~ 3.68