Solution by Adam Russell