Const SIZE = 10000 ITER = WScript.Arguments(0) If ITER < 1 Then ITER = 1 result = 0 While ITER result = test_lists ITER = ITER - 1 Wend WSCript.Echo result Function test_lists() ' create a list of integers (Li1) from 1 to SIZE Redim Li1(SIZE), Li2(SIZE), Li3(SIZE), Li4(SIZE) For A = LBound(Li1) To UBound(Li1) Li1(A) = A Next ' copy the list to Li2 (not by individual items) For A = LBound(Li1) To UBound(Li1) Li2(A) = Li1(A) Next ' remove each individual item from left side of Li2 and ' append to right side of Li3 (preserving order) For A = LBound(Li2) To UBound(Li2) Li3(A) = Li2(SIZE-A) Next ' Li2 must now be empty ' remove each individual item from right side of Li3 and ' append to right side of Li2 (reversing list) For A = LBound(Li2) To UBound(Li2) Li2(A) = Li3(A) Next ' Li3 must now be empty ' reverse Li1 in place For A = LBound(Li1) To UBound(Li1) Li4(A) = Li1(SIZE-A) Next For A = LBound(Li4) To UBound(Li4) Li1(A) = Li4(A) Next ' check that first item is now SIZE If Li1(0) <> SIZE Then test_lists = -1 Exit Function End If ' compare Li1 and Li2 for equality For i = LBound(Li1) To UBound(Li1) 'WScript.Echo "I=" & i & " Li1=" & Li1(i) & " Li2=" & Li2(i) If Li1(i) <> Li2(i) Then test_lists = 0 Exit Function End If Next test_lists = UBound(Li1) End Function