Really lovely. As I was finishing, I thought, "Is the solution unique? Could I have done it in fewer rows?" but the bonus question answered at least part of that. :-)