Решение задания
Добавил описание
Final version