An algorithm