Este es el que funciona, de momento. No está probado con muchos valores de entradas. Falta probar eso.