К вопросу печати пути до ближайших предков.
Путь от первой персоны к общему предку уже есть , а второй путь надо "накопить" (что не будет сложным - так как подобное мы уже делаем для восходящих линий). Потом развернуть последовательность наоборот - и получится путь от той, второй, персоны до общего предка. И выведем те две МЖМЖ последоваельности в новый, 4й (вернее 5й, после аномалий) репорт.
Как тот математик в анекдоте, который при ночном пожаре, увидев в стене шланг - понял, что "решение существует", и пошёл досыпать - так и я, поняв что решение существует, - успокоился. И пока заленился делать кучу мелкой рутинной работы по чистке кода ещё с предыдущего этапа (помните - я срочно, но "грязно" ночью вывел группировку по векам? Чтобы можно было поддерживать код - надо наводить порядок). А тут ещё свои мелочи по оформлению репорта будут.
До рабочей недели надо отдохнуть от кода. А там "станки, станки" опять...
Сделаем, конечно. Подождите, немного.