・出現パターンをノードに多分木を作って、循環が見つかったらそれをリーフとし、
 そこからルート向かって集めたノード列が答えになる。

・出現パターンはデータベース化しておいて、ノードを作る際のチェックに使う。
・ノードを作る際、既出で、かつ、自身よりも浅い深度で出現したパターンなら、
 それ以上深く探索するのは無駄。したがって無効ノードになる。
・すべての子ノードが無効ノードになったら、親ノードも無効ノードになる。

・子ノード生成深度を1づつ深くしてゆくと、どこかでリーフが見つかるか、
 ルートノードが無効ノードになるのでそこで探索終了。
・ルートが無効になったときが、すなわちimpossible。