Solution by Pete Houston