problem 17
eficient 16
problem 20