#24 solution
#27 solution
#31 solution
#33 solution