Solution by Matthew Neleigh