public ListNode insertionSortList(ListNode head) {
            if (head == null || head.next == null) {
                return head;
            }

            ListNode result = null;

            while (head != null) {
                ListNode tmp = head;
                head = head.next;
                tmp.next = null;
                result = insert(result, tmp);
            }

            return result;
        }