Completed up to problem 17