Solutions by Aaron Sherman.