problem 28
problem 29