Если оставить первую часть - не проходит по 5 пункту. Если с HashSet, то пункты 3 и 5....