Combinatorial algorithm