mrv final version

I did some check with Nor and Zach, and the performance looks
reasonable. Like Doug pointed out in his recent email, with the current
heuristic, we would not be able to solve 25x25 in general, but 16x16
should be fine, which matches our results.