public static void Test()
            {
                var obj     = new Solution();
                var list    = ListNode.Gen(new int[] { 1, 2, 3, 4, 5 });
                var newHead = obj.ReverseList(list);

                Console.WriteLine("donw");
            }
            public static void Test()
            {
                var obj     = new Solution();
                var list1   = ListNode.Gen(new int[] { 1, 3, 5 });
                var list2   = ListNode.Gen(new int[] { 2, 4, 6 });
                var newHead = obj.Merge(list1, list2);

                System.Console.WriteLine("done");
            }
            public static void Test()
            {
                var obj  = new Solution();
                var list = ListNode.Gen(new int[] { 1, 2, 3, 4, 5 });

                int[] array = new int[] { 0, 1, 2, 3, 4, 5, 6, 7 };
                var   iter  = list;

                while (iter != null)
                {
                    Console.Write($"{iter.val}, ");
                    iter = iter.next;
                }
                Console.Write($"\n");
                foreach (var i in array)
                {
                    Console.WriteLine($"{obj.FindKthToTail(list, i)} for {i}");
                }
            }