public static int CheckBySplit(ListNode A)
        {
            int length = ListNodeUtil.GetLength(A);

            ListNode temp    = A;
            ListNode midNode = null;
            int      mid     = length / 2;
            int      count   = 0;

            while (count < mid)
            {
                midNode = temp;
                temp    = temp.next;
                count++;
            }


            ListNode revHead = ReverseList.Reverse(temp);

            //ListNodeUtil.Print(revHead);
            temp = A;
            ListNode revHeadTemp = revHead;

            count = 0;
            int res = 1;

            while (count < mid)
            {
                if (revHeadTemp.val != temp.val)
                {
                    res = 0;
                    break;
                }
                revHeadTemp = revHeadTemp.next;
                temp        = temp.next;
                count++;
            }

            ListNode revRevHead = ReverseList.Reverse(revHead);

            //ListNodeUtil.Print(revRevHead);
            midNode.next = revRevHead;
            ListNodeUtil.Print(A);
            return(res);
        }
        public static void Invoke()
        {
            ListNode A = new ListNode();

            A.val  = 1;
            A.next = new ListNode()
            {
                val  = 3,
                next = new ListNode()
                {
                    val = 3,
                    // next = null
                    next = new ListNode()
                    {
                        val = 4,
                        //next = null
                        next = new ListNode()
                        {
                            val  = 5,
                            next = new ListNode()
                            {
                                val  = 6,
                                next = null
                            }
                        }
                    }
                }
            };

            //ListNode a = RemoveNthNodeFromListEnd.Remove(A, 2);
            //ListNode a = RotateList.Rotate(A, 0);
            //ListNode B = new ListNode() { val = 1 };
            //ListNode a = AddTwoNumbersAsLists.Add(A, B);

            // int a = PalindromeList.CheckBySplit(A);

            // ListNode a = PartitionList.Partition(A, 2);

            //ListNode a = ReverseLinkListII.ReverseRange(A, 6, 4);
            ListNode a = SUBTRACT.Cal(A);

            ListNodeUtil.Print(a);
        }