Solution by Ian Goodnight