Solution by Juan Caballero