Solution by Andre Ploeger.