Skip to content

Instantly share code, notes, and snippets.

@Alfex4936
Last active September 26, 2020 02:43
Show Gist options
  • Save Alfex4936/0824902df4998fec096edc5f9392ae95 to your computer and use it in GitHub Desktop.
Save Alfex4936/0824902df4998fec096edc5f9392ae95 to your computer and use it in GitHub Desktop.
def goSort(array):
def insertSort(array, begin=0, end=None):
if end == None:
end = len(array)
for i in range(begin, end):
j = i
toChange = array[i]
while j != begin and array[j - 1] > toChange:
array[j] = array[j - 1]
j -= 1
array[j] = toChange
return array
def siftDown(array, lo, hi, first):
root = lo
while True:
child = 2 * root + 1
if child >= hi:
break
if child + 1 < hi and array[first + child] < array[first + child + 1]:
child += 1
if array[first + root] >= array[first + child]:
return
array[first + root], array[first + child] = (
array[first + child],
array[first + root],
)
root = child
def heapSort(array, a, b):
first = a
lo = 0
hi = b - a
# Build heap with greatest element at top.
for i in range((hi - 1) // 2, -1, -1):
siftDown(array, i, hi, first)
# Pop elements, largest first, into end of data.
for i in range(hi - 1, -1, -1):
array[first], array[first + i] = array[first + i], array[first]
siftDown(array, lo, i, first)
def unsigned(n):
return n & 0xFFFFFFFF
def medianOfThree(array, m1, m0, m2):
# sort 3 elements
if array[m1] < array[m0]:
array[m1], array[m0] = array[m0], array[m1]
# data[m0] <= data[m1]
if array[m2] < array[m1]:
array[m2], array[m1] = array[m1], array[m2]
# data[m0] <= data[m2] && data[m1] < data[m2]
if array[m1] < array[m0]:
array[m1], array[m0] = array[m0], array[m1]
# now data[m0] <= data[m1] <= data[m2]
def doPivot(array, lo, hi):
m = int(unsigned(lo + hi) >> 1)
if hi - lo > 40:
# Tukey's ``Ninther,'' median of three medians of three.
s = (hi - lo) // 8
medianOfThree(array, lo, lo + s, lo + 2 * s)
medianOfThree(array, m, m - s, m + s)
medianOfThree(array, hi - 1, hi - 1 - s, hi - 1 - 2 * s)
medianOfThree(array, lo, m, hi - 1)
pivot = lo
a, c = lo + 1, hi - 1
while a < c and array[a] < array[pivot]:
a += 1
b = a
while True:
while b < c and array[pivot] >= array[b]:
b += 1
while b < c and array[pivot] < array[c - 1]:
c -= 1
if b >= c:
break
array[b], array[c - 1] = array[c - 1], array[b]
b += 1
c -= 1
protect = hi - c < 5
if not protect and hi - c < (hi - lo) // 4:
dups = 0
if array[pivot] >= array[hi - 1]:
array[c], array[hi - 1] = array[hi - 1], array[c]
c += 1
dups += 1
if array[b - 1] >= array[pivot]:
b -= 1
dups += 1
if array[m] >= array[pivot]:
array[m], array[b - 1] = array[b - 1], array[m]
b -= 1
dups += 1
protect = dups > 1
if protect:
while True:
while a < b and array[b - 1] >= array[pivot]:
b -= 1
while a < b and array[a] < array[pivot]:
a += 1
if a >= b:
break
array[a], array[b - 1] = array[b - 1], array[a]
a += 1
b -= 1
array[pivot], array[b - 1] = array[b - 1], array[pivot]
return b - 1, c
def quickSort(array, a, b, maxDepth):
while b - a > 12: # Use ShellSort for slices <= 12 elements
if maxDepth == 0:
return heapSort(array, a, b)
maxDepth -= 1
mlo, mhi = doPivot(array, a, b)
# Avoiding recursion on the larger subproblem guarantees
# a stack depth of at most lg(b-a).
if mlo - a < b - mhi:
quickSort(array, a, mlo, maxDepth)
a = mhi # i.e., quickSort(array, mhi, b)
else:
quickSort(array, mhi, b, maxDepth)
b = mlo # i.e., quickSort(array, a, mlo)
if b - a > 1:
# Do ShellSort pass with gap 6
# It could be written in this simplified form cause b-a <= 12
for i in range(a + 6, b):
if array[i] < array[i - 6]:
array[i], array[i - 6] = array[i - 6], array[i]
return insertSort(array, a, b)
maxDepth = 2 * (len(array).bit_length() - 1)
quickSort(array, 0, len(array), maxDepth)
return array
if __name__ == "__main__":
from time import time
from random import randint
array1 = [randint(-5000, 5000) for i in range(5000)]
array = array1
tot = 0.0
print("Array Before:", array)
t0 = time()
result = goSort(array)
t1 = time()
print("Array After:", result)
print(f"goSort() result : {list(sorted(array)) == result}")
tot += t1 - t0
print(f"def: goSort(), Execution time: {tot:.5f}s")
from bigO import bigO
from bigO import algorithm
lib = bigO.bigO()
complexity, _ = lib.test(goSort, "random")
complexity, _ = lib.test(goSort, "sorted")
complexity, _ = lib.test(goSort, "reversed")
complexity, _ = lib.test(goSort, "partial")
complexity, _ = lib.test(algorithm.goSort, "ksorted")
lib.compare(algorithm.goSort, algorithm.introSort, "random", 50000)
lib.compare(algorithm.goSort, algorithm.quickSortHoare, "random", 50000)
lib.compare(algorithm.goSort, algorithm.countSort, "random", 50000)
'''
Running goSort(random array)...
Completed goSort(random array): O(nlog(n))
Running goSort(sorted array)...
Completed goSort(sorted array): O(nlog(n))
Running goSort(reversed array)...
Completed goSort(reversed array): O(nlog(n))
Running goSort(partial array)...
Completed goSort(partial array): O(nlog(n))
Running goSort(ksorted array)...
Completed goSort(ksorted array): O(nlog(n))
introSort is faster than goSort on random case
Time Difference: 0.05474s
quickSortHoare is faster than goSort on random case
Time Difference: 0.05739s
countSort is faster than goSort on random case
Time Difference: 0.12467s
'''
Array Before: [-668, -1411, 1788, -2050, 1848, 4812, -1900, -1114, -2858, -2354, -321, -244, 4988, -1393, -2204, 3055, -2867, 4696, -919, 4577, 786, 4729, -2365, 2805, 4998, -2429, 3994, 2179, 1021, -2564, 4147, -3322, 1883, 3980, -3484, -3565, -679, 1437, 598, -4106, 620, -4793, -4151, -3899, -1819, -2736, 2753, -3704, 4787, 259, -3064, 778, -1492, -2479, 3265, 320, 2344, 2537, 2478, -3843, 221, -2198, 1546, -1398, -259, 3093, 803, 4735, -2459, 564, 447, 1602, 4629, -4029, 1208, -2752, 4980, -3799, 46, 1847, -1642, -4026, 655, 707, -3030, 3403, 341, 3117, 1255, 699, 1540, -1445, 4309, 711, 3889, -577, 311, -3995, 99, 1734, -3993, 3142, -1641, 2471, 1586, 2262, 4130, 193, -1580, -1112, -800, 829, -2445, -857, 918, 3796, 3075, 2503, -1232, 2156, -4504, 4476, 3675, -1042, 1341, 2004, -427, -478, -1972, 1543, 274, -1663, -4000, 3666, 47, 3709, -1162, -2540, 2411, -3459, -865, 2053, 1674, 31, -5, -2732, -2284, -1324, 3371, -1594, 1365, 1612, -4678, 2234, -2802, 975, 9, 4766, 4581, 885, -3358, -2199, -1480, -289, -4930, 4830, -2670, 4865, 2977, 230, 4601, -1499, -4441, 2460, -3633, -2526, -4761, 4554, -4948, 1610, -982, 3737, -35, -1874, -291, 3188, -3561, 4441, -929, 4413, 2719, 3661, -1090, -4460, -2626, 2564, 385, 2364, 788, -4424, 3510, -4835, -2938, -2055, 1074, -1894, -63, 2776, -2977, -1053, 1543, 4179, -4749, -2961, -388, -4218, 1022, -3903, -120, 3785, -1805, -4609, 1951, 1392, -4184, 4404, -2485, -1917, -2772, 129, -2732, 4812, 1122, -1491, -664, -232, 3849, -2662, 1533, 2126, -2004, -1861, 3091, -2093, -2017, 878, 2837, -2638, 1070, 930, -4419, -3417, -391, -1428, -2778, -2327, -3267, 4424, 3863, -4954, -453, 1064, -1395, -3930, 1580, 3360, 3303, -3260, -1280, -2530, -987, -773, -4734, 3196, -42, 675, 3272, 1047, -887, 4302, 3029, 1534, -4948, -594, -136, 620, -1225, -2375, -679, 2588, 694, -3894, -3968, 1071, -4572, -793, -2277, -3700, 182, -3265, 2161, 2393, 3875, -1341, -3995, 3466, -4238, 3576, 1976, 3393, 1112, -606, -217, 3192, 1717, -4804, 3550, 1861, -491, -2855, 4175, 2169, 385, -1163, -665, 3051, 3718, 1290, 3347, 4771, -4061, 4608, -2952, -1978, -1103, 713, -159, 676, 483, 4680, -3322, 3010, 2969, 247, -2574, -343, -3790, -1052, 3382, -490, 227, 3181, -3643, 1611, 1312, -1882, -3982, 2807, -4388, 397, 2385, -1283, 4101, 2495, -2580, 2191, 2766, 1050, -549, -4927, 1664, -4753, 147, 4921, -1175, -135, -3018, 4124, -4201, -955, 3227, 1627, 246, -4081, -300, -2201, 3818, -835, 335, -2599, 1604, 200, 1148, 4786, -3871, 3136, 616, -349, -2042, -1402, 3123, -4013, -4971, -991, -4059, 3897, -1876, -48, -4933, -1740, 337, 1902, 4638, 4734, -3796, 854, 4788, 2029, -3039, 3503, -14, -2456, -2873, 3285, 3255, 1817, 1328, 674, 4571, -3980, 1705, 179, 4196, 3764, 2547, 643, 288, -4223, -2780, -4662, -471, -1491, -2668, -2691, 1082, 3759, -4656, 718, 3914, -3719, -4255, 4263, 2097, 1342, 1313, 184, 4989, -4652, -1313, 809, 3379, -2456, 1396, 3563, -2103, 1833, 3699, 1460, -1429, 2374, 447, 2854, -909, -4131, -1241, -2661, -1829, 3738, -3901, -4401, 3885, 4208, 4808, -4597, 2452, -3265, 1924, -429, -1217, -4566, 3333, -2741, 3695, 3534, 3187, -1082, -1994, -4917, 261, 1264, 2646, 4638, 3929, -4671, -4493, 2854, -4737, -2240, -2900, -3712, 36, 4263, -921, -2033, -1840, 3889, -1458, 708, -1905, 4628, -3173, -4165, -3681, -148, 190, 738, -4940, -3134, -1689, -802, -3869, 4528, 2192, -1826, -3890, 818, 1261, -767, 4547, 1303, -3923, 681, -1766, -2752, -142, 4728, -1271, -1126, 3747, 3381, 561, -3396, -3946, -4206, 4291, -2412, -2141, -2382, 385, 1810, 3568, 4442, -3478, -4799, 4749, -3051, -2934, -2574, 2383, -3038, 4633, 1434, -4937, 2205, -622, -57, 1470, 2572, -4268, 3723, 539, 1186, 2830, 8, 125, -33, -4058, -2141, 3032, -1260, -3555, -61, -1444, 4317, 1655, -2461, -701, 3799, -4911, 2092, 2223, 1617, 634, -410, 4743, 72, -3562, 3636, -4815, -331, 2011, 915, 4632, -1407, 2929, 3326, -1579, 4231, -4504, 2309, 2929, -49, 246, -3534, -1667, 2621, -1707, 3156, -2780, 3430, 922, 547, -1772, -1237, 1929, 2606, -47, -1975, -1673, 2485, -2333, 1882, -3965, -4207, 1443, -1073, -3323, 1136, 4117, -2871, 2782, -1394, -1022, 2831, -325, -1367, -2569, -2663, -1772, -1844, -244, 3679, -2894, -931, 1789, 2831, -4692, 1005, 4324, -3218, 2228, 4994, -4918, -3803, -2093, -1054, 243, -1141, -708, -2466, -1899, 2526, 431, 4535, 1647, 2855, 396, 947, -3027, 515, 2240, 4292, 2370, -4264, 872, 4999, -899, 4294, -1287, 1585, -1314, -1766, 1586, 1457, -2350, -1575, 1329, -3586, 2925, -875, -1318, -3813, 3457, 3055, -4020, 2645, -2089, 2720, 1778, -3167, -4673, 550, 4356, 3813, -1239, -1539, -241, 230, 4773, -4798, 1445, -390, 261, -2182, 4325, 2190, 2655, 3604, -4993, -1889, -3086, 4190, -2958, -1583, -319, -3326, -4755, 1983, -103, -3347, -2774, -2188, -600, 2171, -3101, 2610, 844, 2188, -3954, 4352, -4040, -1994, 1018, 3704, -4842, 4093, 2235, 3462, 1141, 2367, 4200, -3571, 306, 4691, -3774, -967, 3006, 3666, 4911, -2190, -513, 4950, -2366, -1065, 1271, -3680, 693, 4718, -808, 1240, 646, -553, 4249, -4602, 1442, 111, 3079, -2932, 2083, -220, -385, 640, -1152, -4623, 2408, -1179, -1038, 4128, -796, 3929, -4563, -937, -4828, -3327, 4910, 3758, 971, 958, 4331, 2471, -4004, -2281, 3695, 486, 2938, -571, -857, -622, 2011, -1026, 4749, -1699, 409, 4991, -674, -1469, 3647, -2118, 4221, -499, 2543, 3392, 14, 2445, -2679, -33, -2997, -4854, -3227, 1126, 4918, 2343, 2531, -1909, -1295, 3644, -3986, -2000, 4659, 1208, -4904, -1936, 253, 59, -2196, -4331, -1304, -2047, -117, 1797, 636, 3161, 2913, -567, 1186, -2334, 3058, 2309, -1655, -2588, -205, -4173, 369, 1654, -3143, 2910, -2760, 1749, -3753, 1647, 52, 1097, 5, 645, 2548, -3236, 4828, -1895, -2352, 4638, -4828, -604, -4843, -620, -3701, -4581, 2528, -1468, -4632, -3303, 1261, 3159, -3513, 3901, -1040, 2253, 4614, 1391, -320, 895, 3652, -335, -831, 4460, -4439, -2802, 1703, 455, 1317, -2165, -4876, -3309, -230, -3132, 3933, 1873, -2966, 745, 4426, 4125, -641, -4738, 1684, -509, 4265, -4240, -1099, 933, 3990, -2043, 700, -239, 1385, -649, 4085, -1034, 4196, -2147, 1532, -4800, 740, -121, -4191, 4243, -3486, 3921, 2161, -2036, -2417, -103, -2261, -2768, -4580, 2227, -4415, -3022, 2849, 3050, -2406, 1986, 4237, 4172, 3758, -4586, 1230, -2726, -4740, 4291, 3691, -330, 381, -181, 3832, 2370, 3439, 1667, -565, 4351, 1613, -1720, -2120, -4610, 1309, -49, -848, 253, 729, 3956, 1385, -120, 2742, 1745, -669, 2436, 124, 4804, -1189, -988, 3158, 2981, -488, 1450, -4061, 949, 3808, -533, -3605, 452, -261, -3271, -4608, 772, 2251, -695, -2696, 939, 1305, 351, 1685, 3925, 1634, -2078, 2702, -4342, -3880, 949, -2630, -458, 2764, -4314, 3936, 3720, 2771, -3873, 3672, -2958, -2861, -541, -1357, -4467, -1034, -4931, 1611, -629, -3638, -2015, 899, -2101, -4997, -3852, -3112, -2465, 1129, 1783, -707, -1707, 889, -2277, 955, -1665, 328, -2973, -1681, -4130, -4754, -2804, -1671, 1147, -3247, -2251, -2823, -4861, -2332, -626, -2871, -1770, -4397, -2568, 3146, 3448, 806, 962, -4764, 4349, -4254, 3779, 1994, -4550, 1502, -2247, 4191, -4215, 1641, 4309, 4711, -4792, 4440, 476, 4049, 472, -344, -75, -2369, -3312, -723, -3910, 2781, -3222, 3140, 4468, 745, -1308, 3327, 1570, -4380, 3394, 1880, -1158, -4041, -1967, -1516, -1824, 4474, 2396, 3009, -2200, -3589, -4709, -1742, -763, 3893, 2540, -107, -3563, -1353, -2606, -4428, -4939, 2676, 4989, -904, 278, -1822, 4514, -3547, 4102, -4123, -1705, -4334, 4104, 256, -1916, 1509, 1449, 1557, 4818, -2278, -777, 150, -3881, 3649, -3595, -1721, 3990, 3584, -1078, 1217, 4132, 218, 2464, 4302, -3230, -4508, 1290, 2160, 4380, 1339, -4997, 4670, 1459, 4701, -2703, 2012, 1480, 3874, 3267, 1787, 4156, -3803, -1524, 4237, 487, 4783, 1679, -1229, -742, -1923, 2209, -2506, 4938, -2390, -4389, 327, 104, 3774, 1016, -2274, -2517, -1508, -4008, -3197, -2082, 4683, -1614, -105, 887, -2325, -56, -3080, 4789, -4546, -1569, 4503, 1832, 37, -4871, 3048, -732, 502, -4756, 3009, -1247, 1754, 3705, 1134, -2710, -4257, -514, -504, 3850, 3163, 793, 1273, 4622, -2854, 548, -4756, -3649, 4428, -1434, -2227, -146, -840, -844, -875, -655, 501, 4217, -3269, 1768, -2734, 468, 72, 4965, 201, 1728, -938, -4614, 561, -2865, 1745, 3144, 553, -4315, 2798, -20, 3728, 999, 4592, 415, -4606, 907, 4224, 4395, -3420, -2793, 120, 4417, -3425, 2616, 3397, -161, 3137, 4894, -869, -3208, -3322, 2409, 4574, -1756, 3447, -3544, 4810, -3110, 1515, 56, -143, -3165, -4634, -4098, 2133, -2009, -4355, 168, 1836, 676, 3948, 3129, 2990, -3354, 3084, -4063, -2238, -4095, 794, -2634, -1476, 4927, -1379, 3210, 2352, -2741, -3643, -2413, 4840, 4503, -4999, -3447, 1847, -2151, 333, 195, 4553, 3679, -4899, 959, -3056, -2516, 3667, -1482, -4724, -2131, -847, 2606, -2995, 2683, -1120, 4822, 3646, 3412, 2074, -304, -2716, -2934, -3696, 4450, -62, -4840, -231, -3332, 2847, -2712, -4399, -557, 4279, -3023, 732, 2787, 4445, 1975, 4151, -1888, 268, -3039, 4427, 212, 450, 4887, -2174, -1145, 1469, 3453, 1914, 778, 2600, -2571, 3185, 1246, -3787, 1279, 3499, -3047, 230, -1840, 2519, -3830, 3912, -3282, -1033, -162, -3560, 1462, -2004, 4825, 4955, 3870, 314, -1376, -1222, 139, 3097, -4989, 1277, 2788, -2345, 4939, -2756, -4986, 1273, -3634, -2109, 3455, 2786, 2178, -1489, 1552, 3431, 394, 4894, -50, 3386, 2960, -1285, 1293, 605, -1568, 3558, 559, 258, 2290, -4620, 3577, 1073, 1975, -1809, 3654, 618, -114, 4953, -3991, -1635, 1478, -4587, -4596, -2370, -3887, -338, 4914, 4770, 3463, 1680, 1580, 1054, -1965, -264, 1243, 0, 179, 341, 1181, 2387, 3912, 1309, -4561, -3503, 3627, -4012, 1409, -4218, -252, -1561, 1649, 63, 2480, -3011, 1359, 2103, 4115, -4143, -3944, -1368, 1887, -2150, -1018, -4544, 153, -312, -3026, -4910, 3652, 1577, 195, -133, 4463, 3003, -918, -4925, 3342, 974, 2195, 3861, 1953, 4473, -4971, 1191, -732, -2743, -2066, -4748, 3381, -1747, 589, 4460, -932, -2040, -1590, 2470, -2930, -1322, -753, 2425, -1677, -4557, -1392, 1579, 620, -2733, -1088, 3258, -1939, -699, -4811, 2541, 1935, -1432, -501, -3844, 322, 129, 1801, 2297, 2867, 1845, -2396, -2125, 3068, 2515, -2830, 2920, 3776, -1741, -1155, 3988, -4234, 1832, 973, -1250, 2485, -3841, 4217, -1969, -1003, 1286, -1999, 139, -1341, -4722, 2536, -1683, -1638, -4952, -2642, -766, -2560, 1977, -119, 2880, -3843, 3011, 1276, 2717, -4275, -4638, 2935, 4573, 1966, -3292, -4910, -2154, 1441, 3170, -1956, -692, -3684, -3169, 4690, -3115, -4907, -4202, -4066, -4544, -3601, 2988, -2785, -436, 3650, 4354, 2756, 1155, 4766, -3978, 4020, 619, -4411, -1351, 2704, 4794, -1589, 1232, -1597, 3238, -3584, -3068, -434, 2831, -2719, 432, 2081, 1993, -1379, -2107, -3304, 2174, -260, 4549, -1753, 4153, 4603, -2864, -2322, -3634, -1787, 1566, -2672, -2166, -454, -2685, -3225, -60, 83, 1612, 4676, 949, 3466, 531, -3041, -2055, 3482, 3732, 4813, 3433, -2123, 2837, -4818, 2247, 1690, 369, 3589, 1739, 1197, 640, 466, -4941, -546, 3991, 4131, 1631, 4572, -2642, -4953, 1189, -1068, 4388, -3086, 832, -1223, -2434, 2305, 2488, 4004, 2387, 4099, -3066, -3887, 1030, -2377, -4369, -860, -1478, 4227, -1950, -3832, 4825, -3824, -3086, 3225, 3698, 4337, 1120, 37, -1438, 697, 4574, -2330, 4515, 3498, 3354, 3721, -1051, -1462, 1773, -3950, -4456, 777, 3928, -696, 1764, -1653, -2652, -1120, -1695, 2630, 1349, 4074, 1307, 898, 2497, -1950, 1247, -4484, 4836, 3607, -3145, -2042, -3733, 643, 1143, 1696, -931, -2605, -705, -4957, -2288, 4831, 4389, 4291, 4288, 4183, 4480, -3088, -1656, -3194, 4814, -3711, -1275, 3742, -1105, 1808, -332, -2991, 2629, -3724, -2940, -1757, -539, 1695, 994, -4014, 1155, 424, -136, 1196, 4032, -4869, -1555, -739, 219, 2992, -3488, 3362, -4707, -623, -4446, 1097, -3963, -1629, 3294, 4923, -4397, 3035, 4713, 1528, -4224, -4, 4480, -4650, 1389, 2374, -1124, 4536, 3507, 4316, 2975, -3308, -3942, -719, 2749, -4502, 4359, -804, 3098, 4486, -4926, -2225, 1476, 4997, 2389, 4307, 4910, -2604, -1398, -200, -3411, -502, -2385, -3764, 3222, 2392, -3320, -3288, -1413, 3723, -4354, -2180, -1628, 2198, -4208, -4019, 1435, 1016, -4135, 203, -1939, -1815, -3008, -3622, -4618, -71, -4382, -4452, -4647, 5000, 494, 3271, 1315, 2103, -2529, -2318, 766, -684, 2792, 884, -2876, 2171, 4051, 4567, -2520, -350, 3928, 4828, -4889, 4434, 2021, -880, -3835, 4425, -1856, -4531, 3670, -39, -4276, -1517, 1843, -2223, 4832, 2906, 457, 3191, 4362, -1670, 4273, -3728, 906, 1780, 2591, 2742, -3090, 1688, -2022, -4725, 2709, -4408, 15, 4586, -3292, 358, -739, -632, 4503, -744, -206, 1638, 4681, -4152, 3649, 2711, 3799, -1135, -856, -4774, 428, -3447, 4915, -3687, -3671, -3693, -645, -1963, -3116, -639, 3028, -98, -100, -1059, 3323, -724, -3491, 1935, 2396, 294, -3866, -4144, -2844, 1892, 2121, -3614, 920, 213, 1083, 2663, 985, 1319, 1720, -944, 3119, -214, 3637, -1021, -3320, -891, -1166, -1789, -869, 1158, -3485, -4163, -2291, -133, -4811, 3064, 4393, -1898, 1784, 1409, 4071, -2084, -2644, -145, 1612, -3067, 2099, 741, 2421, 4415, -3771, 1468, 1644, 3741, 2528, 3711, 3127, -4112, 1891, -2219, -65, -1689, 262, 4155, -1422, -2829, -518, 4251, -3143, -4960, -4152, -2102, -3465, 2015, 1486, -432, 1473, 807, 4897, 3864, -3299, 3558, 19, 4618, 3044, -1350, 3353, -466, 1804, -294, 719, -2965, -1536, -3323, -3253, 2461, -3576, 404, -1012, -3303, 4434, -3875, -2516, 2894, 1644, 2721, 1207, -398, 4427, -2456, -1825, 3821, 309, 3140, 1528, 1644, -3688, 3144, 679, 3640, -4223, 2016, -3533, 4417, 2355, -694, 3661, 3079, -4225, -2319, -2597, -4290, -4403, 993, -4378, -3730, 308, -4858, -3913, -908, 1459, -4387, -2709, -3736, -4234, 1755, 2543, -2131, 4634, 4169, 1324, 1064, 3289, 2002, -4308, 4525, 2823, 2589, 4346, 3634, -371, -698, -2710, -627, -313, 797, 3903, -1633, 2783, 653, 2030, -3207, -4697, 3739, -3978, -4548, 4757, 4472, 208, -2125, -3323, 2697, -3122, -3654, 652, -4703, 3375, -4873, -4899, -1229, -2310, 2588, 1153, -2534, 3940, 2451, 4563, 1364, -3806, -645, -4924, -1730, -94, -456, -1572, 4972, -3421, -1977, 2691, 3206, 1382, -3928, 1517, -1879, 4728, -2976, 4161, -3320, -3741, 2207, 359, -1495, 3202, 2257, 907, -1241, -824, -2563, -1589, 4283, 2570, -2012, 4344, 990, -2048, 59, 1367, -665, -3174, 2734, -2883, -999, 2310, -831, 1900, -540, 3864, 2407, -3552, -664, 511, -4177, 1617, 2983, -2522, 2652, -1756, -3100, 2695, -1532, 277, 901, -1931, -302, -3327, 4693, -3692, 1411, 2958, 1694, -2172, -2956, -3364, 1181, 2714, 2969, -305, 1474, -3704, 1107, 3347, 3031, 4026, -3851, 14, 2149, -2540, -2561, 2175, -1689, -3456, 778, -3756, 4174, 2442, -2699, -4466, 810, -1354, 4223, 2615, -4510, -2201, -4817, 1734, -2185, -1570, -1742, 4121, 3630, -284, -3560, -4901, 53, 941, -2270, 4169, 4986, -4293, 464, 3016, 1051, -4080, 4215, 3300, -3127, -3193, 2716, -796, 3028, 4818, -2630, 1914, 4004, -1658, -1247, -4184, 3258, 2236, 1680, 2044, 602, 1082, -1660, -4311, 4113, 4463, -2548, 1351, -3628, 3287, -2918, -1353, -2466, 4890, -1776, 3007, -693, -2652, -1875, 151, 1453, -1009, 256, -3114, -4590, -198, -3686, -512, -2046, -1733, -1157, -3509, 3666, 3299, 433, 4499, 1945, 2365, 4142, -1683, 3598, -1516, 291, -27, 483, -4393, 1859, 775, 4732, 2017, 806, -1597, -4777, -12, 1393, -2698, 4087, -3501, -97, -1746, -4166, 2420, -3708, 1908, 2333, 4530, -119, 2626, -4796, 4701, 3370, 1109, -4798, 1362, 1634, -3625, -2419, -563, -2560, 4004, 2834, 3351, -3686, 104, -2063, -3939, -2321, 1854, -4832, -4491, -2098, -3979, -2800, -1846, 1472, 290, -2003, -3718, 3061, 506, -3198, -2946, -1023, 1805, 3593, 3463, 505, 2783, -2564, 209, -289, 424, 459, 2959, -4341, 4451, 3650, 830, 4725, -4958, 4302, -1897, 878, -2131, 1548, 926, -2441, -2718, 1234, -1505, 1323, -532, 3813, 4539, 207, -3833, -2689, -135, 4976, -2617, 2875, -327, 3818, 2500, 4893, 1642, 800, -3615, 4635, 988, 4298, -495, -12, -4025, -4796, -4219, 3494, 4225, -785, -4969, 1829, 1375, -173, 2436, 3707, -1548, -3999, -3967, -1418, 2267, -1913, -3976, 2681, -3173, 310, 2712, 2408, 4533, 2986, -3453, 1696, -394, -1419, 2249, -4551, 1864, -4784, -4793, -3721, -4001, 419, 3397, -1976, -2930, 3541, 153, -1310, 1052, -731, -3703, 3103, 3304, -711, -1203, 1374, 1153, 4837, 3819, 2624, 1452, 315, -2328, 908, 4586, -4072, -2554, -207, 2486, 4983, 1199, 769, 1357, 82, -383, -4874, 1093, -923, -2666, -1011, 4118, 4673, -3473, -1607, -3935, 1952, -1411, -397, -3213, -1145, -4597, 146, 45, 3129, 796, 1415, -3901, -3127, 293, -1210, 921, -2474, -1081, -4757, -3032, 1301, -3055, -1009, 4864, 4436, 2902, -3099, -4800, -702, 3569, -4784, 1927, 700, -4221, -439, 62, -2440, -2704, -1944, -1789, 3917, 3521, -2652, -4856, 3903, 2786, 123, 3902, -979, 4483, 335, -126, -3785, -4368, 3306, 2792, 2301, -4160, 4231, 2215, 340, 4205, -2527, -298, 3690, -4543, 2732, -2116, -628, 1505, -1812, -3419, -3670, 4048, -1211, 3361, -3475, -2944, -3702, -2848, -1817, -4066, -4382, 3461, 4265, 3900, 2486, -4208, -4646, -2525, 545, 279, 2013, 477, 101, 3893, 3523, -3521, 3340, 1729, 2725, 3396, 64, 2095, 2486, -4994, -1433, -4460, -4228, 1515, -2283, 1581, -585, -1268, -4799, 706, -1988, 3615, -2602, -3273, 435, 2098, -3936, -2431, -1334, -1566, 4807, 4167, 4754, 4395, 1677, -4066, 1688, 4772, -495, 440, 95, 3921, 2926, -1305, 2845, 1346, 751, -943, 2931, -3449, -4658, 937, 2162, 844, -4775, 1316, -990, -663, -2539, -3011, -3688, -3956, -3715, 941, 4837, 4754, -674, 4198, 4228, -4572, 1867, -4213, 3243, 358, 4384, 3521, -836, -4143, 1383, 2987, -3677, 593, -265, -282, -1313, -1240, -208, 59, -4453, 3498, -3686, -706, 4758, -2723, 353, -3122, 291, -3735, -1042, -578, 201, 343, -4793, -670, 4470, -4743, 3069, 357, 1458, -3569, -1301, 2210, -3443, -219, -3196, -3748, 1450, -3800, -4916, -3965, -101, -2617, 822, -89, -347, 3149, 3663, -4335, -2585, 2382, 4173, 3641, -27, 1718, 1042, 3086, -510, 1651, -1541, 1494, 1426, 2502, -2979, 1422, 4661, -203, 4671, 1796, 250, 5000, 1834, 3291, -920, -2038, 3264, -4675, 1208, -1913, -2079, 1701, 1233, 387, 3544, 836, -3638, 2794, -1207, -2335, 3039, 3387, -1985, -3817, 970, 825, 615, -1635, 4031, -2980, -3817, 1020, -340, -3428, 3582, -27, 1687, 4451, -4491, 1809, -1296, -1506, 931, -4116, -348, 4356, 4082, -860, 2838, -1516, 243, 1024, 4391, 1980, 4814, -2591, 4663, 144, -4067, -1961, -240, 408, -857, 136, 492, 3895, -3954, -3955, -960, -616, -2637, 505, 810, -4262, 3845, -688, -4054, 2581, -2, 120, 4815, -3842, -3738, 1779, -3504, 4239, 4862, 3411, 4715, -604, 2833, -2684, -4542, 4377, -1255, -2748, -2849, 603, 4586, 329, -3666, 944, -598, 3999, 355, -4195, 4598, -4153, -4481, -240, -1456, 1946, -4922, 3637, -1393, -618, -3747, 565, 3612, -2548, 1462, 992, -3260, -1005, 2624, 2368, 4229, 3445, -2010, 643, -3865, 2011, -1997, -3673, -2392, 4872, -2615, 2621, -2236, -3832, 4660, -3085, 3894, -2123, 3969, -1789, -4396, -1423, 1684, -4832, 1076, -1648, -2778, 4023, 4888, -2566, 4625, 1675, 1512, -4068, 3892, 748, -4426, 2453, 1574, 1132, -1201, 2842, 1437, 3153, -429, 2635, 794, -4849, -4319, -876, -1094, -135, 1491, 1094, 4140, -4068, -2909, -2965, -2884, -3945, 4059, -3080, -4516, 3340, 3554, -3959, -2382, 3698, 1757, 738, -2623, 1532, -2325, -4395, 841, -222, -32, 112, -4301, 3210, 3102, -3207, -1389, 3209, -4621, 3103, 3609, -3124, -4695, 4341, -3345, 4885, 4296, 873, 1139, -4766, 1923, 2211, 3378, -4403, -1970, 4824, 4016, 4215, -4836, -2796, 1158, 1033, 4566, 3905, -1254, -1935, -322, -3802, -714, -1231, 3725, -4563, -4552, -3134, -4315, -4470, 1237, -1712, 2875, -545, 4522, 2005, 1864, -4125, 3167, -3660, 3384, -3573, -4103, -3413, 86, 3485, -2558, -515, -765, -3565, 3697, -747, -3597, -3634, -3364, 1732, 2616, -3266, -1137, -307, 188, -4878, -2071, 2157, 3651, -1815, 3188, -272, -2897, -3629, -2784, -4134, 915, 1642, -4158, -2507, 4527, -115, 641, -2975, 1932, -1856, -567, -3410, 4921, -215, -2757, 1138, -4497, -4809, -3006, -3795, -2614, -3234, 2314, -1482, -101, 4523, -1495, -353, 13, 723, 3326, 2125, 3592, -2695, -4445, -4313, 1899, 2951, 195, 4966, 2440, -137, -2440, -180, 912, 4493, -2625, -2461, 1688, 3263, 4265, 2043, 3282, 3173, -4750, 486, -3030, 1155, -4572, 4707, -905, -2453, -3393, 2424, 4260, 2142, 714, -1580, -4108, -4897, 4681, -374, -333, 674, -286, 4426, -4447, 1444, 3488, 3685, 3261, -2085, 769, 3704, 2945, 3191, 729, -2507, -64, -4088, 4757, -647, 4158, 3645, -2940, 3848, -1457, -2353, 22, -4426, -2571, 146, -2460, 298, -4320, -1629, 4648, -1013, -4700, -902, 1908, -2507, 633, -3990, 1207, 4071, 685, 517, 2789, 582, 395, 4113, 1274, 4604, 3385, 3708, -2884, 3497, -4571, -3125, 194, 4736, 4480, 375, -4473, -1967, -1451, -4318, -2142, 1011, 1680, -3456, -2099, -3219, -194, -1027, 4456, -4704, -722, -404, 1422, -3297, -3299, -681, -4570, 3325, -3996, -1823, -47, -4645, -2830, -4140, -2956, -1804, -1867, -926, -753, 4128, 2561, 2259, -4201, 2266, -261, -672, -3002, 4988, 954, -4784, 455, 1731, -3887, 4171, -1083, -3619, -4488, 3815, 4721, -467, 4046, 3770, -1906, -3684, -3930, 4470, -4713, -3869, -3605, -2390, 4493, 4118, 1238, 3429, 699, -1330, 1882, -1569, -3114, -1700, 3476, 4529, 2654, 1085, -4456, -2553, -2361, 3369, -4402, -585, 4637, -1217, 889, 1132, 3533, 1290, 2220, 1361, -201, 616, 765, -3413, -4989, 2422, -3398, 3826, 561, -1327, -287, 4512, -1682, 2212, -2631, -877, -1945, -990, 3158, 2644, 4705, 4750, 1291, -406, 4325, 3477, -3318, 4992, 2294, 2334, -501, 101, 427, 730, -3197, 4316, 817, 4498, 3557, 1945, -1297, 3265, -3925, -1460, -3202, 2853, 2285, -2625, -45, 1562, 1447, 2848, -129, 4773, -3008, -1013, 825, 1847, -1897, -1133, 4880, 1045, 2588, -724, -2282, -598, -2472, 3787, -1435, -665, 3658, -2517, -1040, -1353, -2814, 1284, -2971, -2062, -1826, -1854, -4916, -3369, -3218, 243, 4879, 891, 902, 2681, -1923, 938, 3483, -2494, -1324, -1992, -4336, 4414, -1381, 4655, 3709, 4242, -4712, 3822, -4181, -4858, -4387, 1530, -434, 905, 1907, 2422, 4899, -1028, 3275, -4650, 4795, -156, 4004, 755, -1287, -3851, 3716, 3630, -2271, 4568, 3731, -2569, 2073, -1953, -3740, -3898, -2137, -1921, 3538, -3845, -617, 112, -3159, 4025, -3102, 683, -4804, 351, 2560, -2707, 63, 3032, 183, -3616, -1125, -91, 196, -1935, 430, -2834, -1449, 1126, -3690, 3070, -3474, -3403, 3251, -4752, -190, 4691, -1709, -2018, 1243, 2302, -3742, -3375, -2804, -1521, 2203, -1598, -4291, -1649, 4519, -4479, -916, 47, 4343, -1670, -2443, -3745, -3686, 3333, -570, -3195, -3099, -513, -3377, 3001, 3942, 4442, -2350, 105, -1099, -785, -3214, 2558, -498, 1958, 4639, -903, 4125, -3835, 1465, -2460, 207, -347, 1973, 1224, -4713, 2372, 3186, -1401, 2458, 201, -383, -4970, -1497, 4379, 3617, 707, 791, -1306, 4202, 1857, -3299, 778, 161, -4322, -1911, 3136, 4901, 3999, 3033, 2694, 248, -4804, 79, 1042, -3658, -22, -3391, -1852, -4007, 1749, -4376, -2686, 2500, -2147, 4875, -765, 1290, -327, 2709, -1378, -3023, 4211, -3451, 4555, -4663, -1460, 2810, -523, 4012, 3388, -134, 2292, 1815, 194, -1550, 1832, 2701, -1570, 1511, 4829, 3871, -3037, 3215, -4054, 1099, 36, 1424, 3782, 2465, 2618, 1639, 3100, -2342, -4138, 2022, -4090, 752, 2033, -1915, -2765, 4476, 3532, 1068, 4624, -1311, -2034, 3455, -2319, -1858, 4709, -4516, -2041, -3091, -3020, -4084, 4727, 344, -1896, -4017, 3391, 2828, -2339, 923, 1484, 2739, -3793, -537, -3902, -3430, 3157, 63, 560, 3875, 3523, 197, 4659, -3564, -2873, -934, -1797, 2130, -3318, -4044, 412, 1597, 697, 1810, 3128, -2725, 1849, -4805, -3328, 4967, -4878, 862, 1718, 4575, -308, 1108, 2133, 1111, -4058, 2178, -574, 2407, 1146, 1477, -2896, -4545, -1752, 2043, -4631, 2548, -116, -4599, 1336, -380, -2257, 94, 2698, 4182, 3171, 1981, 2320, -191, -4, -505, -772, 1420, 4813, 3616, -1921, 4275, 1315, -86, -1382, 3648, -1268, -700, 2092, -4002, 2282, -4782, -4304, 747, -1380, 2207, -4701, 2127, -2395, 458, 2544, 4170, -4062, 4673, -1371, 161, -1226, -2717, -818, 496, -2153, -409, -1111, -2509, 187, -1694, -4940, -1424, -2862, 2330, 3210, -3426, 2238, 61, -2727, 4008, 2930, 3864, -732, -4513, 3070, 4618, 4279, -4124, -4586, -172, 4171, 1140, -3818, 1133, 729, -121, 1816, -3297, 2742, 731, 1966, 4980, -4818, 2648, -1019, 802, -1504, 3147, 4635, -3253, -3725, 1544, 3597, -4540, 327, 1174, -3732, -3118, 4573, -4817, -657, -4359, 2747, -1753, 2056, -974, 2431, 2150, -3947, -3563, -2084, -4718, -4959, -204, 2797, 40, -4817, -2924, 4139, 2610, 4940, -112, -4845, 4484, 4260, 3297, -1268, -1766, 1382, -1118, 4633, 2347, 3589, 2229, 561, -94, -2379, 2910, -408, -110, -764, -607, -4322, -4439, -1457, -2758, -2598, -1357, 4487, -4399, 4821, 938, -3960, -1097, -1886, -1762, 2221, 620, 1028, 88, -2451, 3258, 2884, 2106, 2249, 1956, 1312, 4830, -991, -4698, 2818, -4523, -1799, 3405, 2289, 1413, -1343, 1534, -1928, -1664, 588, -3820, 1944, -4540, -4578, -3328, -3658, 851, 4763, 3118, -2183, -3302, -253, -287, -4020, 4661, 377, 84, 4999, 1285, -1296, 2388, 1232, 2468, -4476, -3574, 4851, -4733, -4390, -1427, -834, 3503, 3752, -693, -950, 2094, -3210, -4252, -4027, 2442, -881, 26, -360, -704, -1701, -628, -4773, 4599, -4085, -3608, 4357, -1968, 1225, 271, -4327, -3891, 1624, 2280, -2605, 2523, -4178, -3187, -1398, -881, 3045, 4470, -2373, -2791, -3986, 2949, 4184, 3311, -3181, -4786, -2763, -549, -4252, -1234, 225, -1550, 3628, 3056, -1500, 1336, -4532, 198, 4470, -3652, -3199, 2651, 1100, 2390, 4232, -2013, -4341, -1718, -2596, 4235, -2437, -2176, -2685, -3532, 3195, -3890, -2422, -4284, 4332, -1097, -3733, 491, -1889, 3528, -779, 1329, 1054, 3741, 3282, -4171, -3949, 2279, 1611, 1520, -2163, -4514, 980, -1728, 1507, -1741, 2023, -942, 4853, 2139, -3778, 3840, 2519, -2826, -2588, 3669, 533, -3349, -2031, 1028, -129, -2145, -2171, -4000, 1045, 4555, -4304, -1778, -341, 791, -537, 1986, -842, -183, -1058, -3080, -2483, -1284, -1081, 1566, -2438, -3451, 2941, 746, -2521, -26, 3128, -4718, -97, -1248, -4819, -4350, -4097, 4669, -1902, -4060, -3722, 3081, -4109, 1575, 4181, -3905, 2089, -3745, -2995, 887, -47, 4689, 660, -1579, -2355, 2512, -3856, 1095, -439, 718, -3868, 3996, 3822, 518, 2537, 572, -863, -4801, 4759, -1338, 2956, -1500, -4718, -2563, 2322, 196, -355, -2999, -592, 688, -1503, 4581, 2919, 1520, -3921, -4698, -3751, 1382, -1687, 2192, -176, 1379, 2207, 155, 961, -4159, -907, -3480, 1970, 1737, 2414, 4544, -988, 1722, -3906, 1338, -3840, -2472, -4224, 2447, 4910, 1547, 103, 2517, -2015, 1379, -4761, -3690, -2022, -22, 3011, 3570, -1749, -1061, -3656, 280, 4422, -1289, -1067, -1987, -576, -3453, -1960, -2659, -1628, -380, 3949, -426, -1282, -1907, 2486, 601, 4248, 3102, 1445, 480, 895, -3159, -1557, -3610, -1763, -592, -3418, -886, 4922, -1683, 3714, -4613, 3884, 3256, 4926, -517, 1418, -316, 3956, 1749, -1801, 3682, -1842, -35, -2567, 2477, -727, -1075, 3392, 1082, 842, -1708, -4635, 1703, 3612, 617, -1613, -832, 1850, -4086, 792, 4087, -198, 3154, -4914, -3316, 2182, 226, -1455, 1447, 1864, 274, -1609, 3509, -3722, -4735, -4786, 1362, -4581, -4329, -2721, -363, 1498, -1208, 1966, -4242, -324, 2644, -2329, -4010, 3384, -2614, 1876, -1882, 790, 587, 4857, 760, -572, 1836, -408, -2469, -785, -4330, 343, -2399, 2451, -2581, -4352, 933, -1891, -408, 1924, 4573, -22, 3423, 3203, -1979, 622, 2406, -658, 3709, 1493, 610, -4965, -4304, -1482, 4640, 392, -3558, -3680, 420, 3671, 769, -3805, -2094, -2160, 2689, -4693, 3757, -1099, -3872, -1343, -3967, 119, 1632, -1217, 2003, 4950, -191, -1202, -1587, -1126, 2273, 3429, -2319, 808, 3405, -4652, 370, -4515, -4144, -1052, 4457, -4792, -4564, -468, -3426, -4366, -147, -527, 2026, -2800, 3579, -4758, 3898, -2560, 1550, -2542, 3767, -4481, 2808, -4222, -2250, 4404, -1025, -2235, 570, -4590, -3338, -3828, -563, 4979, -1184, -1826, 96, 2487, 4782, 2114, -434, 896, 361, 2209, 3063, 803, 4431, 1482, -3998, -3714, -1418, 2538, -1162, 2703, 1882, 3665, 3253, 3737, 4188, 2880, 1518, 2501, -2285, -3091, 1027, 4185, -612, -1267, 2583, 1695, 1367, -4015, 2721, -386, 3950, 194, 4393, -3209, -2365, -879, 2037, -1870, -4209, 2000, 1856, 4114, 3558, -711, -2680, -2158, 2393, -228, -1263, -4024, -2003, 3299, -4386, 812, -4062, -2073, 2488, -632, 2114, 714, 1031, -4310, 2632, -4817, -2249, -4059, 21, -338, -4685, 418, -4648, -637, 2740, 1663, -227, -2479, 3073, -231, 4100, 3750, -3644, -406, -1929, 4867, -1966, -3630, 2338, 4564, -4293, 2453, 4874, -2795, 506, 1968, -4789, 3770, 2632, -2228, -2572, -3648, 971, -2434, 4662, -3964, -3959, -276, 4447, 4868, 1243, -4304, -1539, -3761, 2934, 1674, -4340, -1774, 4843, -206, 3616, -1426, -3775, -1255, 191, 4791, -2869, 2375, 4473, 4056, -2228, -1363, -230, -222, -4410, 761, 4355, 2228, -1605, -791, 2391, -2494, -3886, -987, -401, -4543, 2856, -3037, -937, -4462, -3607, 4461, -4103, -2230, -915, 2045, -4347, 978, -2534, -3153, -1357, 1932, -1168, -499, -680, 565, -4810, 3843, -1953, 1377, 3770, 143, 1626, -4108, -4264, -4647, -3047, -4071, 4506, 1875, -3537, -385, -4404, 3980, 21, -397, -3807, 174, -641, -3030, 2638, -580, -3263, 3027, 3888, -1225, 4374, -3650, -1182, -4496, -2363, 1517, -324, -3958, 1769, 4776, 3912, -3412, 4832, 4700, 4534, -4692, 206, 4681, 424, -1897, -3476, -4712, -2743, -3513, 529, -1715, 33, -3953, -4092, -1496, 4453, 1644, 1423, -2969, 4265, 1209, 2534, -4675, 2430, 765, -1847, -450, 3953, -3915, -3663, 4681, -1302, -1254, -2581, 3938, 508, 1851, -2788, -379, 3966, -1141, -3365, -2239, 4743, 2698, 4123, -2240, 104, 2553, 779, -1232, 4957, 4917, 1693, 633, 81, 3767, 1982, -514, 3079, -3262, -3592, 3326, -3737, -2530, 1052, -3169, -2887, 2370, 878, -2342, 2772, -3517, 3838, -2608, -1978, -3136, 4931, 522, 568, 4113, 2321, 3513, -474, 4119, 2333, -4564, -3291, 3691, 1442, 2346, 4733, -1988, 4570, -2910, 2435, -977, -560, 4046, -2181, 643, -4334, 4373, 1133, -3843, -2235, -4237, 296, -2356, 4967, -3601, 497, 3607, -845, 1527, -582, -4458, 2374, -3378, -476, -3654, 4327, -698, -3504, 3613, -4742, 2960, -2293, 374, 4492, -35, 2801, -3768, 4344, -4147, 2560, 4551, -2332, 3499, 4261, -3436, -4244, 2954, -4867, -2200, -3799, -4766, -637, -2733, 537, -4861, -1666, -4656, 4258, -392, 4129, -3153, -3546, 3861, 1317, -2299, -3788, 1295, 4845, -2045, -4197, 3168, -1684, -159, 4954, 4681, -4131, -1569, -3070, -869, 3790, 1734, 1239, 2984, 1742, 2452, -2742, -118, 2768, -3049, 3925, 1844, -4637, 2800, -2, 4196, 4643, 2236, 3844, -4168, 1770, 3169, -3118, 901, -1022, 4211, 3802, -623, -2077, -2129, 2964, 1315, 4050, -4612, -2239, -3998, 3054, -4987, 2316, 4931, -43, -4097, -1994, 177, 1137, 3, 1278, -1835, 4749, -2277, 3803, -1899, 3978, 1673, -1362, 59, -1797, -876, 797, -3731, -1268, 3469, 2896, 369, 730, -1479, -4093, 1157, -4947, -1592, -4552, -2098, 1192, -3538, 2041, 4819, -3712, 1661, -2438, 1195, 3255, -621, 1476, -4789, -2814, -614, 3331, 1796, 3968, 818, -1986, -1562, 3475, 4749, -4676, -153, 3674, 4815, -4542, 2958, -961, 3384, -4224, 446, -2658, 668, 1943, 3296, -3477, 119, 3974, 143, 2330, 3350, -3140, 4594, -949, 439, 3861, 214, -4163, 4823, -534, -51, 3565, 960, -3935, -2792, 4044, 2674, -3010, 211, 4276, 3650, -3846, 4440, -2505, -3349, 814, 4012, -2721, -1660, -4143, 243, -2021, -1102, -4980, -3049, -2522, 4921, -1951, -2793, 4960, 4771, 3303, -1935, -1953, -848, -1286, -2051, -3756, -536, -119, 159, 1015, 2500, 2954, -4983, 3043, -1544, -2322, -1418, -3434, 3073, 4814, -663, -4717, 4773, 3414, -1741, 3731, 4145, 1858, 554, -891, -772, 3210, -1171, 3586, 3697, -1003, 1443, 1234, -1184, 3203, 2457, 2597, -1540, 2425, -3004, -4980, 348, -1271, 929, -1187, -3650, 4270, 2183, 2125, -243, -1341, -3638, 3903, -1245, 3072, 814, 1113, 2204, 4129, -3509, -1279, -1587, 4355, 1086, -3932, -12, -592, -475, 2678, -1889, 2386, -1560, 2023, -353, -3155, 4146, -3242, 2964, 4030, -2968, -1956, 1225, -3435, 2818, 3733, -4014, 2637, 2009, 2687, 4561, 2347, 3103, -4186, -4768, -1201, -347, 1433, 3166, -4067, 934, -3900, -4714, -185, 3651, -1786, 3724, -699, 1084, -1574, 4171, 1584, -4169, 470, -4950, 1522]
Array After: [-4999, -4997, -4997, -4994, -4993, -4989, -4989, -4987, -4986, -4983, -4980, -4980, -4971, -4971, -4970, -4969, -4965, -4960, -4959, -4958, -4957, -4954, -4953, -4952, -4950, -4948, -4948, -4947, -4941, -4940, -4940, -4939, -4937, -4933, -4931, -4930, -4927, -4926, -4925, -4924, -4922, -4918, -4917, -4916, -4916, -4914, -4911, -4910, -4910, -4907, -4904, -4901, -4899, -4899, -4897, -4889, -4878, -4878, -4876, -4874, -4873, -4871, -4869, -4867, -4861, -4861, -4858, -4858, -4856, -4854, -4849, -4845, -4843, -4842, -4840, -4836, -4835, -4832, -4832, -4828, -4828, -4819, -4818, -4818, -4817, -4817, -4817, -4817, -4815, -4811, -4811, -4810, -4809, -4805, -4804, -4804, -4804, -4801, -4800, -4800, -4799, -4799, -4798, -4798, -4796, -4796, -4793, -4793, -4793, -4792, -4792, -4789, -4789, -4786, -4786, -4784, -4784, -4784, -4782, -4777, -4775, -4774, -4773, -4768, -4766, -4766, -4764, -4761, -4761, -4758, -4757, -4756, -4756, -4755, -4754, -4753, -4752, -4750, -4749, -4748, -4743, -4742, -4740, -4738, -4737, -4735, -4734, -4733, -4725, -4724, -4722, -4718, -4718, -4718, -4717, -4714, -4713, -4713, -4712, -4712, -4709, -4707, -4704, -4703, -4701, -4700, -4698, -4698, -4697, -4695, -4693, -4692, -4692, -4685, -4678, -4676, -4675, -4675, -4673, -4671, -4663, -4662, -4658, -4656, -4656, -4652, -4652, -4650, -4650, -4648, -4647, -4647, -4646, -4645, -4638, -4637, -4635, -4634, -4632, -4631, -4623, -4621, -4620, -4618, -4614, -4613, -4612, -4610, -4609, -4608, -4606, -4602, -4599, -4597, -4597, -4596, -4590, -4590, -4587, -4586, -4586, -4581, -4581, -4580, -4578, -4572, -4572, -4572, -4571, -4570, -4566, -4564, -4564, -4563, -4563, -4561, -4557, -4552, -4552, -4551, -4550, -4548, -4546, -4545, -4544, -4544, -4543, -4543, -4542, -4542, -4540, -4540, -4532, -4531, -4523, -4516, -4516, -4515, -4514, -4513, -4510, -4508, -4504, -4504, -4502, -4497, -4496, -4493, -4491, -4491, -4488, -4484, -4481, -4481, -4479, -4476, -4473, -4470, -4467, -4466, -4462, -4460, -4460, -4458, -4456, -4456, -4453, -4452, -4447, -4446, -4445, -4441, -4439, -4439, -4428, -4426, -4426, -4424, -4419, -4415, -4411, -4410, -4408, -4404, -4403, -4403, -4402, -4401, -4399, -4399, -4397, -4397, -4396, -4395, -4393, -4390, -4389, -4388, -4387, -4387, -4386, -4382, -4382, -4380, -4378, -4376, -4369, -4368, -4366, -4359, -4355, -4354, -4352, -4350, -4347, -4342, -4341, -4341, -4340, -4336, -4335, -4334, -4334, -4331, -4330, -4329, -4327, -4322, -4322, -4320, -4319, -4318, -4315, -4315, -4314, -4313, -4311, -4310, -4308, -4304, -4304, -4304, -4304, -4301, -4293, -4293, -4291, -4290, -4284, -4276, -4275, -4268, -4264, -4264, -4262, -4257, -4255, -4254, -4252, -4252, -4244, -4242, -4240, -4238, -4237, -4234, -4234, -4228, -4225, -4224, -4224, -4224, -4223, -4223, -4222, -4221, -4219, -4218, -4218, -4215, -4213, -4209, -4208, -4208, -4207, -4206, -4202, -4201, -4201, -4197, -4195, -4191, -4186, -4184, -4184, -4181, -4178, -4177, -4173, -4171, -4169, -4168, -4166, -4165, -4163, -4163, -4160, -4159, -4158, -4153, -4152, -4152, -4151, -4147, -4144, -4144, -4143, -4143, -4143, -4140, -4138, -4135, -4134, -4131, -4131, -4130, -4125, -4124, -4123, -4116, -4112, -4109, -4108, -4108, -4106, -4103, -4103, -4098, -4097, -4097, -4095, -4093, -4092, -4090, -4088, -4086, -4085, -4084, -4081, -4080, -4072, -4071, -4068, -4068, -4067, -4067, -4066, -4066, -4066, -4063, -4062, -4062, -4061, -4061, -4060, -4059, -4059, -4058, -4058, -4054, -4054, -4044, -4041, -4040, -4029, -4027, -4026, -4025, -4024, -4020, -4020, -4019, -4017, -4015, -4014, -4014, -4013, -4012, -4010, -4008, -4007, -4004, -4002, -4001, -4000, -4000, -3999, -3998, -3998, -3996, -3995, -3995, -3993, -3991, -3990, -3986, -3986, -3982, -3980, -3979, -3978, -3978, -3976, -3968, -3967, -3967, -3965, -3965, -3964, -3963, -3960, -3959, -3959, -3958, -3956, -3955, -3954, -3954, -3953, -3950, -3949, -3947, -3946, -3945, -3944, -3942, -3939, -3936, -3935, -3935, -3932, -3930, -3930, -3928, -3925, -3923, -3921, -3915, -3913, -3910, -3906, -3905, -3903, -3902, -3901, -3901, -3900, -3899, -3898, -3894, -3891, -3890, -3890, -3887, -3887, -3887, -3886, -3881, -3880, -3875, -3873, -3872, -3871, -3869, -3869, -3868, -3866, -3865, -3856, -3852, -3851, -3851, -3846, -3845, -3844, -3843, -3843, -3843, -3842, -3841, -3840, -3835, -3835, -3833, -3832, -3832, -3830, -3828, -3824, -3820, -3818, -3817, -3817, -3813, -3807, -3806, -3805, -3803, -3803, -3802, -3800, -3799, -3799, -3796, -3795, -3793, -3790, -3788, -3787, -3785, -3778, -3775, -3774, -3771, -3768, -3764, -3761, -3756, -3756, -3753, -3751, -3748, -3747, -3745, -3745, -3742, -3741, -3740, -3738, -3737, -3736, -3735, -3733, -3733, -3732, -3731, -3730, -3728, -3725, -3724, -3722, -3722, -3721, -3719, -3718, -3715, -3714, -3712, -3712, -3711, -3708, -3704, -3704, -3703, -3702, -3701, -3700, -3696, -3693, -3692, -3690, -3690, -3688, -3688, -3687, -3686, -3686, -3686, -3686, -3684, -3684, -3681, -3680, -3680, -3677, -3673, -3671, -3670, -3666, -3663, -3660, -3658, -3658, -3656, -3654, -3654, -3652, -3650, -3650, -3649, -3648, -3644, -3643, -3643, -3638, -3638, -3638, -3634, -3634, -3634, -3633, -3630, -3629, -3628, -3625, -3622, -3619, -3616, -3615, -3614, -3610, -3608, -3607, -3605, -3605, -3601, -3601, -3597, -3595, -3592, -3589, -3586, -3584, -3576, -3574, -3573, -3571, -3569, -3565, -3565, -3564, -3563, -3563, -3562, -3561, -3560, -3560, -3558, -3555, -3552, -3547, -3546, -3544, -3538, -3537, -3534, -3533, -3532, -3521, -3517, -3513, -3513, -3509, -3509, -3504, -3504, -3503, -3501, -3491, -3488, -3486, -3485, -3484, -3480, -3478, -3477, -3476, -3475, -3474, -3473, -3465, -3459, -3456, -3456, -3453, -3453, -3451, -3451, -3449, -3447, -3447, -3443, -3436, -3435, -3434, -3430, -3428, -3426, -3426, -3425, -3421, -3420, -3419, -3418, -3417, -3413, -3413, -3412, -3411, -3410, -3403, -3398, -3396, -3393, -3391, -3378, -3377, -3375, -3369, -3365, -3364, -3364, -3358, -3354, -3349, -3349, -3347, -3345, -3338, -3332, -3328, -3328, -3327, -3327, -3326, -3323, -3323, -3323, -3322, -3322, -3322, -3320, -3320, -3320, -3318, -3318, -3316, -3312, -3309, -3308, -3304, -3303, -3303, -3302, -3299, -3299, -3299, -3297, -3297, -3292, -3292, -3291, -3288, -3282, -3273, -3271, -3269, -3267, -3266, -3265, -3265, -3263, -3262, -3260, -3260, -3253, -3253, -3247, -3242, -3236, -3234, -3230, -3227, -3225, -3222, -3219, -3218, -3218, -3214, -3213, -3210, -3209, -3208, -3207, -3207, -3202, -3199, -3198, -3197, -3197, -3196, -3195, -3194, -3193, -3187, -3181, -3174, -3173, -3173, -3169, -3169, -3167, -3165, -3159, -3159, -3155, -3153, -3153, -3145, -3143, -3143, -3140, -3136, -3134, -3134, -3132, -3127, -3127, -3125, -3124, -3122, -3122, -3118, -3118, -3116, -3115, -3114, -3114, -3112, -3110, -3102, -3101, -3100, -3099, -3099, -3091, -3091, -3090, -3088, -3086, -3086, -3086, -3085, -3080, -3080, -3080, -3070, -3068, -3067, -3066, -3064, -3056, -3055, -3051, -3049, -3049, -3047, -3047, -3041, -3039, -3039, -3038, -3037, -3037, -3032, -3030, -3030, -3030, -3027, -3026, -3023, -3023, -3022, -3020, -3018, -3011, -3011, -3010, -3008, -3008, -3006, -3004, -3002, -2999, -2997, -2995, -2995, -2991, -2980, -2979, -2977, -2976, -2975, -2973, -2971, -2969, -2968, -2966, -2965, -2965, -2961, -2958, -2958, -2956, -2956, -2952, -2946, -2944, -2940, -2940, -2938, -2934, -2934, -2932, -2930, -2930, -2924, -2918, -2910, -2909, -2900, -2897, -2896, -2894, -2887, -2884, -2884, -2883, -2876, -2873, -2873, -2871, -2871, -2869, -2867, -2865, -2864, -2862, -2861, -2858, -2855, -2854, -2849, -2848, -2844, -2834, -2830, -2830, -2829, -2826, -2823, -2814, -2814, -2804, -2804, -2802, -2802, -2800, -2800, -2796, -2795, -2793, -2793, -2792, -2791, -2788, -2785, -2784, -2780, -2780, -2778, -2778, -2774, -2772, -2768, -2765, -2763, -2760, -2758, -2757, -2756, -2752, -2752, -2748, -2743, -2743, -2742, -2741, -2741, -2736, -2734, -2733, -2733, -2732, -2732, -2727, -2726, -2725, -2723, -2721, -2721, -2719, -2718, -2717, -2716, -2712, -2710, -2710, -2709, -2707, -2704, -2703, -2699, -2698, -2696, -2695, -2691, -2689, -2686, -2685, -2685, -2684, -2680, -2679, -2672, -2670, -2668, -2666, -2663, -2662, -2661, -2659, -2658, -2652, -2652, -2652, -2644, -2642, -2642, -2638, -2637, -2634, -2631, -2630, -2630, -2626, -2625, -2625, -2623, -2617, -2617, -2615, -2614, -2614, -2608, -2606, -2605, -2605, -2604, -2602, -2599, -2598, -2597, -2596, -2591, -2588, -2588, -2585, -2581, -2581, -2580, -2574, -2574, -2572, -2571, -2571, -2569, -2569, -2568, -2567, -2566, -2564, -2564, -2563, -2563, -2561, -2560, -2560, -2560, -2558, -2554, -2553, -2548, -2548, -2542, -2540, -2540, -2539, -2534, -2534, -2530, -2530, -2529, -2527, -2526, -2525, -2522, -2522, -2521, -2520, -2517, -2517, -2516, -2516, -2509, -2507, -2507, -2507, -2506, -2505, -2494, -2494, -2485, -2483, -2479, -2479, -2474, -2472, -2472, -2469, -2466, -2466, -2465, -2461, -2461, -2460, -2460, -2459, -2456, -2456, -2456, -2453, -2451, -2445, -2443, -2441, -2440, -2440, -2438, -2438, -2437, -2434, -2434, -2431, -2429, -2422, -2419, -2417, -2413, -2412, -2406, -2399, -2396, -2395, -2392, -2390, -2390, -2385, -2382, -2382, -2379, -2377, -2375, -2373, -2370, -2369, -2366, -2365, -2365, -2363, -2361, -2356, -2355, -2354, -2353, -2352, -2350, -2350, -2345, -2342, -2342, -2339, -2335, -2334, -2333, -2332, -2332, -2330, -2329, -2328, -2327, -2325, -2325, -2322, -2322, -2321, -2319, -2319, -2319, -2318, -2310, -2299, -2293, -2291, -2288, -2285, -2284, -2283, -2282, -2281, -2278, -2277, -2277, -2277, -2274, -2271, -2270, -2261, -2257, -2251, -2250, -2249, -2247, -2240, -2240, -2239, -2239, -2238, -2236, -2235, -2235, -2230, -2228, -2228, -2227, -2225, -2223, -2219, -2204, -2201, -2201, -2200, -2200, -2199, -2198, -2196, -2190, -2188, -2185, -2183, -2182, -2181, -2180, -2176, -2174, -2172, -2171, -2166, -2165, -2163, -2160, -2158, -2154, -2153, -2151, -2150, -2147, -2147, -2145, -2142, -2141, -2141, -2137, -2131, -2131, -2131, -2129, -2125, -2125, -2123, -2123, -2120, -2118, -2116, -2109, -2107, -2103, -2102, -2101, -2099, -2098, -2098, -2094, -2093, -2093, -2089, -2085, -2084, -2084, -2082, -2079, -2078, -2077, -2073, -2071, -2066, -2063, -2062, -2055, -2055, -2051, -2050, -2048, -2047, -2046, -2045, -2043, -2042, -2042, -2041, -2040, -2038, -2036, -2034, -2033, -2031, -2022, -2022, -2021, -2018, -2017, -2015, -2015, -2013, -2012, -2010, -2009, -2004, -2004, -2003, -2003, -2000, -1999, -1997, -1994, -1994, -1994, -1992, -1988, -1988, -1987, -1986, -1985, -1979, -1978, -1978, -1977, -1976, -1975, -1972, -1970, -1969, -1968, -1967, -1967, -1966, -1965, -1963, -1961, -1960, -1956, -1956, -1953, -1953, -1953, -1951, -1950, -1950, -1945, -1944, -1939, -1939, -1936, -1935, -1935, -1935, -1931, -1929, -1928, -1923, -1923, -1921, -1921, -1917, -1916, -1915, -1913, -1913, -1911, -1909, -1907, -1906, -1905, -1902, -1900, -1899, -1899, -1898, -1897, -1897, -1897, -1896, -1895, -1894, -1891, -1889, -1889, -1889, -1888, -1886, -1882, -1882, -1879, -1876, -1875, -1874, -1870, -1867, -1861, -1858, -1856, -1856, -1854, -1852, -1847, -1846, -1844, -1842, -1840, -1840, -1835, -1829, -1826, -1826, -1826, -1825, -1824, -1823, -1822, -1819, -1817, -1815, -1815, -1812, -1809, -1805, -1804, -1801, -1799, -1797, -1797, -1789, -1789, -1789, -1787, -1786, -1778, -1776, -1774, -1772, -1772, -1770, -1766, -1766, -1766, -1763, -1762, -1757, -1756, -1756, -1753, -1753, -1752, -1749, -1747, -1746, -1742, -1742, -1741, -1741, -1741, -1740, -1733, -1730, -1728, -1721, -1720, -1718, -1715, -1712, -1709, -1708, -1707, -1707, -1705, -1701, -1700, -1699, -1695, -1694, -1689, -1689, -1689, -1687, -1684, -1683, -1683, -1683, -1682, -1681, -1677, -1673, -1671, -1670, -1670, -1667, -1666, -1665, -1664, -1663, -1660, -1660, -1658, -1656, -1655, -1653, -1649, -1648, -1642, -1641, -1638, -1635, -1635, -1633, -1629, -1629, -1628, -1628, -1614, -1613, -1609, -1607, -1605, -1598, -1597, -1597, -1594, -1592, -1590, -1589, -1589, -1587, -1587, -1583, -1580, -1580, -1579, -1579, -1575, -1574, -1572, -1570, -1570, -1569, -1569, -1569, -1568, -1566, -1562, -1561, -1560, -1557, -1555, -1550, -1550, -1548, -1544, -1541, -1540, -1539, -1539, -1536, -1532, -1524, -1521, -1517, -1516, -1516, -1516, -1508, -1506, -1505, -1504, -1503, -1500, -1500, -1499, -1497, -1496, -1495, -1495, -1492, -1491, -1491, -1489, -1482, -1482, -1482, -1480, -1479, -1478, -1476, -1469, -1468, -1462, -1460, -1460, -1458, -1457, -1457, -1456, -1455, -1451, -1449, -1445, -1444, -1438, -1435, -1434, -1433, -1432, -1429, -1428, -1427, -1426, -1424, -1423, -1422, -1419, -1418, -1418, -1418, -1413, -1411, -1411, -1407, -1402, -1401, -1398, -1398, -1398, -1395, -1394, -1393, -1393, -1392, -1389, -1382, -1381, -1380, -1379, -1379, -1378, -1376, -1371, -1368, -1367, -1363, -1362, -1357, -1357, -1357, -1354, -1353, -1353, -1353, -1351, -1350, -1343, -1343, -1341, -1341, -1341, -1338, -1334, -1330, -1327, -1324, -1324, -1322, -1318, -1314, -1313, -1313, -1311, -1310, -1308, -1306, -1305, -1304, -1302, -1301, -1297, -1296, -1296, -1295, -1289, -1287, -1287, -1286, -1285, -1284, -1283, -1282, -1280, -1279, -1275, -1271, -1271, -1268, -1268, -1268, -1268, -1267, -1263, -1260, -1255, -1255, -1254, -1254, -1250, -1248, -1247, -1247, -1245, -1241, -1241, -1240, -1239, -1237, -1234, -1232, -1232, -1231, -1229, -1229, -1226, -1225, -1225, -1223, -1222, -1217, -1217, -1217, -1211, -1210, -1208, -1207, -1203, -1202, -1201, -1201, -1189, -1187, -1184, -1184, -1182, -1179, -1175, -1171, -1168, -1166, -1163, -1162, -1162, -1158, -1157, -1155, -1152, -1145, -1145, -1141, -1141, -1137, -1135, -1133, -1126, -1126, -1125, -1124, -1120, -1120, -1118, -1114, -1112, -1111, -1105, -1103, -1102, -1099, -1099, -1099, -1097, -1097, -1094, -1090, -1088, -1083, -1082, -1081, -1081, -1078, -1075, -1073, -1068, -1067, -1065, -1061, -1059, -1058, -1054, -1053, -1052, -1052, -1051, -1042, -1042, -1040, -1040, -1038, -1034, -1034, -1033, -1028, -1027, -1026, -1025, -1023, -1022, -1022, -1021, -1019, -1018, -1013, -1013, -1012, -1011, -1009, -1009, -1005, -1003, -1003, -999, -991, -991, -990, -990, -988, -988, -987, -987, -982, -979, -977, -974, -967, -961, -960, -955, -950, -949, -944, -943, -942, -938, -937, -937, -934, -932, -931, -931, -929, -926, -923, -921, -920, -919, -918, -916, -915, -909, -908, -907, -905, -904, -903, -902, -899, -891, -891, -887, -886, -881, -881, -880, -879, -877, -876, -876, -875, -875, -869, -869, -869, -865, -863, -860, -860, -857, -857, -857, -856, -848, -848, -847, -845, -844, -842, -840, -836, -835, -834, -832, -831, -831, -824, -818, -808, -804, -802, -800, -796, -796, -793, -791, -785, -785, -785, -779, -777, -773, -772, -772, -767, -766, -765, -765, -764, -763, -753, -753, -747, -744, -742, -739, -739, -732, -732, -732, -731, -727, -724, -724, -723, -722, -719, -714, -711, -711, -708, -707, -706, -705, -704, -702, -701, -700, -699, -699, -698, -698, -696, -695, -694, -693, -693, -692, -688, -684, -681, -680, -679, -679, -674, -674, -672, -670, -669, -668, -665, -665, -665, -664, -664, -663, -663, -658, -657, -655, -649, -647, -645, -645, -641, -641, -639, -637, -637, -632, -632, -629, -628, -628, -627, -626, -623, -623, -622, -622, -621, -620, -618, -617, -616, -614, -612, -607, -606, -604, -604, -600, -598, -598, -594, -592, -592, -592, -585, -585, -582, -580, -578, -577, -576, -574, -572, -571, -570, -567, -567, -565, -563, -563, -560, -557, -553, -549, -549, -546, -545, -541, -540, -539, -537, -537, -536, -534, -533, -532, -527, -523, -518, -517, -515, -514, -514, -513, -513, -512, -510, -509, -505, -504, -502, -501, -501, -499, -499, -498, -495, -495, -491, -490, -488, -478, -476, -475, -474, -471, -468, -467, -466, -458, -456, -454, -453, -450, -439, -439, -436, -434, -434, -434, -432, -429, -429, -427, -426, -410, -409, -408, -408, -408, -406, -406, -404, -401, -398, -397, -397, -394, -392, -391, -390, -388, -386, -385, -385, -383, -383, -380, -380, -379, -374, -371, -363, -360, -355, -353, -353, -350, -349, -348, -347, -347, -347, -344, -343, -341, -340, -338, -338, -335, -333, -332, -331, -330, -327, -327, -325, -324, -324, -322, -321, -320, -319, -316, -313, -312, -308, -307, -305, -304, -302, -300, -298, -294, -291, -289, -289, -287, -287, -286, -284, -282, -276, -272, -265, -264, -261, -261, -260, -259, -253, -252, -244, -244, -243, -241, -240, -240, -239, -232, -231, -231, -230, -230, -228, -227, -222, -222, -220, -219, -217, -215, -214, -208, -207, -206, -206, -205, -204, -203, -201, -200, -198, -198, -194, -191, -191, -190, -185, -183, -181, -180, -176, -173, -172, -162, -161, -159, -159, -156, -153, -148, -147, -146, -145, -143, -142, -137, -136, -136, -135, -135, -135, -134, -133, -133, -129, -129, -126, -121, -121, -120, -120, -119, -119, -119, -118, -117, -116, -115, -114, -112, -110, -107, -105, -103, -103, -101, -101, -100, -98, -97, -97, -94, -94, -91, -89, -86, -75, -71, -65, -64, -63, -62, -61, -60, -57, -56, -51, -50, -49, -49, -48, -47, -47, -47, -45, -43, -42, -39, -35, -35, -35, -33, -33, -32, -27, -27, -27, -26, -22, -22, -22, -20, -14, -12, -12, -12, -5, -4, -4, -2, -2, 0, 3, 5, 8, 9, 13, 14, 14, 15, 19, 21, 21, 22, 26, 31, 33, 36, 36, 37, 37, 40, 45, 46, 47, 47, 52, 53, 56, 59, 59, 59, 59, 61, 62, 63, 63, 63, 64, 72, 72, 79, 81, 82, 83, 84, 86, 88, 94, 95, 96, 99, 101, 101, 103, 104, 104, 104, 105, 111, 112, 112, 119, 119, 120, 120, 123, 124, 125, 129, 129, 136, 139, 139, 143, 143, 144, 146, 146, 147, 150, 151, 153, 153, 155, 159, 161, 161, 168, 174, 177, 179, 179, 182, 183, 184, 187, 188, 190, 191, 193, 194, 194, 194, 195, 195, 195, 196, 196, 197, 198, 200, 201, 201, 201, 203, 206, 207, 207, 208, 209, 211, 212, 213, 214, 218, 219, 221, 225, 226, 227, 230, 230, 230, 243, 243, 243, 243, 246, 246, 247, 248, 250, 253, 253, 256, 256, 258, 259, 261, 261, 262, 268, 271, 274, 274, 277, 278, 279, 280, 288, 290, 291, 291, 293, 294, 296, 298, 306, 308, 309, 310, 311, 314, 315, 320, 322, 327, 327, 328, 329, 333, 335, 335, 337, 340, 341, 341, 343, 343, 344, 348, 351, 351, 353, 355, 357, 358, 358, 359, 361, 369, 369, 369, 370, 374, 375, 377, 381, 385, 385, 385, 387, 392, 394, 395, 396, 397, 404, 408, 409, 412, 415, 418, 419, 420, 424, 424, 424, 427, 428, 430, 431, 432, 433, 435, 439, 440, 446, 447, 447, 450, 452, 455, 455, 457, 458, 459, 464, 466, 468, 470, 472, 476, 477, 480, 483, 483, 486, 486, 487, 491, 492, 494, 496, 497, 501, 502, 505, 505, 506, 506, 508, 511, 515, 517, 518, 522, 529, 531, 533, 537, 539, 545, 547, 548, 550, 553, 554, 559, 560, 561, 561, 561, 561, 564, 565, 565, 568, 570, 572, 582, 587, 588, 589, 593, 598, 601, 602, 603, 605, 610, 615, 616, 616, 617, 618, 619, 620, 620, 620, 620, 622, 633, 633, 634, 636, 640, 640, 641, 643, 643, 643, 643, 645, 646, 652, 653, 655, 660, 668, 674, 674, 675, 676, 676, 679, 681, 683, 685, 688, 693, 694, 697, 697, 699, 699, 700, 700, 706, 707, 707, 708, 711, 713, 714, 714, 718, 718, 719, 723, 729, 729, 729, 730, 730, 731, 732, 738, 738, 740, 741, 745, 745, 746, 747, 748, 751, 752, 755, 760, 761, 765, 765, 766, 769, 769, 769, 772, 775, 777, 778, 778, 778, 778, 779, 786, 788, 790, 791, 791, 792, 793, 794, 794, 796, 797, 797, 800, 802, 803, 803, 806, 806, 807, 808, 809, 810, 810, 812, 814, 814, 817, 818, 818, 822, 825, 825, 829, 830, 832, 836, 841, 842, 844, 844, 851, 854, 862, 872, 873, 878, 878, 878, 884, 885, 887, 887, 889, 889, 891, 895, 895, 896, 898, 899, 901, 901, 902, 905, 906, 907, 907, 908, 912, 915, 915, 918, 920, 921, 922, 923, 926, 929, 930, 931, 933, 933, 934, 937, 938, 938, 939, 941, 941, 944, 947, 949, 949, 949, 954, 955, 958, 959, 960, 961, 962, 970, 971, 971, 973, 974, 975, 978, 980, 985, 988, 990, 992, 993, 994, 999, 1005, 1011, 1015, 1016, 1016, 1018, 1020, 1021, 1022, 1024, 1027, 1028, 1028, 1030, 1031, 1033, 1042, 1042, 1045, 1045, 1047, 1050, 1051, 1052, 1052, 1054, 1054, 1064, 1064, 1068, 1070, 1071, 1073, 1074, 1076, 1082, 1082, 1082, 1083, 1084, 1085, 1086, 1093, 1094, 1095, 1097, 1097, 1099, 1100, 1107, 1108, 1109, 1111, 1112, 1113, 1120, 1122, 1126, 1126, 1129, 1132, 1132, 1133, 1133, 1134, 1136, 1137, 1138, 1139, 1140, 1141, 1143, 1146, 1147, 1148, 1153, 1153, 1155, 1155, 1155, 1157, 1158, 1158, 1174, 1181, 1181, 1186, 1186, 1189, 1191, 1192, 1195, 1196, 1197, 1199, 1207, 1207, 1208, 1208, 1208, 1209, 1217, 1224, 1225, 1225, 1230, 1232, 1232, 1233, 1234, 1234, 1237, 1238, 1239, 1240, 1243, 1243, 1243, 1246, 1247, 1255, 1261, 1261, 1264, 1271, 1273, 1273, 1274, 1276, 1277, 1278, 1279, 1284, 1285, 1286, 1290, 1290, 1290, 1290, 1291, 1293, 1295, 1301, 1303, 1305, 1307, 1309, 1309, 1312, 1312, 1313, 1315, 1315, 1315, 1316, 1317, 1317, 1319, 1323, 1324, 1328, 1329, 1329, 1336, 1336, 1338, 1339, 1341, 1342, 1346, 1349, 1351, 1357, 1359, 1361, 1362, 1362, 1364, 1365, 1367, 1367, 1374, 1375, 1377, 1379, 1379, 1382, 1382, 1382, 1383, 1385, 1385, 1389, 1391, 1392, 1393, 1396, 1409, 1409, 1411, 1413, 1415, 1418, 1420, 1422, 1422, 1423, 1424, 1426, 1433, 1434, 1435, 1437, 1437, 1441, 1442, 1442, 1443, 1443, 1444, 1445, 1445, 1447, 1447, 1449, 1450, 1450, 1452, 1453, 1457, 1458, 1459, 1459, 1460, 1462, 1462, 1465, 1468, 1469, 1470, 1472, 1473, 1474, 1476, 1476, 1477, 1478, 1480, 1482, 1484, 1486, 1491, 1493, 1494, 1498, 1502, 1505, 1507, 1509, 1511, 1512, 1515, 1515, 1517, 1517, 1518, 1520, 1520, 1522, 1527, 1528, 1528, 1530, 1532, 1532, 1533, 1534, 1534, 1540, 1543, 1543, 1544, 1546, 1547, 1548, 1550, 1552, 1557, 1562, 1566, 1566, 1570, 1574, 1575, 1577, 1579, 1580, 1580, 1581, 1584, 1585, 1586, 1586, 1597, 1602, 1604, 1610, 1611, 1611, 1611, 1612, 1612, 1612, 1613, 1617, 1617, 1624, 1626, 1627, 1631, 1632, 1634, 1634, 1638, 1639, 1641, 1642, 1642, 1644, 1644, 1644, 1644, 1647, 1647, 1649, 1651, 1654, 1655, 1661, 1663, 1664, 1667, 1673, 1674, 1674, 1675, 1677, 1679, 1680, 1680, 1680, 1684, 1684, 1685, 1687, 1688, 1688, 1688, 1690, 1693, 1694, 1695, 1695, 1696, 1696, 1701, 1703, 1703, 1705, 1717, 1718, 1718, 1720, 1722, 1728, 1729, 1731, 1732, 1734, 1734, 1734, 1737, 1739, 1742, 1745, 1745, 1749, 1749, 1749, 1754, 1755, 1757, 1764, 1768, 1769, 1770, 1773, 1778, 1779, 1780, 1783, 1784, 1787, 1788, 1789, 1796, 1796, 1797, 1801, 1804, 1805, 1808, 1809, 1810, 1810, 1815, 1816, 1817, 1829, 1832, 1832, 1832, 1833, 1834, 1836, 1836, 1843, 1844, 1845, 1847, 1847, 1847, 1848, 1849, 1850, 1851, 1854, 1856, 1857, 1858, 1859, 1861, 1864, 1864, 1864, 1867, 1873, 1875, 1876, 1880, 1882, 1882, 1882, 1883, 1887, 1891, 1892, 1899, 1900, 1902, 1907, 1908, 1908, 1914, 1914, 1923, 1924, 1924, 1927, 1929, 1932, 1932, 1935, 1935, 1943, 1944, 1945, 1945, 1946, 1951, 1952, 1953, 1956, 1958, 1966, 1966, 1966, 1968, 1970, 1973, 1975, 1975, 1976, 1977, 1980, 1981, 1982, 1983, 1986, 1986, 1993, 1994, 2000, 2002, 2003, 2004, 2005, 2009, 2011, 2011, 2011, 2012, 2013, 2015, 2016, 2017, 2021, 2022, 2023, 2023, 2026, 2029, 2030, 2033, 2037, 2041, 2043, 2043, 2044, 2045, 2053, 2056, 2073, 2074, 2081, 2083, 2089, 2092, 2092, 2094, 2095, 2097, 2098, 2099, 2103, 2103, 2106, 2114, 2114, 2121, 2125, 2125, 2126, 2127, 2130, 2133, 2133, 2139, 2142, 2149, 2150, 2156, 2157, 2160, 2161, 2161, 2162, 2169, 2171, 2171, 2174, 2175, 2178, 2178, 2179, 2182, 2183, 2188, 2190, 2191, 2192, 2192, 2195, 2198, 2203, 2204, 2205, 2207, 2207, 2207, 2209, 2209, 2210, 2211, 2212, 2215, 2220, 2221, 2223, 2227, 2228, 2228, 2229, 2234, 2235, 2236, 2236, 2238, 2240, 2247, 2249, 2249, 2251, 2253, 2257, 2259, 2262, 2266, 2267, 2273, 2279, 2280, 2282, 2285, 2289, 2290, 2292, 2294, 2297, 2301, 2302, 2305, 2309, 2309, 2310, 2314, 2316, 2320, 2321, 2322, 2330, 2330, 2333, 2333, 2334, 2338, 2343, 2344, 2346, 2347, 2347, 2352, 2355, 2364, 2365, 2367, 2368, 2370, 2370, 2370, 2372, 2374, 2374, 2374, 2375, 2382, 2383, 2385, 2386, 2387, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2393, 2396, 2396, 2406, 2407, 2407, 2408, 2408, 2409, 2411, 2414, 2420, 2421, 2422, 2422, 2424, 2425, 2425, 2430, 2431, 2435, 2436, 2436, 2440, 2442, 2442, 2445, 2447, 2451, 2451, 2452, 2452, 2453, 2453, 2457, 2458, 2460, 2461, 2464, 2465, 2468, 2470, 2471, 2471, 2477, 2478, 2480, 2485, 2485, 2486, 2486, 2486, 2486, 2487, 2488, 2488, 2495, 2497, 2500, 2500, 2500, 2501, 2502, 2503, 2512, 2515, 2517, 2519, 2519, 2523, 2526, 2528, 2528, 2531, 2534, 2536, 2537, 2537, 2538, 2540, 2541, 2543, 2543, 2544, 2547, 2548, 2548, 2553, 2558, 2560, 2560, 2561, 2564, 2570, 2572, 2581, 2583, 2588, 2588, 2588, 2589, 2591, 2597, 2600, 2606, 2606, 2610, 2610, 2615, 2616, 2616, 2618, 2621, 2621, 2624, 2624, 2626, 2629, 2630, 2632, 2632, 2635, 2637, 2638, 2644, 2644, 2645, 2646, 2648, 2651, 2652, 2654, 2655, 2663, 2674, 2676, 2678, 2681, 2681, 2683, 2687, 2689, 2691, 2694, 2695, 2697, 2698, 2698, 2701, 2702, 2703, 2704, 2709, 2709, 2711, 2712, 2714, 2716, 2717, 2719, 2720, 2721, 2721, 2725, 2732, 2734, 2739, 2740, 2742, 2742, 2742, 2747, 2749, 2753, 2756, 2764, 2766, 2768, 2771, 2772, 2776, 2781, 2782, 2783, 2783, 2786, 2786, 2787, 2788, 2789, 2792, 2792, 2794, 2797, 2798, 2800, 2801, 2805, 2807, 2808, 2810, 2818, 2818, 2823, 2828, 2830, 2831, 2831, 2831, 2833, 2834, 2837, 2837, 2838, 2842, 2845, 2847, 2848, 2849, 2853, 2854, 2854, 2855, 2856, 2867, 2875, 2875, 2880, 2880, 2884, 2894, 2896, 2902, 2906, 2910, 2910, 2913, 2919, 2920, 2925, 2926, 2929, 2929, 2930, 2931, 2934, 2935, 2938, 2941, 2945, 2949, 2951, 2954, 2954, 2956, 2958, 2958, 2959, 2960, 2960, 2964, 2964, 2969, 2969, 2975, 2977, 2981, 2983, 2984, 2986, 2987, 2988, 2990, 2992, 3001, 3003, 3006, 3007, 3009, 3009, 3010, 3011, 3011, 3016, 3027, 3028, 3028, 3029, 3031, 3032, 3032, 3033, 3035, 3039, 3043, 3044, 3045, 3048, 3050, 3051, 3054, 3055, 3055, 3056, 3058, 3061, 3063, 3064, 3068, 3069, 3070, 3070, 3072, 3073, 3073, 3075, 3079, 3079, 3079, 3081, 3084, 3086, 3091, 3093, 3097, 3098, 3100, 3102, 3102, 3103, 3103, 3103, 3117, 3118, 3119, 3123, 3127, 3128, 3128, 3129, 3129, 3136, 3136, 3137, 3140, 3140, 3142, 3144, 3144, 3146, 3147, 3149, 3153, 3154, 3156, 3157, 3158, 3158, 3159, 3161, 3163, 3166, 3167, 3168, 3169, 3170, 3171, 3173, 3181, 3185, 3186, 3187, 3188, 3188, 3191, 3191, 3192, 3195, 3196, 3202, 3203, 3203, 3206, 3209, 3210, 3210, 3210, 3210, 3215, 3222, 3225, 3227, 3238, 3243, 3251, 3253, 3255, 3255, 3256, 3258, 3258, 3258, 3261, 3263, 3264, 3265, 3265, 3267, 3271, 3272, 3275, 3282, 3282, 3285, 3287, 3289, 3291, 3294, 3296, 3297, 3299, 3299, 3300, 3303, 3303, 3304, 3306, 3311, 3323, 3325, 3326, 3326, 3326, 3327, 3331, 3333, 3333, 3340, 3340, 3342, 3347, 3347, 3350, 3351, 3353, 3354, 3360, 3361, 3362, 3369, 3370, 3371, 3375, 3378, 3379, 3381, 3381, 3382, 3384, 3384, 3384, 3385, 3386, 3387, 3388, 3391, 3392, 3392, 3393, 3394, 3396, 3397, 3397, 3403, 3405, 3405, 3411, 3412, 3414, 3423, 3429, 3429, 3430, 3431, 3433, 3439, 3445, 3447, 3448, 3453, 3455, 3455, 3457, 3461, 3462, 3463, 3463, 3466, 3466, 3469, 3475, 3476, 3477, 3482, 3483, 3485, 3488, 3494, 3497, 3498, 3498, 3499, 3499, 3503, 3503, 3507, 3509, 3510, 3513, 3521, 3521, 3523, 3523, 3528, 3532, 3533, 3534, 3538, 3541, 3544, 3550, 3554, 3557, 3558, 3558, 3558, 3563, 3565, 3568, 3569, 3570, 3576, 3577, 3579, 3582, 3584, 3586, 3589, 3589, 3592, 3593, 3597, 3598, 3604, 3607, 3607, 3609, 3612, 3612, 3613, 3615, 3616, 3616, 3617, 3627, 3628, 3630, 3630, 3634, 3636, 3637, 3637, 3640, 3641, 3644, 3645, 3646, 3647, 3648, 3649, 3649, 3650, 3650, 3650, 3651, 3651, 3652, 3652, 3654, 3658, 3661, 3661, 3663, 3665, 3666, 3666, 3666, 3667, 3669, 3670, 3671, 3672, 3674, 3675, 3679, 3679, 3682, 3685, 3690, 3691, 3691, 3695, 3695, 3697, 3697, 3698, 3698, 3699, 3704, 3704, 3705, 3707, 3708, 3709, 3709, 3709, 3711, 3714, 3716, 3718, 3720, 3721, 3723, 3723, 3724, 3725, 3728, 3731, 3731, 3732, 3733, 3737, 3737, 3738, 3739, 3741, 3741, 3742, 3747, 3750, 3752, 3757, 3758, 3758, 3759, 3764, 3767, 3767, 3770, 3770, 3770, 3774, 3776, 3779, 3782, 3785, 3787, 3790, 3796, 3799, 3799, 3802, 3803, 3808, 3813, 3813, 3815, 3818, 3818, 3819, 3821, 3822, 3822, 3826, 3832, 3838, 3840, 3843, 3844, 3845, 3848, 3849, 3850, 3861, 3861, 3861, 3863, 3864, 3864, 3864, 3870, 3871, 3874, 3875, 3875, 3884, 3885, 3888, 3889, 3889, 3892, 3893, 3893, 3894, 3895, 3897, 3898, 3900, 3901, 3902, 3903, 3903, 3903, 3905, 3912, 3912, 3912, 3914, 3917, 3921, 3921, 3925, 3925, 3928, 3928, 3929, 3929, 3933, 3936, 3938, 3940, 3942, 3948, 3949, 3950, 3953, 3956, 3956, 3966, 3968, 3969, 3974, 3978, 3980, 3980, 3988, 3990, 3990, 3991, 3994, 3996, 3999, 3999, 4004, 4004, 4004, 4004, 4008, 4012, 4012, 4016, 4020, 4023, 4025, 4026, 4030, 4031, 4032, 4044, 4046, 4046, 4048, 4049, 4050, 4051, 4056, 4059, 4071, 4071, 4074, 4082, 4085, 4087, 4087, 4093, 4099, 4100, 4101, 4102, 4104, 4113, 4113, 4113, 4114, 4115, 4117, 4118, 4118, 4119, 4121, 4123, 4124, 4125, 4125, 4128, 4128, 4129, 4129, 4130, 4131, 4132, 4139, 4140, 4142, 4145, 4146, 4147, 4151, 4153, 4155, 4156, 4158, 4161, 4167, 4169, 4169, 4170, 4171, 4171, 4171, 4172, 4173, 4174, 4175, 4179, 4181, 4182, 4183, 4184, 4185, 4188, 4190, 4191, 4196, 4196, 4196, 4198, 4200, 4202, 4205, 4208, 4211, 4211, 4215, 4215, 4217, 4217, 4221, 4223, 4224, 4225, 4227, 4228, 4229, 4231, 4231, 4232, 4235, 4237, 4237, 4239, 4242, 4243, 4248, 4249, 4251, 4258, 4260, 4260, 4261, 4263, 4263, 4265, 4265, 4265, 4265, 4270, 4273, 4275, 4276, 4279, 4279, 4283, 4288, 4291, 4291, 4291, 4292, 4294, 4296, 4298, 4302, 4302, 4302, 4307, 4309, 4309, 4316, 4316, 4317, 4324, 4325, 4325, 4327, 4331, 4332, 4337, 4341, 4343, 4344, 4344, 4346, 4349, 4351, 4352, 4354, 4355, 4355, 4356, 4356, 4357, 4359, 4362, 4373, 4374, 4377, 4379, 4380, 4384, 4388, 4389, 4391, 4393, 4393, 4395, 4395, 4404, 4404, 4413, 4414, 4415, 4417, 4417, 4422, 4424, 4425, 4426, 4426, 4427, 4427, 4428, 4431, 4434, 4434, 4436, 4440, 4440, 4441, 4442, 4442, 4445, 4447, 4450, 4451, 4451, 4453, 4456, 4457, 4460, 4460, 4461, 4463, 4463, 4468, 4470, 4470, 4470, 4470, 4472, 4473, 4473, 4474, 4476, 4476, 4480, 4480, 4480, 4483, 4484, 4486, 4487, 4492, 4493, 4493, 4498, 4499, 4503, 4503, 4503, 4506, 4512, 4514, 4515, 4519, 4522, 4523, 4525, 4527, 4528, 4529, 4530, 4533, 4534, 4535, 4536, 4539, 4544, 4547, 4549, 4551, 4553, 4554, 4555, 4555, 4561, 4563, 4564, 4566, 4567, 4568, 4570, 4571, 4572, 4573, 4573, 4573, 4574, 4574, 4575, 4577, 4581, 4581, 4586, 4586, 4586, 4592, 4594, 4598, 4599, 4601, 4603, 4604, 4608, 4614, 4618, 4618, 4622, 4624, 4625, 4628, 4629, 4632, 4633, 4633, 4634, 4635, 4635, 4637, 4638, 4638, 4638, 4639, 4640, 4643, 4648, 4655, 4659, 4659, 4660, 4661, 4661, 4662, 4663, 4669, 4670, 4671, 4673, 4673, 4676, 4680, 4681, 4681, 4681, 4681, 4681, 4683, 4689, 4690, 4691, 4691, 4693, 4696, 4700, 4701, 4701, 4705, 4707, 4709, 4711, 4713, 4715, 4718, 4721, 4725, 4727, 4728, 4728, 4729, 4732, 4733, 4734, 4735, 4736, 4743, 4743, 4749, 4749, 4749, 4749, 4750, 4754, 4754, 4757, 4757, 4758, 4759, 4763, 4766, 4766, 4770, 4771, 4771, 4772, 4773, 4773, 4773, 4776, 4782, 4783, 4786, 4787, 4788, 4789, 4791, 4794, 4795, 4804, 4807, 4808, 4810, 4812, 4812, 4813, 4813, 4814, 4814, 4814, 4815, 4815, 4818, 4818, 4819, 4821, 4822, 4823, 4824, 4825, 4825, 4828, 4828, 4829, 4830, 4830, 4831, 4832, 4832, 4836, 4837, 4837, 4840, 4843, 4845, 4851, 4853, 4857, 4862, 4864, 4865, 4867, 4868, 4872, 4874, 4875, 4879, 4880, 4885, 4887, 4888, 4890, 4893, 4894, 4894, 4897, 4899, 4901, 4910, 4910, 4910, 4911, 4914, 4915, 4917, 4918, 4921, 4921, 4921, 4922, 4923, 4926, 4927, 4931, 4931, 4938, 4939, 4940, 4950, 4950, 4953, 4954, 4955, 4957, 4960, 4965, 4966, 4967, 4967, 4972, 4976, 4979, 4980, 4980, 4983, 4986, 4988, 4988, 4989, 4989, 4991, 4992, 4994, 4997, 4998, 4999, 4999, 5000, 5000]
goSort() result : True
def: goSort(), Execution time: 0.01600s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment