  This is a famous backtracking problem