Solution by Jeremy Carman