Why would we return a bad solution instead of raising a NoSolutionError?