Algoritmo testado e funcionando.