Solution by John Barrett