solve exercise 18.18