problem 18
problem 19