#21 solution