completed up to problem 58