Новый алгоритм (предположительная сложность — O(n^4))
Задел для модульного интерфейса