Solutions by Aaron Rowe.