for (int maxDist2 = 0; maxDist2 < maxDist - 1; ++maxDist2) { DEBUG1("Pre-heating with maxDist = " << maxDist2); deque<Move> moves = IDAStar(maxDist2); assert(moves.empty());
for (maxMoves = 0; maxMoves < maxDist; ++maxMoves) { DEBUG1("Pre-heating with maxDist = " << maxMoves); dfs(IDAStarMove()); assert(solution.empty());
deque<Move> IDAStar(int maxDist) {    DEBUG0("IDAStar" << maxDist);    maxMoves = maxDist;    moves = 0;    nodesGenerated = 1;    lastOutput = 0;    state = IDAStarState(0);    solution.clear();    if (Problem::goalNr != cacheGoalNr) {	DEBUG1("cache of wrong goal nr. Clearing.");	cacheGoalNr = Problem::goalNr;	cachedStates = HashTable<IDAStarPackedState>(MAX_STATES, LOAD_FACTOR);	if (maxDist > 0) {	    DEBUG1("Pre-heating cache.");	    for (int maxDist2 = 0; maxDist2 < maxDist - 1; ++maxDist2) {		DEBUG1("Pre-heating with maxDist = " << maxDist2);		deque<Move> moves = IDAStar(maxDist2);		assert(moves.empty());	    }	    DEBUG1("Pre-heated cache.");	}    }    timer.reset();    dfs(IDAStarMove());    totalNodesGenerated += nodesGenerated;    return solution;}