added exercise 2.56~2.62