private ListNode[] split(ListNode head) {
            ListNode[] lists = new ListNode[2];
            lists[0] = head;
            if (head == null || head.next == null) {
                return lists;
            }
            ListNode slow = head;
            ListNode fast = head.next.next;
            while (fast != null) {
                slow = slow.next;
                if (fast.next == null) {
                    break;
                }
                fast = fast.next.next;
            }
            lists[1] = slow.next;
            slow.next = null;
            return lists;
        }