Solution by Steven Lembark
