C#でList<T>.Contains(T)使うより、ListにAdd等をする際に重複確認用HashSetにも同じ値をAddしてそっちにContainsかけた方が遥かに早いな
思い付きでやってみたけどListの方は線形検索でHashSetはハッシュテーブル利用してるからか