Solution by Alex Daniel.