avoid ambiguous configurations

generate clauses that rule out configurations for which there is a
"mirror" configuration with the same set of hints
start from full set of hints

Instead of growing the set of hints, we start from the full set of hints
and then minimize it one by one. Additinally, we use suffleing instead
of randomly picking elements from lists.