Конечно, есть решения этой задачи эффективней, но любопытство съест, если просто так от этого отказаться. А в чем проблема понять не могу. Как мне кажется, испробовал все варианты, программа отвечает ожидаемо. Если это не так, и вы видите исход ломающий логику программы, не говорите ответ, напишите его, пожалуйста.