Solution by David Kayal