Graph coloring and constraint satisfaction