Like most of the previous algorithms for this problem, the basic structure of our algorithm is recursive backtracking with case analysis. The main idea that we use is that by removing small cycles we can make the branchings more efficient. We remove the cycles that have a length of at most 6. The main core of the algorithm deals with how to remove these cycles efficiently. The idea of removing small cycles gives a more natural way of doing the case analysis for the problem.