Solution by Rick Bychowski