Solutions by Colin Crain.