Problem 29 complete