Exercise 2.40 ~ 2.43
Exercise 2.43