Решение, может, не самое лаконичное, но тем не менее - рабочее. Подскажите, где не вижу ошибку или какую проверку еще сделать?