add backtracking, mrv, mcv, lcv