Programs and Exercises from chapter 21