Solution by Nick Logan