Решение с тестами