Моё решение.

Длинноватое.