List<T>.Contains()が遅くて困ってたけど、最適化が終わったので報告。
統計とると基本、falseになる場合が99%だったのでほとんど全探索してた模様。
あとループ末端でList<>Count()はかなりキツイ。あと、Stack<>も遅いことが判明。

Time0=00:01:14.9643356
Time1=00:00:11.8496268 hash化
Time2=00:00:02.1716764 Stack<>排除 自前実装

処理のアルゴリズムはそのままで結構速くなりました。