Условие:
Вам будет предоставлен указатель на первый элемент односвязного списка. Список может быть представлен в виде:\nL0 → L1 → L2 →... → Ln
Измените порядок списка, чтобы он отображался в следующей форме:\nL0 → Ln → L1 → L2 → L3 → …
Не допускается изменение значения(val) в узлах списка, а также создание новых элементов типа ListNode. Разрешено изменять поле next.
Список должен состоять из элементов абстрактного класса. Должно быть описано несколько классов-наследников, каждый из которых переопределяет метод Print(), который выводит в консоль val и уникальную информацию из класса-наследника.
При выводе списков в консоль до и после изменения их порядка использовать метод Print() из элемента списка.

