Может я просто запарился с этой задачей, и свежий взгляд поможет мне увидеть какую-то элементарную ошибку?