Solution by Ben Davies