Slow progress. This algorithm is difficult.