An algorithm that let