Constraint Satisfaction Techniques for Combinatorial Problems