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