up to problem 20