solution for problem 18