See problem 18