text:
function bubble_sort!(array::Vector{T}) where {T}
  for i = 1:length(array)
      flag = false
      for j = 1:(length(array)-i)
          if array[j] > array[j+1]
              array[j], array[j+1] = array[j+1], array[j]
          end
      end

      if flag
          return
      end
  end
end

toSort = [67936, 71575, 38131, 75977, 87675, 11835, 95750, 44117, 54989, 31973, 68654, 16879, 69754, 30883, 42574, 35105, 61937, 70186, 18227, 38960, 39539, 1792, 80431, 96115, 5153, 40667, 33957, 43616, 76579, 39304, 38686, 5993, 7084, 53912, 97265, 95899, 21007, 99584, 68834, 33643, 9765, 36737, 55238, 95663, 73708, 96346, 76661, 71334, 38737, 57714, 2698, 24047, 26019, 63752, 71685, 52002, 57359, 84252, 65830, 60433, 45023, 96646, 28964, 70046, 68822, 15752, 91818, 85461, 19226, 21825, 11950, 38424, 2112, 67037, 49323, 97978, 33876, 57661, 19601, 9037, 11921, 49033, 7451, 38043, 16930, 71991, 89204, 33551, 3742, 68247, 54707, 89685, 1462, 5776, 50754, 83929, 27219, 84640, 32353, 96248, 5258, 66412, 25477, 85634, 2883, 97823, 45949, 4871, 66270, 17151, 40706, 31782, 46700, 30913, 6913, 86907, 76185, 41384, 74341, 53078, 48936, 82287, 6699, 75868, 3486, 60511, 80562, 42316, 80965, 87985, 99807, 19054, 40436, 51769, 79832, 58549, 73932, 63959, 60027, 61944, 18866, 12005, 98762, 16863, 5412, 97230, 53777, 34034, 29697, 66971, 97135, 90858, 21155, 67365, 59705, 97358, 22220, 8852, 69038, 33160, 34178, 15151, 30381, 89232, 4850, 39773, 29846, 69055, 60134, 89501, 51520, 33728, 79212, 53905, 97316, 51528, 56344, 2202, 66723, 58975, 43011, 2378, 91027, 85928, 66691, 81303, 89288, 83425, 20653, 67291, 7331, 51113, 60964, 35633, 68598, 92787, 65346, 84872, 8271, 72383, 30022, 24460, 72467, 59227, 20591, 64962, 72837, 2456, 10774, 88411, 51243, 53621, 35073, 84275, 23299, 65482, 22825, 71552, 7607, 38050, 87914, 27264, 81345, 32152, 89202, 80707, 26392, 45256, 13273, 96313, 93507, 70891, 48553, 28686, 76986, 24664, 20361, 50965, 7177, 62624, 88789, 32206, 37269, 41743, 20225, 56763, 84989, 53472, 81176, 11215, 50973, 95088, 31631, 91194, 35418, 64130, 60719, 1303, 8305, 13088, 73548, 90770, 17318, 476, 28234, 78860, 49541, 72528, 91691, 97699, 20210, 17312, 93087, 97902, 84866, 6795, 73282, 57140, 91615, 41493, 41066, 12837, 18020, 83282, 59595, 92713, 17335, 75279, 21398, 3178, 12701, 53159, 66292, 12886, 10054, 34684, 65933, 44194, 74474, 29314, 13196, 9332, 41797, 52761, 48402, 69787, 90625, 24878, 51012, 30423, 16117, 51673, 43899, 65672, 6147, 12572, 44157, 80920, 40736, 38198, 69875, 26496, 20906, 39357, 32454, 24742, 44328, 45820, 92746, 8451, 52834, 60196, 23954, 55115, 93624, 34930, 89735, 8494, 66579, 70229, 47126, 88184, 46517, 65691, 76874, 92170, 88472, 75479, 41957, 19493, 37851, 46404, 90264, 24495, 18210, 49159, 24098, 22567, 30830, 54112, 45204, 756, 74090, 32602, 66310, 78820, 61144, 16003, 35139, 11114, 33999, 951, 30602, 34999, 75008, 39577, 21198, 36789, 71926, 22814, 56910, 13332, 76303, 47009, 21255, 39083, 17668, 71316, 88404, 25111, 72339, 64697, 31146, 66421, 93879, 96012, 75475, 70779, 257, 16005, 86059, 55117, 46312, 40120, 92375, 63520, 16333, 42824, 54264, 6965, 47226, 55019, 50424, 27008, 91540, 44176, 67279, 59070, 99869, 91282, 91213, 24308, 70668, 37330, 97884, 31041, 25878, 86548, 78213, 40431, 85845, 79201, 77772, 65967, 45909, 69737, 65849, 26217, 54901, 74499, 46052, 61549, 84531, 57606, 31357, 81000, 39109, 72165, 10155, 37748, 33819, 89605, 53262, 32153, 91777, 79275, 56418, 2131, 64946, 75828, 54665, 92732, 60729, 3410, 96292, 39221, 71948, 65225, 78918, 37004, 57619, 53819, 91409, 59633, 26216, 70631, 87301, 31671, 86083, 46951, 93128, 63625, 5822, 470, 79863, 11726, 37058, 40217, 69755, 78223, 53378, 96593, 92348, 793, 60125, 15845, 22295, 90722, 7118, 89586, 99545, 31446, 54880, 45243, 59124, 22115, 80141, 178, 69639, 26423, 56238, 57218, 33850, 53011, 84019, 44247, 42417, 71588, 25928, 14962, 18154, 1003, 7103, 81292, 67843, 70619, 31840, 85195, 59904, 63047, 47564, 51233, 87994, 31272, 16821, 61275, 57093, 49521, 71289, 83772, 79221, 98378, 31241, 23821, 53516, 38002, 14385, 968, 10612, 19560, 63088, 95551, 95466, 26274, 87764, 84641, 7243, 96299, 9210, 30193, 84509, 57023, 84719, 79761, 85076, 16145, 89325, 24490, 89692, 39321, 77723, 62630, 3381, 96856, 91949, 87800, 37904, 40824, 78352, 35511, 75589, 96483, 53278, 97605, 87821, 64792, 50867, 49832, 91422, 42799, 40241, 21199, 4541, 72696, 29741, 47150, 11508, 50476, 49077, 60535, 64669, 6993, 5257, 65930, 56911, 14469, 44432, 93491, 64947, 99324, 3933, 60924, 51861, 65142, 42235, 14854, 11633, 93412, 36908, 94581, 17459, 1619, 29049, 7385, 7025, 56490, 28, 49483, 73513, 92875, 80779, 86524, 22612, 2761, 76792, 75725, 77564, 2914, 58659, 13599, 23926, 5535, 47504, 78821, 766, 56163, 76183, 34062, 92583, 74230, 82069, 62634, 97015, 49535, 6630, 80637, 91633, 70910, 70757, 54977, 24568, 67791, 59401, 87145, 63556, 43075, 73194, 21795, 61628, 22995, 44461, 77587, 82235, 30064, 89432, 25194, 60353, 28751, 59988, 24033, 63908, 81597, 29031, 9407, 78335, 25847, 21952, 48654, 63412, 80092, 22592, 96936, 33464, 19118, 91784, 89561, 60120, 2663, 7033, 61663, 90385, 17142, 39351, 81773, 31221, 15617, 62156, 6979, 96814, 87929, 96994, 24647, 3079, 23067, 46183, 16856, 38281, 41498, 34692, 52653, 29519, 96512, 53716, 46969, 67396, 64766, 2486, 23002, 14966, 25440, 80466, 88252, 2495, 45043, 15339, 74911, 42026, 42469, 78076, 89557, 73620, 65125, 97478, 15016, 4794, 8442, 4338, 88875, 33659, 97472, 81106, 69499, 27293, 68797, 55080, 82809, 49591, 34421, 30420, 34955, 54166, 20526, 42366, 29910, 50088, 27917, 91684, 52072, 99379, 25909, 97751, 1028, 58972, 94220, 68969, 18598, 70809, 90306, 62733, 45001, 28598, 60373, 3662, 12637, 54172, 17874, 72066, 11900, 98830, 65454, 14840, 39068, 37968, 70059, 45698, 22186, 20778, 60145, 92949, 3774, 39287, 99251, 87208, 51078, 54679, 5447, 9402, 13188, 62945, 34159, 30544, 31983, 36960, 45626, 14180, 84324, 44012, 68764, 90489, 44740, 21528, 60702, 52726, 93690, 36408, 45633, 59277, 77849, 95841, 71217, 14993, 71519, 95141, 6461, 69407, 61360, 14224, 8093, 77091, 46220, 31131, 92773, 50137, 87055, 51290, 70688, 63755, 85368, 49135, 35279, 23376, 22093, 68453, 95506, 96571, 55968, 13985, 95487, 49844, 16872, 14113, 28384, 68748, 62632, 90200, 21510, 56387, 79086, 64038, 7750, 29116, 21693, 51924, 1505, 81941, 16689, 95476, 259, 9160, 29606, 93279, 58098, 11168, 3315, 83552, 83643, 5494, 61411, 45105, 59841, 71008, 56528, 16957, 86910, 82432, 86985, 30040, 58187, 8326, 44651, 89929, 12907, 36177, 29915, 37597, 57415, 65803, 95896, 89426, 83094, 83484, 75117, 7563, 25120, 88668, 78676, 31230, 59921, 55775, 80777, 16713, 16857, 2419, 35683, 41748, 88869, 22486, 58852, 19082, 70814, 91543, 55239, 962, 86492, 66250, 42345, 80098, 95429, 32570, 19372, 90455, 15038, 86647, 64664, 84072, 89546, 66372, 91582, 82007, 33591, 64940, 85042, 600, 95693, 46136, 11977, 35344, 5001, 89608, 79794, 59057, 37805, 50366, 86727, 90150, 56602, 94441, 81769, 8472, 33862, 82168, 30725, 32089, 76020, 70861, 86377, 3791, 19094, 24117, 9727, 66330, 18973, 24416, 83409, 68747, 43631, 98416, 30995, 84848, 49664, 89396, 3517, 8412, 52233, 67413, 80295, 1761, 97404, 53229, 86872, 84315, 23427, 89750, 67663, 27841, 37782, 63397, 10993, 4187, 53451, 46751, 87807, 1299, 81521, 15138, 46164, 77041, 65158, 68839, 88053, 94356, 60159, 93189, 58766, 67542, 57731, 44241, 28455, 34052, 73581, 989, 33081, 12535, 83539, 70333, 96054, 74781, 17825, 61747, 17103, 79577, 10576, 27374, 67192, 59236, 85356, 27396, 382, 39301, 14594, 44982, 79376, 46330, 96286, 20168, 47619, 68602, 58166, 84653, 87951, 72614, 75618, 19299, 61222, 95122, 96953, 35290, 26081, 78153, 92476, 26832, 16770, 26481, 38611, 1872, 40517, 3910, 73796, 32395, 24564, 37233, 24323, 34710, 18504, 26144, 60158, 15997, 4975, 90790, 53382, 91802, 37452, 6499, 52939, 87707, 58008, 85476, 56933, 32817, 63980, 720, 34758, 68738, 10983, 3402, 95116, 44273, 64232, 97426, 30556, 47664, 2704, 86183, 12056, 83813, 22218, 9934, 18700, 70346, 70236, 60183, 52148, 71987, 22407, 29501, 50272, 33344, 37842, 86616, 71218, 72914, 78393, 17348, 81433, 19221, 76694, 70112, 10769, 14490, 6625, 28084, 25406, 79129, 80029, 95209, 76584, 9468, 32058, 34077, 92463, 81264, 2696, 16858, 89775, 3992, 46551, 55910, 91344, 95513, 17681, 92849, 37927, 37095, 58371, 48222, 97467, 60316, 72686, 93976, 20036, 77224, 86189, 5185, 26697, 79567, 57485, 65382, 21011, 32613, 85629, 18531, 55113, 60062, 88253, 90443, 98986, 50328, 57626, 78276, 18677, 10934, 56152, 99817, 24202, 2558, 31292, 94650, 9894, 5453, 55770, 7865, 46690, 9187, 51626, 96435, 48786, 3085, 84093, 78744, 28461, 69247, 35620, 56678, 93104, 99361, 84304, 34068, 45107, 31432, 5750, 61492, 28279, 64949, 26503, 61692, 39665, 37547, 17643, 86667, 72708, 31049, 68798, 40303, 219, 86226, 23313, 60301, 84451, 10066, 88238, 95000, 74448, 70569, 41151, 33507, 70928, 49802, 98715, 33212, 23110, 26761, 2970, 57516, 86344, 54519, 19968, 5316, 4866, 29414, 2203, 1532, 58697, 90681, 97377, 26339, 74183, 26380, 79039, 82340, 28057, 32992, 50139, 99988, 60886, 24444, 57709, 33083, 82780, 54199, 62612, 20796, 58271, 87049, 45274, 39308, 54743, 62034, 87923, 85311, 80981, 79712, 60652, 92971, 81443, 20056, 69246, 646, 31500, 56702, 12449, 4489, 81567, 43033, 96713, 84039, 19929, 80066, 50461, 41463, 20296, 83844, 40400, 68426, 45077, 43606, 15217, 40208, 32259, 68524, 53471, 30624, 12055, 31331, 81709, 30082, 8998, 90234, 4091, 85028, 42706, 89257, 49693, 23638, 47965, 75160, 314, 84787, 70105, 84502, 7122, 64215, 40671, 38345, 76191, 52236, 29591, 81381, 49907, 52291, 66724, 85537, 25151, 76127, 83408, 82491, 17429, 62313, 29668, 53800, 34871, 42659, 50342, 7166, 73547, 20155, 59004, 94311, 84714, 19144, 66226, 67245, 67084, 89270, 69961, 28664, 4445, 51164, 28430, 68539, 19682, 30651, 68113, 92310, 42384, 31318, 85734, 53665, 86920, 91995, 70062, 15271, 47861, 16112, 71733, 27720, 80286, 24569, 60337, 91497, 50221, 20968, 90962, 38236, 35656, 24273, 53857, 88740, 16286, 58165, 24625, 44868, 44017, 65846, 43244, 33230, 39687, 80902, 92479, 64640, 23465, 18694, 32056, 54980, 97779, 46781, 57488, 13726, 11095, 18525, 35655, 52631, 68147, 68400, 36155, 15893, 4792, 81921, 49198, 87949, 45955, 11853, 91087, 25596, 23238, 3905, 30231, 66755, 66669, 61629, 53828, 17593, 8645, 65317, 85281, 89913, 78237, 53420, 69609, 5158, 99711, 8486, 71985, 34685, 29806, 21844, 87197, 46810, 29504, 42966, 18188, 59736, 26948, 3706, 27476, 64771, 42308, 97305, 3501, 97578, 71665, 82275, 77211, 31352, 21513, 50755, 45639, 67237, 32759, 10382, 93520, 75677, 13511, 23792, 90204, 89213, 27846, 83595, 66458, 86996, 39746, 83424, 58796, 30086, 67623, 89065, 48896, 98329, 63209, 85479, 71273, 51671, 24960, 11243, 68352, 53771, 23907, 62476, 37595, 3382, 70890, 49588, 97840, 66637, 43392, 58272, 87598, 16917, 46245, 57768, 184, 33370, 75480, 6743, 72209, 53679, 72968, 10834, 31589, 7158, 18551, 22477, 13174, 88258, 45432, 97373, 97290, 13956, 52187, 87802, 54437, 36268, 61557, 50578, 7057, 60465, 50699, 59560, 12348, 30340, 68844, 26181, 70031, 3705, 95280, 79607, 92639, 35565, 86126, 11741, 78869, 56176, 50552, 29633, 84366, 73858, 38560, 29006, 55651, 64705, 7909, 18051, 38813, 30868, 1189, 74989, 92474, 63045, 33719, 80234, 22739, 59787, 9650, 82246, 11794, 79570, 92530, 12598, 4289, 85773, 75103, 42877, 70657, 50648, 90553, 97988, 71153, 93692, 49753, 35876, 4407, 416, 88317, 42508, 31273, 44497, 1399, 4699, 80744, 68026, 32768, 91198, 70098, 57983, 12583, 1075, 25558, 41149, 75454, 49104, 11863, 57375, 8948, 62785, 75621, 94258, 35310, 82886, 94990, 9462, 56517, 32193, 31228, 5953, 8536, 86766, 82285, 4038, 77784, 61777, 39604, 41712, 4524, 72397, 43529, 48209, 38959, 40426, 61296, 10337, 54814, 74095, 54210, 16725, 21058, 78009, 56509, 9249, 27598, 32347, 92510, 30647, 17528, 77633, 7023, 48758, 53826, 75583, 38406, 12358, 62573, 38216, 62795, 81411, 49172, 43339, 95034, 86803, 23906, 2730, 16886, 29364, 8972, 63729, 97853, 42541, 45360, 3477, 51594, 16565, 3082, 52559, 19382, 58717, 83779, 46543, 9769, 31288, 61056, 34426, 41553, 87484, 49797, 45960, 388, 51953, 65434, 64827, 85009, 38843, 35573, 7296, 29103, 3101, 49304, 42579, 62716, 20738, 35231, 84293, 63974, 76257, 34250, 7280, 70575, 94423, 77945, 83694, 60742, 16616, 5413, 73899, 67701, 52237, 52636, 59551, 63456, 19157, 81196, 74105, 62705, 71328, 98666, 9206, 41566, 81352, 20367, 49401, 70074, 35071, 84220, 45225, 45499, 5714, 68866, 3989, 56869, 51462, 37559, 29418, 16645, 641, 86631, 26589, 96896, 74561, 53417, 4235, 25164, 12547, 16741, 83198, 39399, 71609, 50106, 24749, 45136, 27015, 85617, 4374, 73799, 62907, 50841, 37260, 4834, 42133, 77626, 69640, 74313, 94756, 23001, 91439, 95630, 19615, 33430, 58687, 55877, 84778, 31566, 27130, 66251, 99377, 78401, 72257, 80651, 66041, 35370, 32509, 64347, 16373, 5280, 53093, 12267, 48649, 56006, 32567, 15122, 94630, 30192, 9637, 50140, 62748, 29445, 43071, 78395, 21455, 84763, 26858, 46961, 27677, 44360, 23812, 84877, 36795, 49815, 92087, 84766, 94587, 16046, 805, 87561, 32586, 33055, 21639, 71790, 31874, 4564, 19540, 25513, 17196, 7153, 41723, 96772, 23913, 72654, 48601, 70410, 99285, 28009, 52446, 20471, 12822, 33084, 31694, 3570, 73033, 71066, 12085, 10997, 35272, 67455, 38332, 62963, 66237, 6090, 25413, 10400, 5303, 24449, 66182, 76372, 2622, 89230, 92418, 20923, 79718, 70072, 44924, 16395, 28427, 61950, 58912, 13198, 69633, 66623, 93316, 57933, 89728, 58031, 60507, 37036, 40425, 95640, 90269, 3407, 8086, 15983, 49599, 41436, 8369, 36388, 8453, 57637, 19726, 72227, 86506, 24156, 69456, 46357, 42980, 89157, 86039, 81676, 35273, 33526, 80262, 64825, 30807, 27382, 69679, 73331, 98421, 60689, 35331, 49824, 31603, 764, 64460, 25834, 88718, 55956, 84587, 43241, 95087, 95018, 62902, 35006, 24086, 78488, 21829, 24765, 48183, 60220, 12699, 89738, 87739, 36308, 50628, 93232, 59450, 18493, 19687, 97005, 99596, 19061, 72620, 93581, 46030, 33680, 98370, 53732, 12477, 95864, 59602, 38720, 91103, 94965, 25067, 41390, 47999, 78038, 46365, 20790, 53949, 25009, 54001, 66087, 55111, 65982, 23174, 71983, 73314, 43115, 61408, 47541, 1788, 85552, 96604, 43038, 22395, 82772, 43919, 64497, 17711, 46850, 74136, 31417, 90407, 18468, 3941, 1400, 17250, 98876, 57376, 14103, 26163, 61975, 31362, 96606, 94683, 17337, 29341, 83714, 10658, 12050, 60813, 43175, 66983, 44508, 29297, 97631, 23303, 17351, 24019, 6171, 46194, 41034, 80112, 24839, 59395, 40874, 62513, 10390, 92841, 89408, 13521, 18169, 67854, 55290, 85915, 62122, 87976, 9295, 6177, 68178, 64919, 26454, 80439, 4168, 38785, 15633, 49488, 3543, 74063, 61219, 85496, 40399, 42069, 83259, 85887, 45658, 31995, 75790, 97407, 86997, 94005, 24095, 28311, 62529, 43688, 28712, 14283, 18696, 5063, 8351, 48720, 96095, 619, 86152, 77380, 18079, 90171, 24590, 72747, 8829, 89729, 12324, 99519, 79908, 53054, 92770, 97137, 52887, 17908, 20639, 90719, 69502, 44455, 52642, 14420, 34258, 961, 7667, 68121, 87735, 52131, 41272, 91773, 19267, 37316, 44245, 17255, 41876, 30767, 59590, 99264, 81109, 67539, 16932, 47109, 17066, 1111, 27930, 32930, 99672, 2007, 18246, 5704, 36775, 12111, 42154, 38962, 32313, 44224, 56425, 96045, 38675, 68440, 54948, 6557, 76944, 26512, 39527, 92750, 39396, 25678, 29556, 43085, 54572, 15263, 59508, 66836, 18437, 82489, 56735, 15920, 85718, 98334, 10734, 15435, 16668, 8768, 84272, 5000, 45758, 76683, 62258, 57408, 60752, 88697, 61153, 97984, 68576, 73865, 38903, 81524, 65746, 42389, 97067, 61020, 74123, 86474, 16632, 57518, 19347, 34947, 20368, 39610, 22973, 45327, 13962, 68757, 71481, 3246, 27016, 62151, 47529, 98045, 21090, 18580, 72016, 97144, 90095, 34539, 64186, 83128, 79354, 24529, 23140, 7850, 74729, 88548, 69109, 31852, 29124, 30507, 83912, 53427, 33588, 70969, 69277, 96488, 68120, 67363, 38189, 22815, 20267, 1446, 67881, 51803, 8590, 2898, 46196, 39037, 35550, 15796, 96074, 62865, 62759, 36932, 90967, 86847, 73592, 89224, 46960, 10045, 58424, 62022, 19605, 17928, 36492, 1931, 70964, 33951, 66358, 86424, 33721, 34626, 31905, 37112, 69922, 57762, 10057, 58577, 41573, 32312, 271, 14709, 25091, 78570, 33298, 25059, 14625, 93090, 13980, 84155, 17818, 66491, 53891, 20962, 57688, 55327, 6891, 24190, 36474, 2909, 99140, 53337, 75837, 20634, 76104, 74773, 82937, 30935, 16269, 65804, 62031, 88659, 50460, 81614, 34525, 37248, 50919, 50535, 26182, 72741, 41018, 67649, 94810, 56142, 65630, 53463, 100000, 55802, 65593, 49509, 76973, 89451, 60633, 86987, 60463, 51889, 84859, 75486, 16696, 71107, 68118, 41332, 9482, 80383, 13978, 21444, 83106, 47183, 71151, 6412, 65881, 59884, 90533, 97029, 76270, 96991, 82513, 21281, 75993, 58052, 70559, 59104, 78428, 13466, 12464, 19149, 30148, 44162, 53115, 58960, 58207, 64561, 91036, 62579, 9417, 70342, 24838, 53431, 14316, 50631, 35724, 5051, 16896, 50773, 59187, 90607, 99231, 48057, 26919, 26319, 42283, 34712, 58698, 31856, 94089, 18742, 48032, 10181, 64991, 88591, 80363, 89475, 82089, 94141, 57000, 57191, 51009, 58170, 68261, 44094, 9891, 93357, 95824, 37906, 70613, 10595, 23828, 84017, 80835, 39203, 35138, 49953, 30924, 90544, 96877, 96090, 72088, 30546, 95318, 61077, 45572, 78290, 5504, 83955, 89244, 78635, 86229, 71862, 84290, 16056, 54515, 17167, 4880, 45681, 16927, 73082, 91424, 52527, 6041, 71699, 80124, 82680, 32969, 94933, 83410, 96279, 14039, 28006, 88765, 76461, 60378, 13032, 97619, 77212, 55142, 28539, 9038, 99355, 61834, 84704, 87556, 54371, 70486, 38314, 58433, 90319, 61850, 95851, 52262, 72439, 42190, 98205, 71618, 36359, 50747, 37756, 36229, 75581, 23880, 5925, 53237, 78414, 82214, 21673, 98623, 26599, 82236, 54997, 69957, 44627, 44385, 5170, 22099, 9851, 28652, 68262, 60829, 82012, 32101, 18994, 12345, 10901, 58311, 57120, 76529, 69582, 32182, 40525, 60229, 73047, 5770, 88952, 31136, 85130, 63658, 96318, 29358, 37240, 61015, 58392, 6640, 48471, 70549, 7557, 36425, 84044, 49419, 80010, 79260, 25230, 76306, 4326, 86775, 69596, 98753, 92943, 57245, 44749, 76580, 33018, 43029, 25889, 89263, 25856, 19770, 40304, 24354, 40510, 56876, 3883, 13007, 10591, 7139, 37492, 49862, 87120, 4865, 64300, 54150, 75499, 35000, 16550, 38136, 22828, 94514, 61854, 1188, 88963, 98796, 48079, 90727, 86669, 26284, 83550, 26621, 74945, 75809, 33414, 45333, 89672, 47656, 36564, 31947, 91140, 8312, 22707, 74426, 38683, 60045, 55141, 62372, 57552, 91091, 34530, 48020, 80582, 71230, 37249, 26233, 79096, 12938, 61608, 3528, 7266, 22927, 58768, 12491, 26748, 278, 51274, 4144, 26861, 7354, 83851, 77372, 2642, 97913, 46743, 67995, 8409, 98111, 34846, 46063, 33646, 68321, 85691, 23338, 1797, 54143, 27488, 40930, 98737, 81455, 98237, 96755, 92340, 72031, 45340, 7300, 68910, 57591, 29293, 43560, 46820, 42472, 98850, 61627, 2928, 43066, 60953, 94746, 51255, 42963, 8622, 88020, 83738, 25965, 63584, 2785, 28649, 63502, 25388, 40553, 98182, 76757, 24783, 64035, 56796, 44676, 24920, 34798, 19616, 55438, 1998, 26690, 49055, 42696, 78210, 34007, 66701, 38668, 31737, 26195, 94048, 73576, 43928, 79579, 72420, 17405, 89968, 31416, 47467, 89117, 74124, 62075, 70478, 36624, 27419, 72107, 46061, 15955, 73261, 80868, 13573, 19747, 44673, 30321, 60631, 7849, 25650, 19072, 25993, 8483, 56825, 47106, 68791, 53396, 25746, 91534, 87524, 68784, 62087, 49336, 30325, 49471, 73115, 46314, 16187, 40641, 42453, 89736, 58078, 32621, 3316, 75954, 94512, 99009, 21720, 26267, 17464, 68470, 79929, 83522, 67429, 42200, 69713, 31596, 41426, 42028, 55731, 25817, 18147, 3533, 99558, 46103, 20795, 12237, 38190, 58569, 15799, 66935, 34057, 4023, 8020, 7810, 65526, 6920, 48213, 93667, 71138, 14311, 96500, 98887, 87971, 54844, 27157, 30467, 10459, 3954, 24265, 57914, 50894, 39598, 51980, 6074, 23790, 80674, 53925, 5974, 83498, 95819, 66477, 92633, 52513, 1528, 18247, 17406, 7358, 37932, 64502, 73551, 15692, 80176, 32459, 75830, 43686, 34835, 14047, 44140, 75316, 47197, 89703, 15338, 95968, 89885, 11008, 44897, 49102, 43273, 16432, 3934, 81506, 37255, 51856, 18430, 18388, 45506, 45526, 29234, 54506, 8619, 97369, 29616, 15748, 89492, 12087, 31313, 27055, 13827, 29727, 79065, 32164, 48737, 43538, 38533, 49485, 52520, 56487, 78105, 87453, 45731, 59097, 65608, 47086, 83392, 97429, 52792, 54175, 96240, 6336, 78715, 9130, 20264, 55500, 134, 30776, 63090, 46549, 51513, 7770, 60187, 59665, 78238, 59398, 87580, 32736, 63408, 88586, 55581, 80704, 51105, 77157, 14438, 1507, 58357, 64753, 26105, 64634, 76621, 15659, 83161, 2192, 46363, 45521, 70103, 8624, 37005, 10268, 95459, 10497, 66857, 77307, 89933, 94461, 6213, 27377, 49940, 41809, 62084, 45576, 96958, 43874, 50224, 69993, 8618, 17770, 39818, 4192, 10048, 96145, 11381, 7096, 35767, 47300, 39553, 66804, 72935, 89087, 84917, 44493, 22766, 82230, 32114, 40626, 86448, 88249, 13218, 32782, 64228, 87965, 18417, 59764, 72304, 37633, 22077, 82867, 35560, 44519, 65632, 21436, 76733, 92683, 92091, 41916, 46417, 85308, 50836, 35494, 90151, 44528, 57884, 70083, 81603, 63195, 78441, 57631, 50748, 78473, 86300, 10038, 49650, 54985, 82003, 96864, 75973, 87992, 73648, 15664, 14109, 99363, 88803, 33778, 96521, 43266, 28224, 8132, 64768, 97301, 10872, 45254, 23519, 20753, 61366, 35191, 31896, 6019, 73491, 9642, 19720, 38115, 81471, 31307, 39045, 17019, 99388, 26046, 49531, 26395, 51157, 98880, 3861, 58961, 79441, 31912, 50138, 76309, 70981, 67625, 81419, 45632, 34207, 11578, 22269, 2644, 21475, 1356, 43263, 76960, 56665, 58994, 77805, 74672, 24942, 43530, 61058, 63513, 51797, 29271, 47559, 75508, 80586, 27249, 94723, 1141, 89823, 53915, 12113, 29287, 68604, 67043, 39707, 85842, 77760, 99284, 54255, 65758, 22193, 9489, 57909, 33343, 76347, 24906, 63304, 55279, 74447, 26428, 31517, 11002, 75886, 50497, 29530, 33940, 94467, 61516, 93948, 36515, 91567, 86080, 70883, 13649, 28780, 6582, 83691, 95875, 26271, 51419, 12272, 68862, 38465, 62936, 5737, 9216, 91530, 15892, 21008, 11494, 51191, 75591, 85726, 54976, 54479, 82127, 36709, 73401, 30617, 23527, 63099, 52635, 85830, 31421, 93563, 52114, 94946, 25682, 22033, 47713, 4413, 30746, 98404, 52230, 43041, 90285, 22132, 59132, 50764, 43976, 51120, 85120, 14451, 60780, 62142, 59225, 12201, 75409, 78605, 11239, 87983, 30480, 13983, 90594, 25791, 56522, 85766, 32117, 45844, 2983, 52116, 53281, 34882, 26664, 50819, 67186, 22433, 20314, 90649, 80452, 92704, 22705, 42450, 39523, 72665, 17309, 80506, 31766, 56179, 42206, 64136, 7543, 91273, 83829, 51829, 34009, 81636, 17169, 8983, 56056, 74056, 80573, 93847, 69955, 25384, 7888, 33257, 15246, 40800, 62490, 37170, 90624, 28940, 34521, 7923, 69570, 6683, 62697, 52193, 99499, 92305, 26126, 9083, 27323, 58305, 97309, 49786, 40236, 72142, 87578, 19325, 71213, 31738, 74436, 79462, 94827, 98720, 37378, 52920, 97826, 33068, 88726, 93689, 40070, 58401, 22422, 96865, 86430, 39904, 15231, 88862, 80405, 29760, 12589, 89074, 48023, 98466, 86951, 27922, 95347, 95160, 30124, 84136, 51531, 26139, 29976, 84394, 37151, 47042, 6472, 81309, 9955, 75187, 27415, 1612, 69547, 99428, 75405, 18431, 72081, 6031, 67297, 14005, 81166, 15258, 90486, 60426, 93446, 20376, 67511, 49699, 25924, 53868, 56828, 94576, 83572, 30354, 1290, 59833, 76118, 18283, 12136, 90518, 9246, 1695, 13593, 70201, 29652, 39947, 99799, 86484, 23525, 98714, 72544, 77140, 69029, 40716, 15924, 28850, 70748, 33283, 62839, 69189, 8571, 35834, 86444, 1910, 42000, 26060, 6938, 50715, 93059, 6647, 82834, 58273, 82758, 16007, 17117, 94329, 98013, 20933, 15504, 72683, 77063, 94883, 3771, 90447, 3509, 93411, 73988, 18244, 37896, 65631, 26173, 97768, 93398, 36300, 38856, 29561, 47483, 44719, 25987, 18048, 23230, 38980, 38603, 15941, 91542, 15482, 26972, 97944, 78531, 28309, 66764, 70430, 81116, 31470, 53239, 73298, 4227, 74206, 54629, 54410, 87810, 25317, 55690, 98557, 135, 34442, 77635, 54457, 24319, 45331, 51855, 62845, 21963, 88638, 87702, 81779, 75186, 53520, 48094, 12668, 37816, 81534, 80386, 33567, 61048, 76369, 86830, 23686, 21271, 34227, 97267, 30993, 53017, 15095, 22241, 81732, 39637, 25272, 30400, 70318, 35451, 43086, 66379, 41669, 90831, 61051, 24823, 91051, 73834, 82186, 14851, 91147, 45522, 54824, 86279, 42311, 33139, 23023, 29185, 55261, 52012, 8797, 3339, 54975, 83223, 66010, 93552, 17311, 18333, 80258, 43018, 15898, 84812, 52957, 98066, 86203, 69485, 95842, 51480, 34143, 2356, 14591, 22320, 23561, 76854, 32096, 63585, 18999, 82751, 62274, 9356, 68578, 87661, 74837, 33159, 98901, 7390, 74733, 21923, 27112, 80735, 37736, 65810, 3530, 59669, 77636, 50353, 93504, 95550, 72001, 55530, 47358, 36588, 2688, 71248, 4811, 10502, 29355, 9846, 14268, 12419, 27389, 5784, 58950, 32884, 91895, 3479, 70341, 45992, 95721, 33535, 87388, 88489, 13953, 13387, 20554, 60722, 98496, 79595, 83203, 28421, 85809, 24050, 26699, 95764, 22378, 25165, 62272, 96120, 45911, 61891, 89926, 18931, 52258, 25010, 98607, 47761, 29211, 99591, 90326, 76676, 15912, 39584, 11618, 10907, 97691, 55588, 66922, 21030, 60547, 80369, 32268, 39475, 41228, 18681, 48496, 16421, 85729, 74806, 63007, 61862, 81958, 12545, 83411, 54318, 65440, 94290, 59280, 83987, 67507, 65871, 52537, 39675, 22494, 14498, 33014, 65030, 81446, 3218, 73715, 83359, 48188, 59688, 53158, 10419, 80552, 76937, 68713, 82669, 7458, 51167, 88403, 47655, 3383, 3681, 61807, 84650, 53022, 98259, 81788, 45558, 40074, 87740, 9021, 38177, 43600, 36818, 11136, 63512, 4549, 92094, 23983, 92805, 72206, 36833, 83875, 92519, 82437, 84910, 96472, 50034, 52371, 89574, 10318, 42403, 13035, 89276, 70914, 97754, 83872, 12131, 13663, 2879, 28844, 52169, 30313, 14615, 40587, 36464, 77523, 83521, 44099, 52389, 43743, 45998, 3908, 66528, 8966, 30843, 30760, 95099, 97946, 43517, 28808, 88216, 82320, 53894, 19451, 92329, 1894, 12490, 17586, 99256, 32225, 90798, 84739, 13170, 1243, 304, 50276, 17886, 18536, 94956, 42478, 96902, 64601, 4019, 35453, 41212, 32504, 25177, 92571, 61386, 97606, 54659, 56590, 69710, 6711, 35799, 81004, 90062, 32346, 79804, 61136, 12299, 31358, 3061, 52155, 87989, 19636, 27090, 24193, 2833, 9751, 41136, 49801, 1572, 34690, 15682, 36619, 43445, 9192, 65481, 86222, 59689, 24969, 68083, 3884, 70373, 18496, 92938, 25480, 99427, 48155, 94454, 79182, 78911, 96955, 13372, 21598, 73604, 61046, 45424, 68952, 90453, 34006, 52759, 49285, 87831, 15888, 13093, 93594, 17945, 88118, 78788, 35393, 65387, 23590, 66460, 86314, 32818, 56511, 79033, 95826, 57058, 75181, 20747, 36558, 35896, 41747, 81101, 89048, 47599, 95597, 1806, 63247, 12074, 78546, 66871, 10739, 41786, 77195, 56997, 3001, 15952, 83597, 74699, 85521, 34647, 63868, 59468, 4781, 83047, 98667, 76742, 58197, 78839, 7510, 96525, 10486, 41953, 14473, 79845, 96827, 13420, 5221, 50390, 36724, 77705, 19137, 71881, 49271, 27959, 1158, 69216, 97041, 48557, 38057, 53392, 37184, 53822, 1790, 36135, 4610, 89800, 1207, 82299, 56391, 13066, 66507, 67578, 35579, 62158, 39522, 77313, 66071, 11482, 55538, 74722, 4271, 69959, 853, 61878, 8570, 36716, 95595, 62255, 41305, 64901, 55624, 35856, 80542, 68459, 51700, 91998, 30825, 57364, 79087, 66954, 69866, 69504, 8747, 48740, 23964, 28302, 14870, 64110, 32221, 75720, 8439, 13604, 50928, 96412, 90558, 57597, 89298, 21437, 42285, 74403, 98415, 43106, 5635, 76224, 91981, 67682, 35376, 54663, 85473, 99047, 64802, 12801, 35992, 81003, 49321, 12156, 54225, 85233, 66286, 43405, 73967, 79919, 19709, 8079, 3601, 47494, 56960, 1429, 9375, 38643, 77262, 90227, 8673, 61292, 35360, 72223, 86015, 39847, 23085, 46983, 29908, 30915, 62412, 22776, 91240, 27793, 98829, 65441, 95478, 64127, 91416, 91399, 87089, 34898, 18683, 49708, 1260, 45461, 14852, 81955, 11086, 58123, 72111, 5222, 50206, 71558, 31578, 45306, 96775, 25873, 18754, 30155, 36884, 89082, 90969, 85136, 43067, 58923, 89811, 49609, 80007, 39056, 36861, 7878, 3968, 28958, 85738, 85559, 93333, 27752, 55629, 51097, 30765, 5821, 46478, 65304, 74983, 9322, 85643, 4718, 82735, 45989, 39389, 92691, 82890, 87251, 55286, 88560, 97548, 70630, 97804, 53555, 17970, 59210, 39764, 42632, 61801, 85715, 38996, 58606, 63909, 20073, 19498, 57616, 29506, 54090, 40711, 17934, 62983, 1571, 86664, 99263, 24428, 52699, 11249, 9690, 83497, 4731, 78950, 6867, 66428, 28846, 52543, 60495, 69657, 68041, 18315, 14506, 99265, 22854, 74402, 51590, 58079, 6663, 84692, 17896, 10661, 1782, 77527, 76749, 62648, 25842, 68397, 30672, 83624, 49553, 81815, 24693, 92311, 21903, 629, 84729, 24661, 38664, 22478, 89941, 29416, 64887, 96407, 31468, 2522, 21501, 73448, 36832, 61397, 1726, 89147, 89122, 69156, 20478, 233, 19708, 88574, 88628, 43775, 90403, 28848, 61804, 66095, 25594, 53942, 26653, 26908, 97081, 8402, 70770, 9324, 19178, 22644, 30932, 46559, 91766, 67549, 65229, 56769, 12108, 9405, 21105, 53786, 53042, 23727, 89083, 63906, 29995, 14723, 17251, 75037, 90909, 38884, 57831, 34093, 8233, 22347, 83407, 59098, 30089, 1946, 67411, 75273, 91813, 39493, 99718, 83701, 79767, 1499, 15384, 23609, 67633, 27116, 43441, 55191, 7395, 95324, 19609, 7064, 4732, 62195, 5529, 55791, 24588, 69306, 11336, 51353, 21662, 33126, 99258, 56025, 47534, 93888, 60591, 22732, 51432, 15201, 58217, 52170, 41283, 6199, 18313, 4058, 34243, 40089, 78776, 9214, 25582, 73364, 45315, 1745, 83988, 43112, 85020, 13183, 97352, 95486, 16902, 99249, 42320, 59733, 56079, 96997, 87799, 64876, 53247, 78118, 41357, 68482, 97774, 60088, 71841, 53003, 30555, 84385, 73220, 52678, 80734, 31204, 56792, 27823, 23150, 41380, 72407, 64847, 84929, 20501, 26022, 44985, 52510, 43990, 67018, 62722, 52734, 31524, 96384, 97468, 21898, 18137, 27442, 64815, 22349, 36454, 79335, 65923, 61647, 90117, 87760, 41403, 64722, 7368, 80267, 95735, 717, 26071, 9377, 19981, 32723, 87444, 52512, 42097, 16866, 52130, 3118, 27137, 72495, 64578, 92199, 11737, 56617, 92826, 27430, 92369, 74675, 62570, 20635, 83680, 13388, 39224, 94076, 28874, 29334, 62778, 77756, 95333, 21677, 61247, 81794, 77480, 21708, 9240, 19831, 46684, 77247, 40833, 21079, 32274, 61808, 3658, 66956, 49425, 71324, 76969, 35784, 11927, 18155, 67562, 44208, 29756, 61003, 13842, 20754, 23076, 84173, 43248, 40006, 44296, 3022, 11915, 2769, 52457, 43589, 57734, 70877, 16715, 1416, 19758, 67567, 3510, 71189, 89662, 42931, 74407, 45031, 56963, 21175, 10350, 83049, 30736, 363, 24375, 8067, 32706, 15742, 66277, 28543, 98211, 78127, 4411, 67272, 53695, 55497, 20979, 62110, 33764, 3271, 1968, 22196, 73136, 73628, 26799, 11189, 43782, 16303, 32707, 87140, 31205, 5541, 93505, 29751, 70420, 13662, 46822, 18986, 15627, 74808, 21292, 80429, 45137, 92290, 99791, 1052, 27332, 80125, 25469, 20170, 96932, 82998, 41538, 81795, 9476, 7682, 71743, 3140, 27701, 6852, 18791, 4050, 43546, 91708, 22820, 82243, 49490, 3916, 81275, 38256, 975, 50421, 48401, 51118, 83971, 54083, 26475, 12291, 20226, 21362, 10965, 26084, 89618, 95908, 14574, 4064, 72932, 69146, 12511, 87711, 28695, 11710, 7431, 95916, 11093, 96922, 34719, 5694, 94083, 3473, 75569, 71425, 42061, 36551, 42851, 50869, 15277, 73182, 4382, 68087, 62699, 81450, 77656, 17106, 36362, 90205, 61353, 98351, 29737, 20192, 6332, 33762, 52029, 2265, 42263, 54134, 7824, 46044, 3534, 63976, 19846, 39889, 69224, 47161, 2588, 50785, 97379, 26324, 37639, 64052, 76898, 37584, 71550, 48269, 37239, 22214, 55257, 83473, 55519, 87943, 69467, 79890, 39805, 53775, 63184, 76084, 9064, 72845, 71101, 62193, 54498, 31727, 25322, 29696, 36413, 83986, 58611, 85225, 48067, 50617, 73782, 30424, 39026, 91816, 77249, 68888, 37865, 38605, 4207, 72628, 67402, 41795, 51219, 90877, 85673, 79820, 32945, 87046, 18185, 21324, 68581, 38452, 68573, 25358, 2765, 30322, 17706, 97681, 79925, 72011, 14778, 76950, 82590, 512, 89021, 9119, 19529, 60720, 76626, 84399, 48705, 56357, 82934, 11656, 795, 65798, 33355, 36817, 33759, 57498, 60023, 19183, 67916, 83305, 64560, 68913, 61978, 9754, 51148, 58194, 41937, 14968, 36087, 37028, 16852, 46385, 25724, 48797, 15668, 17790, 31985, 54066, 65874, 38985, 92669, 69880, 23261, 23691, 40067, 22368, 66867, 92267, 15281, 81987, 31433, 47487, 49498, 67247, 45943, 49863, 26742, 73322, 23682, 50105, 55687, 58376, 70940, 10173, 56603, 2857, 43615, 82812, 89151, 53708, 68044, 10577, 19084, 65991, 85240, 7205, 75873, 93147, 93727, 68310, 55884, 12410, 79280, 51403, 16722, 87653, 87865, 89235, 2469, 24582, 54612, 63725, 25239, 71058, 91692, 74135, 48399, 57042, 7472, 1996, 92210, 35966, 46855, 99101, 32979, 30668, 89370, 62322, 64129, 61507, 17280, 86235, 26932, 83814, 79548, 69604, 29068, 54380, 89399, 64261, 18793, 56670, 47526, 40190, 62952, 27038, 15732, 6703, 34541, 32298, 76989, 37542, 45586, 5554, 61161, 63945, 79231, 818, 34961, 54600, 35446, 77539, 90195, 21691, 99935, 52025, 19049, 34992, 68252, 94004, 35951, 84452, 14846, 99757, 90278, 84705, 51599, 89140, 6145, 25561, 70771, 39348, 93523, 70041, 4193, 93998, 68531, 11487, 15346, 81241, 21664, 71167, 23225, 44488, 86246, 28529, 5370, 18929, 41229, 93071, 71602, 25931, 2891, 46650, 59283, 88876, 6464, 9283, 84387, 52845, 15773, 67029, 92122, 93649, 55725, 80324, 98947, 11988, 26183, 78735, 4911, 88676, 38750, 23368, 79290, 75990, 1231, 94303, 73424, 99914, 85050, 50101, 57255, 5131, 8606, 90352, 96747, 29380, 71474, 49686, 88508, 16607, 58508, 89077, 24712, 62154, 5172, 85904, 84046, 42205, 48003, 15389, 31716, 30595, 58316, 47759, 23849, 5452, 38453, 35163, 45828, 51901, 31946, 33456, 30111, 27979, 80971, 33703, 21624, 23919, 71072, 6603, 49173, 54909, 25439, 18465, 75706, 52890, 35031, 18589, 31672, 93668, 57037, 20126, 12636, 87716, 27095, 18344, 9928, 77844, 14953, 79227, 32246, 25115, 79273, 63260, 44812, 32878, 63457, 23857, 41140, 22998, 95289, 45101, 30345, 49714, 21381, 6806, 84021, 71063, 45402, 18379, 93249, 99887, 7412, 93117, 41888, 68801, 99825, 69847, 89380, 40149, 50518, 1608, 63541, 39591, 45606, 56539, 8858, 98603, 7347, 64917, 64712, 97972, 64980, 32099, 33238, 39294, 40533, 14819, 87421, 94234, 538, 34082, 86358, 21989, 5907, 59449, 73454, 86993, 36694, 97344, 35304, 30994, 25539, 88294, 76847, 87509, 93034, 17521, 26544, 20829, 60556, 88063, 74470, 60506, 20234, 40747, 61802, 82250, 64469, 50892, 62358, 27644, 59770, 11234, 2065, 10205, 25375, 48910, 23348, 51383, 21268, 23407, 84336, 39209, 76752, 86022, 63889, 33180, 16408, 92065, 90637, 36164, 79583, 62083, 25332, 88932, 78891, 77268, 97217, 66558, 70787, 5583, 18915, 58141, 68897, 4292, 31388, 93616, 29729, 43181, 10701, 43194, 95255, 36207, 97357, 72891, 68116, 48534, 66509, 55621, 65524, 14685, 38046, 13236, 97887, 67819, 86413, 57886, 59373, 1979, 20984, 19595, 87234, 91388, 10845, 69256, 7199, 79095, 36562, 18000, 84241, 38628, 14847, 18277, 19911, 83833, 87697, 92749, 12341, 80460, 91942, 35257, 24939, 98980, 74347, 92726, 92714, 17564, 33351, 90106, 11858, 48245, 93401, 18371, 32825, 67505, 29114, 23851, 36050, 26131, 42095, 79078, 81798, 34356, 91673, 30439, 30126, 64836, 73003, 25228, 93265, 4425, 75183, 92220, 63657, 18621, 65739, 53102, 90563, 59514, 70337, 80979, 75039, 14947, 68437, 9174, 7190, 32243, 1518, 37684, 79018, 90404, 71755, 23910, 79332, 80901, 87196, 94116, 771, 64470, 45897, 83095, 93971, 70837, 10588, 71473, 82348, 93124, 72115, 71278, 1002, 89762, 24949, 62849, 61872, 55307, 96271, 71915, 6059, 84461, 14626, 58163, 14789, 85519, 9948, 86326, 8141, 95340, 82926, 29767, 98769, 86110, 34410, 42011, 89534, 81366, 42565, 14655, 9075, 24072, 54740, 12894, 23599, 38401, 84621, 98611, 45560, 92609, 80510, 55015, 52737, 80365, 49037, 77040, 79903, 77791, 63339, 4381, 82133, 18669, 98465, 6101, 97408, 29999, 23515, 87673, 28116, 34206, 83189, 19018, 23615, 75660, 46771, 19335, 93091, 65065, 63570, 45778, 56181, 67111, 48853, 71599, 16257, 19792, 19678, 87118, 47551, 28370, 66000, 75151, 54257, 86880, 63425, 89734, 99330, 94118, 15835, 1568, 80065, 21335, 69815, 4805, 91514, 18138, 86149, 39333, 64729, 56236, 93905, 97412, 49352, 86493, 96846, 91272, 45957, 70858, 94283, 65961, 88907, 62218, 80354, 57272, 19435, 97769, 4135, 31620, 39731, 87646, 58399, 32490, 49744, 24457, 76447, 44526, 83271, 36288, 63659, 61774, 32581, 41032, 48983, 89684, 63321, 5960, 83358, 22236, 57940, 54928, 95800, 51069, 60847, 16012, 77191, 48451, 39016, 77163, 70321, 55149, 49422, 44843, 82972, 89991, 73826, 33615, 65725, 60293, 77661, 18279, 11970, 66521, 4902, 9663, 75528, 13283, 58096, 79074, 87325, 53104, 70146, 30125, 65634, 49452, 53666, 79878, 49167, 15939, 67460, 57065, 25912, 88225, 35672, 43514, 2950, 30804, 67610, 41557, 72104, 71258, 79430, 3318, 9403, 5065, 74731, 94978, 12532, 41513, 23989, 24688, 41990, 17957, 14205, 77000, 19883, 33065, 4634, 40112, 36894, 30610, 18221, 41378, 48307, 69546, 26567, 89849, 33088, 3497, 87724, 75057, 75765, 98804, 70540, 62690, 70805, 38511, 47528, 81545, 58013, 64102, 96542, 92582, 32797, 9306, 13240, 26825, 90377, 36819, 66066, 64048, 67771, 14278, 15458, 20422, 7002, 56437, 8798, 17669, 75339, 62048, 39830, 69048, 21612, 34332, 24458, 89343, 63655, 61874, 9137, 24116, 96476, 29434, 37033, 96092, 52883, 34156, 99688, 19488, 92251, 95074, 98172, 79945, 21034, 9886, 91257, 46842, 52083, 95959, 89617, 93781, 11631, 23260, 86858, 84953, 14684, 2132, 13774, 40690, 69008, 56957, 7169, 24362, 97665, 64838, 3464, 33345, 12179, 22614, 19016, 93285, 8927, 32159, 94608, 55899, 48394, 80114, 36841, 52937, 72348, 80103, 3356, 31605, 4431, 14671, 2328, 54868, 3046, 87212, 3062, 63471, 24148, 21458, 21213, 17373, 22544, 69647, 51330, 39485, 42794, 92968, 59714, 10494, 26170, 13639, 29834, 58591, 29309, 93943, 45624, 10174, 42612, 4554, 96592, 49177, 41248, 77409, 85315, 17979, 56635, 59661, 57782, 51979, 62836, 660, 63546, 10082, 87853, 97169, 51568, 37486, 73831, 52142, 69597, 68679, 95905, 50318, 72782, 83097, 40101, 39846, 1942, 20318, 71332, 76024, 11974, 57901, 17491, 12166, 6579, 53214, 40718, 58769, 14386, 5542, 69427, 1994, 96446, 84620, 50704, 54569, 88986, 60138, 98074, 54563, 66374, 69376, 83612, 85157, 11445, 42096, 93566, 34668, 8340, 26083, 900, 67909, 93492, 33616, 69160, 98672, 58650, 37027, 40792, 9826, 54752, 94721, 13340, 98042, 67099, 20937, 61014, 32997, 44341, 18783, 35999, 36532, 61709, 52055, 17608, 91611, 73893, 47659, 59772, 65503, 8594, 7219, 84783, 54996, 45796, 36735, 27187, 6010, 40527, 62076, 36384, 11979, 96983, 89274, 30004, 7466, 12040, 35463, 30254, 95558, 67551, 20759, 25952, 56259, 95503, 29261, 79505, 3881, 82964, 82001, 10103, 36478, 19015, 95188, 27879, 62328, 94871, 94109, 99383, 74082, 68304, 75515, 24382, 8379, 72237, 19112, 67468, 79772, 98059, 91108, 66195, 57118, 15910, 14514, 10332, 81410, 3377, 81741, 74457, 51920, 51464, 83213, 13253, 50862, 76803, 38906, 59625, 16290, 23148, 20085, 68374, 30198, 85160, 50143, 70875, 77793, 20470, 42780, 41584, 82661, 42250, 58684, 38267, 85869, 38487, 77697, 92872, 94191, 21044, 75743, 27803, 65212, 6430, 99730, 88848, 61306, 54634, 53991, 77987, 4132, 80978, 39372, 80987, 64095, 99513, 54158, 2573, 37667, 54104, 30572, 69581, 82364, 77232, 71201, 31779, 89625, 41499, 72784, 46766, 3423, 25966, 21386, 45332, 97974, 57535, 39082, 57164, 71417, 14889, 17073, 808, 42224, 55416, 29379, 50211, 38966, 52138, 77698, 60086, 11802, 43159, 25407, 6455, 49012, 41486, 20705, 22225, 83151, 11907, 99910, 78420, 9032, 40417, 7080, 93396, 98326, 41298, 49141, 88830, 73681, 1447, 51825, 50524, 75389, 5981, 97892, 5968, 27709, 88407, 52080, 43767, 1067, 54029, 73458, 41162, 4533, 54113, 59949, 31050, 26281, 58681, 15192, 60066, 37553, 67638, 26159, 61331, 77957, 82351, 10780, 94580, 91464, 54809, 24915, 6533, 81556, 31698, 29104, 71701, 63615, 53295, 97764, 56430, 73892, 22757, 69939, 5351, 4128, 23385, 53882, 64581, 38900, 83314, 44760, 31115, 25703, 17004, 90704, 15060, 75199, 25994, 97634, 12568, 21880, 72649, 30165, 33299, 15809, 21413, 6865, 77974, 24673, 56945, 98120, 72363, 24946, 43842, 63667, 64169, 34633, 17543, 92011, 95444, 83229, 99273, 10079, 70493, 67150, 17170, 71769, 10610, 63519, 81744, 21091, 80680, 21371, 33546, 10304, 94377, 58544, 3701, 17830, 46593, 3368, 74888, 68612, 37172, 56301, 7822, 93174, 52465, 84085, 76766, 91392, 97761, 46222, 74480, 974, 75350, 98137, 84474, 62309, 66012, 67310, 45832, 58122, 94805, 7195, 65408, 99062, 26076, 83264, 13112, 80969, 92626, 58864, 23212, 67372, 36587, 50260, 73550, 65683, 95556, 58525, 65175, 29865, 48753, 16365, 68429, 36168, 74535, 51447, 30087, 78558, 31300, 91680, 2042, 80932, 97162, 24562, 68642, 35837, 69273, 3682, 15944, 99748, 46149, 66925, 76616, 27832, 65514, 70345, 28921, 1804, 88351, 40894, 61977, 70603, 68971, 50985, 82022, 37211, 54815, 35613, 53694, 91462, 7771, 74458, 97510, 3845, 36459, 8088, 28723, 47576, 80243, 66485, 31199, 53973, 23589, 33378, 60050, 70241, 6882, 71819, 99860, 40030, 56159, 80352, 94224, 85097, 5805, 88302, 57682, 89384, 38296, 58434, 13373, 5915, 81329, 94999, 392, 72386, 32875, 17386, 64208, 23111, 25908, 74367, 74210, 48459, 51569, 36956, 58, 61756, 9488, 9300, 7204, 78202, 39597, 69529, 73535, 38472, 15722, 75452, 10118, 95269, 92728, 30741, 11439, 34551, 38063, 54069, 63600, 74531, 70195, 15150, 796, 99199, 36679, 16106, 85499, 90769, 31938, 86216, 17759, 85913, 90938, 10158, 91550, 93033, 18117, 72915, 49386, 46936, 11616, 99583, 57299, 71484, 48574, 42726, 91107, 25338, 81514, 86534, 11178, 36250, 7129, 20246, 73805, 62411, 92314, 28908, 20454, 76575, 18664, 17785, 79909, 64216, 71397, 15195, 32156, 1734, 44615, 43024, 91676, 65623, 58867, 28687, 35503, 64258, 94227, 60318, 90312, 14751, 97182, 88950, 99381, 790, 38867, 54774, 19742, 62077, 47799, 62353, 37826, 72105, 30432, 82200, 79513, 60526, 60287, 75411, 28806, 12937, 43803, 50455, 98049, 66022, 37949, 9523, 40705, 21623, 16074, 89332, 92991, 25449, 84932, 24936, 59128, 25541, 57108, 11308, 12295, 55781, 79754, 61604, 2446, 27265, 30000, 40299, 84567, 1355, 74413, 38471, 33886, 28486, 74691, 25412, 32978, 71415, 43848, 87925, 45653, 71349, 75065, 53543, 81091, 85464, 91681, 31455, 79229, 38777, 78757, 87069, 79133, 53328, 1287, 37680, 84849, 14495, 14755, 23785, 30241, 76241, 61732, 10559, 79683, 26290, 54804, 40867, 61685, 47470, 41282, 24816, 53103, 27987, 69583, 76711, 46824, 47955, 40945, 77256, 65663, 19586, 34763, 73445, 89233, 96423, 9962, 88084, 11983, 11650, 84496, 7700, 51482, 1893, 81362, 86077, 63742, 11971, 60454, 94714, 65710, 78294, 63224, 23062, 95801, 71120, 85167, 10938, 33573, 97313, 50116, 82192, 3906, 35321, 60809, 49397, 79004, 64727, 67483, 27850, 27011, 98348, 10404, 15667, 12469, 37088, 63226, 63561, 10915, 43887, 73044, 9229, 85926, 45414, 44218, 89727, 27198, 9559, 54517, 17546, 48777, 61974, 69842, 55065, 75469, 17781, 17425, 58395, 12667, 50805, 13141, 72012, 49132, 61162, 97575, 59249, 84520, 41364, 7705, 84591, 85699, 69460, 40864, 91052, 755, 19819, 92525, 50750, 50042, 51930, 40916, 47644, 3932, 84396, 61706, 99352, 42976, 8934, 85077, 76738, 52359, 22875, 44113, 70952, 82993, 21136, 58116, 94422, 5636, 24372, 8338, 95501, 16096, 75477, 32196, 84002, 9493, 26810, 4219, 16418, 84425, 29824, 97710, 90721, 75269, 91923, 82091, 22511, 85999, 48692, 32123, 73574, 26104, 74826, 34419, 62604, 37710, 2997, 92299, 99577, 50368, 85184, 68443, 16294, 33314, 42504, 39942, 46616, 36533, 59094, 68163, 14083, 48949, 73102, 23296, 23248, 1324, 10611, 52677, 30169, 29000, 87793, 3071, 15698, 90342, 63191, 71256, 71730, 80950, 13261, 84129, 49729, 9224, 36130, 48463, 43982, 10702, 93264, 13550, 84793, 90029, 2241, 5528, 87224, 61217, 91574, 4006, 99340, 40970, 56698, 14076, 9657, 43578, 84674, 33233, 12334, 37592, 71327, 68339, 59158, 97059, 75879, 83729, 36556, 69319, 29378, 69058, 76625, 63370, 89773, 44761, 37768, 15580, 66324, 85788, 74644, 72203, 39017, 27464, 71827, 68282, 14546, 20054, 43258, 37993, 92904, 74012, 28096, 77999, 51779, 69069, 22675, 49749, 16940, 91713, 85704, 39548, 62436, 79879, 45305, 33826, 3338, 76357, 32860, 42591, 75063, 9500, 77809, 59732, 14961, 57936, 99095, 20911, 96451, 10541, 82464, 97905, 47257, 41643, 7004, 86637, 90417, 37414, 95345, 95125, 53728, 31546, 71214, 40386, 70372, 24002, 98088, 90138, 97187, 65664, 6827, 80828, 57398, 65910, 74348, 79263, 43637, 56035, 74488, 18816, 1069, 48066, 76836, 19344, 41773, 20016, 61651, 88325, 36936, 12047, 86504, 30330, 48637, 92597, 96899, 69568, 6815, 32789, 11255, 8277, 44718, 4737, 97558, 31165, 61050, 24753, 30497, 59937, 74949, 7624, 99197, 23025, 53074, 30783, 11659, 25015, 50121, 5367, 1038, 86746, 29013, 33373, 36693, 72924, 41089, 59287, 16825, 47121, 88838, 19518, 33337, 19434, 29240, 96845, 12783, 36522, 89216, 70962, 21039, 30637, 65580, 95244, 37085, 32672, 17075, 78953, 26140, 83890, 73565, 31977, 32178, 32933, 58377, 69689, 89383, 62096, 83771, 49756, 24541, 16054, 31262, 11402, 88615, 7931, 43329, 18561, 32628, 81509, 82962, 53367, 74427, 77244, 80630, 18795, 12527, 6216, 3222, 5622, 16873, 71506, 96909, 42646, 83750, 54934, 678, 39366, 33654, 57964, 2300, 70173, 9492, 28880, 77355, 31970, 68246, 65423, 6989, 98683, 30772, 50607, 93493, 91714, 2213, 96429, 92836, 6277, 14158, 72599, 87009, 6536, 13558, 34221, 99215, 49644, 96800, 13972, 52800, 26297, 23620, 57284, 76204, 96885, 17972, 47984, 80225, 44142, 87216, 76052, 26966, 69299, 84067, 85000, 21625, 12781, 41468, 60625, 10895, 16501, 3816, 64907, 73638, 42617, 6291, 30224, 78516, 80018, 35603, 54497, 72047, 76518, 80560, 61486, 61679, 43985, 99524, 72221, 37557, 71237, 10321, 73345, 19236, 76335, 3310, 64214, 732, 22169, 85575, 36302, 72530, 58151, 20909, 83054, 65767, 39380, 57821, 2491, 49460, 68073, 20861, 20457, 68520, 70561, 8229, 3936, 37655, 69584, 8387, 35201, 49032, 25213, 81065, 63218, 63643, 12293, 41373, 60537, 30228, 36892, 16737, 39561, 26722, 64871, 20331, 62957, 81152, 40581, 84322, 37322, 63589, 30729, 69432, 62056, 25771, 35178, 70477, 73211, 93877, 96203, 84619, 36335, 54381, 29630, 87186, 17634, 3576, 63836, 46901, 78248, 25122, 58976, 22256, 6156, 85314, 10455, 61987, 30972, 85831, 95220, 36483, 95226, 85484, 69162, 44976, 30117, 91476, 55774, 11947, 5277, 50970, 74343, 54269, 99160, 745, 98143, 64655, 13689, 62079, 19556, 30829, 47932, 36610, 69184, 23431, 47200, 37143, 80254, 56114, 2615, 42838, 23778, 760, 38396, 48661, 43332, 2512, 20045, 18992, 75162, 25999, 99315, 64556, 6982, 28382, 80107, 5328, 56188, 85345, 37746, 38888, 70810, 85427, 57360, 9710, 43731, 6104, 28831, 31772, 38927, 72873, 51443, 69586, 45785, 50382, 9862, 12382, 10236, 76822, 60704, 36938, 1654, 17362, 72435, 3391, 55521, 12132, 42361, 4341, 81651, 20932, 56373, 96837, 6542, 41508, 44477, 23294, 15743, 40031, 38974, 19767, 5988, 5179, 73103, 45141, 51567, 66879, 21434, 79596, 43237, 61318, 91000, 95712, 74198, 21379, 3105, 24844, 44784, 78887, 3002, 24831, 29771, 18989, 84524, 68909, 7876, 19959, 9630, 66761, 15049, 80472, 69093, 84321, 83116, 55122, 11827, 49996, 69185, 52969, 7522, 2432, 72076, 6507, 46638, 83398, 55655, 96019, 79547, 31414, 8790, 32674, 2229, 1295, 57041, 71203, 48506, 65496, 24840, 27831, 5391, 71337, 84204, 98872, 51656, 65240, 40050, 78973, 1367, 9807, 39025, 679, 42911, 10711, 73982, 1935, 908, 30859, 53521, 87410, 45753, 78020, 30578, 1541, 3872, 77155, 11743, 4927, 82922, 58823, 95361, 39152, 99011, 56904, 65349, 362, 90679, 58003, 44511, 99771, 86057, 66816, 80762, 38893, 67121, 9806, 12691, 9949, 69238, 83079, 87167, 47356, 13180, 50827, 5451, 23232, 10719, 35824, 8689, 28249, 87516, 56316, 47423, 53507, 22850, 17342, 5803, 69902, 23723, 67598, 57148, 85172, 23307, 76907, 85287, 26381, 89862, 35303, 4171, 97450, 3899, 24310, 41501, 64386, 79618, 10166, 80498, 10864, 5254, 21486, 69552, 60871, 38253, 91366, 57733, 67368, 90834, 68726, 67938, 49426, 93049, 22484, 36317, 68733, 8028, 62998, 563, 81014, 43073, 30106, 41402, 67915, 69524, 53825, 71986, 97150, 62057, 21161, 4441, 71005, 64508, 82452, 28151, 19329, 56258, 48140, 22219, 4960, 46606, 15704, 75505, 87059, 31257, 16894, 88072, 29859, 34766, 28680, 5261, 39933, 82608, 39012, 45990, 58332, 93045, 31542, 74378, 73119, 40253, 41260, 47036, 64723, 13345, 95793, 51681, 8572, 13128, 64820, 94153, 38346, 64925, 48437, 51693, 81201, 83920, 93699, 26187, 16129, 67230, 12448, 34874, 71261, 32842, 82520, 20965, 51251, 49313, 7514, 24084, 53675, 93828, 27233, 42182, 99083, 27533, 65504, 56018, 71017, 58935, 72071, 89891, 17184, 90932, 73423, 59125, 15778, 25457, 90991, 81437, 48456, 70115, 82061, 79029, 73690, 94589, 25347, 67210, 19681, 45065, 59899, 87920, 13544, 62760, 44398, 80657, 16571, 35961, 34203, 35835, 16108, 63689, 85705, 29177, 86471, 9822, 67482, 78417, 40574, 52217, 90829, 92483, 44279, 68407, 56066, 44255, 10058, 56198, 90827, 98802, 65682, 56195, 70446, 45129, 33303, 78499, 15261, 36025, 22055, 25152, 73426, 97289, 81865, 93899, 71024, 5120, 49689, 36590, 39542, 60777, 67510, 75327, 11258, 8095, 3940, 12246, 45092, 47491, 48641, 14712, 86743, 94738, 4279, 87729, 30957, 31310, 65251, 5146, 93749, 26000, 36899, 53576, 24252, 26193, 26158, 72039, 63142, 49602, 16789, 79251, 43022, 68824, 72933, 91726, 26215, 51024, 62207, 40073, 72285, 33950, 44063, 10867, 93775, 55851, 42212, 35375, 44538, 27962, 53029, 43014, 42426, 87566, 35629, 54429, 11972, 75823, 94557, 23718, 30248, 17262, 47846, 62339, 20342, 2078, 32007, 67328, 98593, 22711, 52144, 91104, 73045, 76503, 15014, 23657, 28255, 4248, 70529, 82628, 39683, 82128, 27295, 74841, 79624, 19794, 7415, 98618, 18814, 79674, 53254, 71369, 40320, 33509, 23978, 65565, 81718, 71019, 78032, 35063, 9598, 59664, 24376, 44502, 6598, 61208, 16462, 52564, 58022, 94619, 73920, 27725, 66401, 91842, 77466, 21165, 12273, 35007, 38064, 21470, 80231, 73977, 73757, 53754, 70754, 75334, 7976, 92671, 7877, 17923, 71818, 36323, 58953, 62500, 32356, 2072, 52704, 58730, 98794, 61147, 64714, 40207, 41195, 95879, 77872, 94040, 70386, 82497, 51062, 67705, 62162, 9545, 78483, 79043, 13203, 83721, 22737, 62877, 95298, 73172, 72429, 13777, 16019, 16213, 94402, 64500, 33136, 95573, 3523, 14922, 63993, 92448, 87457, 90577, 12676, 41744, 95168, 5029, 21146, 51676, 18823, 76166, 21336, 74772, 28393, 79530, 5786, 23841, 1876, 99127, 55061, 99317, 77258, 56847, 71269, 98486, 38942, 44121, 94195, 2066, 36370, 98640, 7944, 2946, 88221, 49091, 61962, 1277, 30550, 93544, 51659, 25267, 7438, 53870, 44595, 99798, 57969, 76170, 79891, 63624, 66752, 19287, 55217, 63636, 91700, 16405, 34192, 62732, 24913, 94203, 49506, 6122, 74057, 47024, 97680, 25950, 58263, 29275, 79921, 55694, 33636, 46441, 45272, 6572, 32331, 50157, 95994, 57130, 43621, 44885, 81496, 2275, 32919, 85213, 84599, 21517, 9080, 97919, 92798, 60262, 30271, 42430, 66789, 15491, 87757, 5864, 59134, 53715, 68812, 84618, 62452, 84548, 67844, 22920, 69086, 35878, 64167, 44592, 95005, 33987, 81464, 59675, 28054, 85207, 62804, 56972, 95192, 33853, 88475, 3667, 95115, 44639, 18938, 45466, 96307, 65626, 31035, 65657, 29268, 4084, 26556, 97308, 87537, 85147, 20707, 41189, 45850, 46122, 20890, 91268, 25436, 12388, 18887, 82734, 32655, 73817, 42533, 81493, 36140, 26986, 7738, 17910, 10632, 33453, 76675, 81229, 88022, 80592, 78122, 36048, 54375, 51310, 98795, 86115, 49605, 53756, 3057, 15531, 91243, 71775, 2556, 544, 99193, 36405, 25854, 29735, 12518, 11480, 41215, 39651, 76817, 59697, 29553, 6158, 53488, 57646, 23483, 83457, 22917, 74226, 78779, 22858, 79432, 85134, 18826, 79296, 87480, 24670, 24721, 99455, 66512, 19535, 98965, 98878, 47746, 27333, 97286, 28657, 65886, 44775, 36472, 72253, 3694, 67784, 48611, 67905, 87266, 42572, 82525, 75946, 7787, 12933, 4310, 59836, 92100, 20274, 3873, 30102, 91417, 99639, 67760, 48726, 39833, 99896, 1987, 62842, 75259, 56743, 37064, 71141, 61143, 73603, 33856, 37102, 20303, 22133, 68484, 53993, 68454, 77018, 76100, 32608, 22763, 15251, 65400, 29619, 69859, 45905, 35840, 79720, 60709, 34618, 89255, 67826, 45085, 55868, 20713, 75701, 66480, 51767, 43896, 29216, 2177, 70609, 55810, 46397, 62483, 82991, 78903, 62196, 48418, 86578, 23707, 56318, 49087, 32729, 14795, 75933, 18462, 73762, 46287, 81933, 94378, 1822, 67820, 50136, 69767, 75884, 56639, 72289, 71908, 68953, 4967, 42820, 71442, 25907, 31217, 79255, 19400, 56839, 51438, 70379, 24251, 83731, 19358, 90811, 90728, 51001, 866, 9553, 7798, 55688, 54297, 98331, 46375, 22452, 97970, 9002, 65148, 9740, 6237, 80030, 49520, 9583, 39241, 18359, 29474, 3686, 1702, 60944, 61593, 98228, 54879, 20616, 58149, 53023, 6845, 54051, 25803, 50832, 53947, 45524, 9652, 40398, 4243, 91720, 79427, 10740, 28548, 82435, 1849, 42905, 53156, 60252, 38476, 250, 52244, 83791, 49470, 76723, 74961, 62781, 6203, 68950, 11712, 30386, 46329, 80673, 94938, 1333, 38701, 13633, 29468, 19663, 7397, 91012, 58396, 23984, 35625, 62864, 99883, 89702, 79000, 62134, 16881, 81844, 47114, 2679, 59839, 3421, 53275, 62350, 39312, 94882, 46528, 69329, 26304, 4962, 88181, 78281, 44155, 55545, 32916, 63387, 40377, 93001, 95860, 23388, 14371, 15671, 30538, 23566, 66959, 35970, 36102, 16114, 20248, 83732, 48571, 96867, 22582, 41170, 83510, 8530, 65687, 70892, 65684, 25153, 40467, 93774, 9115, 19266, 72751, 95614, 58526, 22042, 96244, 43898, 66016, 17212, 16740, 39832, 82774, 68404, 90270, 61468, 90992, 44198, 98304, 82531, 67716, 78556, 19032, 97882, 45704, 27021, 25423, 30779, 53387, 81973, 31573, 67565, 16410, 20731, 31194, 37837, 30397, 2513, 13509, 69235, 33468, 8378, 43495, 16282, 60558, 75079, 26608, 99189, 34038, 27992, 89908, 92169, 40254, 25294, 67672, 35043, 10102, 41474, 43362, 83622, 10522, 26472, 33039, 51355, 85598, 91774, 85357, 83832, 96215, 37276, 33552, 93627, 13413, 97741, 65401, 6095, 41461, 23091, 1439, 94661, 44307, 97971, 10828, 22851, 90427, 88844, 81967, 62934, 29332, 14212, 38764, 98464, 47449, 21460, 32737, 59434, 8001, 49626, 31936, 3035, 34507, 1591, 92121, 45020, 90340, 95043, 59487, 64091, 91985, 54298, 12138, 67008, 72806, 77336, 20529, 51428, 22374, 91579, 16049, 98414, 66506, 45556, 12391, 42915, 12950, 21803, 98470, 48243, 31774, 30448, 18967, 21741, 36256, 44965, 76368, 59998, 78816, 94903, 97092, 65643, 23040, 35608, 45260, 30670, 6974, 69270, 30182, 50387, 93889, 82527, 19331, 62766, 36100, 34944, 41078, 31980, 43103, 18513, 86043, 95408, 45937, 50284, 77585, 91235, 86422, 94586, 89114, 45217, 20491, 78484, 32003, 84682, 58775, 78327, 67572, 44759, 73025, 50395, 96954, 40181, 95569, 52254, 2734, 33737, 57860, 50713, 44258, 1024, 44547, 53787, 50839, 26489, 19730, 20383, 45822, 86729, 77121, 34681, 20115, 76912, 58860, 79374, 5184, 53591, 45078, 29712, 75617, 31613, 56330, 88244, 12151, 66594, 64543, 69159, 52778, 68348, 13877, 1402, 11867, 98300, 49625, 59232, 29692, 76615, 50330, 25612, 19285, 79247, 80268, 47362, 64828, 92156, 58427, 1448, 44727, 94570, 28604, 38484, 1904, 41269, 84503, 85922, 36289, 98258, 17441, 56063, 46174, 52899, 37693, 12841, 86784, 95149, 5034, 1781, 38117, 16602, 32725, 78550, 61620, 49528, 41152, 51744, 50004, 41631, 13380, 15813, 83302, 36306, 68572, 77830, 15866, 2533, 49775, 58572, 64843, 95531, 66274, 23897, 28655, 90158, 42330, 53415, 13591, 83182, 97069, 32492, 93582, 24506, 68028, 39564, 65260, 97953, 68191, 13000, 99429, 70516, 62413, 34096, 93320, 42760, 75806, 98822, 84219, 72259, 43283, 9780, 36392, 70980, 47573, 98131, 17885, 26, 38594, 93068, 56713, 22012, 86523, 56947, 4315, 74518, 95474, 12329, 47103, 62730, 31015, 93577, 61314, 90541, 83995, 41910, 84364, 63368, 71347, 7006, 78871, 29441, 94386, 727, 46770, 36554, 9546, 22731, 47469, 49230, 33522, 66543, 36843, 89262, 38933, 64163, 6102, 88335, 51852, 47201, 65085, 3012, 13629, 96135, 33022, 68936, 6967, 37325, 24298, 40911, 61086, 58670, 42249, 27626, 7725, 96738, 59185, 82643, 63601, 48775, 78564, 39962, 73496, 28729, 14240, 9024, 94161, 39953, 10760, 80391, 64667, 95036, 38212, 78063, 20466, 13763, 35977, 12960, 2337, 63869, 73400, 71320, 52553, 40291, 21904, 68725, 8479, 71197, 21054, 97787, 77980, 66111, 84316, 41179, 60931, 70388, 4175, 81060, 37546, 47783, 81796, 6869, 45185, 31948, 19558, 16312, 39170, 97539, 16126, 86529, 87085, 91890, 41217, 21344, 25483, 70908, 64928, 63126, 844, 9845, 76101, 603, 78097, 98841, 89354, 96791, 30844, 9733, 43835, 23459, 70153, 49712, 38762, 61989, 1663, 16578, 40379, 13619, 97700, 85841, 341, 39667, 13766, 30882, 65530, 43923, 17140, 61559, 53069, 1435, 58564, 11382, 59258, 68115, 33417, 69486, 56432, 85156, 68030, 59915, 69263, 32573, 1055, 24894, 60613, 41273, 54023, 1794, 57979, 48564, 49666, 7279, 59813, 3389, 84887, 79898, 98328, 78373, 73801, 53550, 67022, 426, 17231, 66109, 45318, 35441, 1906, 18249, 90516, 51916, 14163, 98576, 59531, 64850, 57611, 13838, 80921, 82559, 89462, 35743, 2407, 82978, 70686, 3807, 63837, 34231, 49977, 42595, 86508, 50572, 86062, 54470, 63747, 85300, 70434, 62817, 68783, 56835, 48256, 61942, 60740, 30629, 90187, 13898, 48338, 90330, 14593, 9260, 65350, 7141, 45276, 33824, 86914, 37943, 61376, 33326, 95885, 65245, 84490, 62862, 54719, 15559, 13043, 33483, 11984, 87341, 25398, 18253, 12116, 54129, 49003, 3748, 16048, 78359, 70400, 85258, 62551, 69728, 20538, 1972, 57317, 82591, 13386, 31771, 38373, 62546, 21257, 59588, 11369, 50312, 8850, 82147, 92359, 59028, 47665, 21315, 21082, 59056, 49776, 68582, 10552, 51047, 20186, 52507, 57784, 22096, 63026, 3909, 13418, 81485, 81302, 21671, 65986, 72451, 18676, 6894, 6519, 92926, 27856, 85988, 89005, 81702, 62765, 19896, 45787, 41725, 60614, 5246, 877, 62863, 97610, 56062, 82413, 29359, 19864, 94709, 17702, 17408, 90149, 96759, 35541, 19079, 72491, 57404, 83145, 79398, 96339, 37503, 38184, 88468, 85686, 54990, 99299, 31670, 74707, 90185, 54348, 94186, 25349, 39311, 3042, 24364, 83233, 63484, 43830, 21424, 632, 82640, 44353, 12376, 53865, 93994, 71219, 92645, 70899, 57730, 5356, 2587, 7281, 41994, 66839, 53206, 49138, 31080, 25183, 5067, 62609, 88478, 72447, 70462, 581, 72713, 79236, 25389, 96769, 91999, 46655, 73794, 24022, 64631, 92799, 73234, 918, 46561, 50193, 29546, 21339, 98625, 23815, 63002, 5230, 45734, 96033, 87374, 19992, 75446, 25108, 6211, 78736, 86976, 87474, 34803, 45805, 24408, 95322, 88707, 90614, 87778, 73213, 84024, 40243, 44895, 68081, 37972, 60828, 52521, 30288, 92733, 99343, 82960, 69833, 10285, 1318, 14471, 86781, 41695, 29879, 14417, 97347, 92200, 44598, 82049, 5103, 51296, 38282, 29584, 56934, 62950, 90133, 71250, 78214, 65997, 68990, 29749, 35889, 42397, 53065, 81375, 18575, 84968, 41982, 42793, 74270, 25986, 8833, 90782, 52325, 48042, 85442, 52882, 49437, 11560, 70949, 46254, 83361, 35598, 4033, 92470, 69856, 6975, 93942, 9556, 8892, 84743, 58415, 8327, 54564, 48202, 67555, 15480, 55648, 24276, 50131, 59130, 64020, 93575, 57471, 87420, 83336, 49660, 88380, 76075, 72667, 56493, 98560, 23712, 1638, 35229, 87688, 5548, 13555, 47193, 48713, 72916, 52192, 1791, 56197, 65844, 80819, 16746, 1405, 47489, 22887, 64344, 39181, 18299, 63328, 38759, 83998, 18778, 2056, 77362, 74542, 42921, 82679, 59302, 72298, 76098, 37528, 97897, 11133, 13849, 30370, 72152, 71222, 89641, 57984, 41421, 6905, 74022, 8862, 11987, 70093, 20801, 26151, 95196, 25426, 85630, 33746, 25652, 76259, 38432, 94301, 4136, 631, 75699, 82549, 43078, 96978, 82521, 42823, 45135, 83723, 42073, 15608, 1368, 99970, 67185, 37070, 97604, 70079, 56132, 26516, 78589, 54761, 89453, 77252, 37807, 24897, 8179, 87217, 4714, 27218, 36873, 4937, 24800, 38580, 26649, 9252, 83892, 69537, 52328, 28678, 22979, 19257, 6157, 46362, 66440, 14398, 95947, 68205, 6609, 61869, 76830, 7572, 68143, 97389, 28077, 55473, 91984, 75264, 93066, 58886, 29110, 30568, 59832, 31347, 83938, 55036, 82260, 42155, 64122, 36351, 97405, 18297, 31699, 1699, 42171, 2624, 6093, 54176, 44288, 12487, 90824, 17661, 41825, 66537, 17951, 20542, 47981, 21036, 1193, 94457, 13557, 6940, 65824, 47394, 68912, 10138, 24892, 76939, 48541, 44530, 97812, 38846, 76477, 68882, 80433, 84988, 10406, 10405, 25732, 738, 75641, 67950, 81938, 20604, 52536, 10574, 62875, 18978, 81617, 64343, 11689, 88517, 64520, 29306, 71205, 44221, 89275, 27106, 31189, 95590, 86322, 9527, 88318, 46184, 91991, 71021, 45550, 76005, 48694, 78095, 10235, 17404, 37360, 56968, 32597, 81867, 16916, 71329, 1230, 80396, 75200, 13523, 63896, 25914, 40301, 47679, 82547, 13641, 94211, 98014, 60612, 36784, 78156, 42713, 7699, 86075, 57378, 54614, 77396, 69429, 79040, 93887, 23442, 28632, 30590, 87400, 53317, 67892, 53631, 67473, 5616, 55378, 78309, 99108, 9858, 50033, 2273, 31649, 74914, 91927, 51359, 36179, 62433, 50188, 28576, 81287, 10299, 8912, 2018, 33547, 88595, 84223, 53198, 97922, 17119, 3788, 59855, 3803, 66210, 21189, 26024, 2568, 52261, 5666, 60009, 30443, 47657, 53920, 87679, 77147, 50831, 9251, 63799, 52358, 12462, 15087, 41721, 77378, 49115, 13529, 43236, 29354, 8010, 27977, 85658, 7598, 381, 84598, 60173, 30218, 74475, 12384, 37978, 10435, 49134, 57701, 66651, 65429, 76493, 72695, 47988, 95079, 53570, 58063, 89920, 90961, 96584, 28185, 20144, 5270, 81756, 39341, 60735, 92050, 23506, 86162, 43214, 80180, 22859, 89471, 67684, 23324, 67045, 82402, 84102, 79119, 60320, 69743, 43253, 78583, 23106, 77632, 25254, 12021, 17597, 63902, 14695, 71659, 9318, 80368, 2659, 45631, 74598, 2425, 98613, 37676, 4199, 71569, 16677, 17220, 33691, 68256, 25074, 85229, 32148, 55918, 87638, 73058, 61767, 79952, 77580, 92650, 43909, 43760, 17322, 84337, 37177, 85596, 41096, 50285, 76713, 64487, 67877, 33392, 39703, 21966, 2767, 57125, 8562, 99726, 2289, 13613, 27204, 93891, 86481, 41500, 47118, 82359, 6677, 10134, 94282, 53893, 4047, 15711, 23762, 73299, 82599, 41134, 15725, 5739, 11113, 72023, 67435, 30884, 557, 30446, 1609, 4561, 68126, 13685, 63937, 92985, 75676, 46510, 42053, 1881, 34981, 87028, 27290, 32100, 76291, 87219, 90748, 63960, 31923, 92328, 9001, 71897, 88645, 7728, 47973, 76045, 86885, 60022, 42314, 87176, 51919, 80856, 35910, 91455, 85767, 12845, 409, 60605, 23911, 86214, 6895, 62589, 16736, 39518, 76680, 82977, 11452, 21542, 73374, 54987, 43836, 97020, 90341, 73137, 3930, 70628, 2701, 27162, 47701, 24337, 72793, 80802, 67132, 892, 80274, 95241, 32528, 23697, 17178, 90672, 19736, 83205, 89461, 97232, 14102, 41022, 92632, 13189, 76209, 13246, 7227, 27309, 11635, 18537, 69644, 78137, 53746, 11361, 93850, 92250, 40584, 93868, 26109, 16362, 14332, 16807, 94268, 12954, 36601, 38248, 94802, 71084, 25117, 28236, 80614, 77541, 62892, 81728, 93054, 69416, 62651, 21910, 22778, 38218, 8300, 37852, 73219, 15382, 3301, 38188, 28291, 98956, 45944, 60903, 36080, 81423, 96672, 40430, 95608, 59847, 13221, 50375, 60926, 54949, 76761, 57757, 28800, 20679, 81290, 93941, 30230, 3380, 83641, 77402, 53492, 3688, 36535, 23617, 30056, 32077, 45602, 96884, 9633, 47717, 83899, 5906, 57325, 67897, 39426, 10221, 90922, 81120, 27181, 55247, 56690, 56561, 46948, 6210, 43955, 99253, 25266, 71882, 82719, 69885, 87115, 78699, 66884, 22714, 9575, 53095, 34796, 3592, 35791, 9077, 77186, 99039, 16335, 34538, 69762, 95264, 9896, 81919, 83863, 89665, 48593, 78037, 64866, 97530, 43021, 62380, 29107, 98754, 29700, 52596, 86079, 38623, 53311, 83270, 95782, 70324, 22521, 44354, 12578, 2243, 77013, 53601, 58308, 12013, 82096, 62242, 98301, 56785, 41839, 5972, 14292, 69623, 84663, 28899, 14656, 40378, 87727, 72215, 24496, 49868, 43534, 45079, 47056, 60271, 80169, 77351, 84169, 94233, 77933, 70829, 91989, 5071, 1129, 88712, 945, 23410, 84214, 32901, 58142, 267, 83996, 63021, 84595, 23319, 94941, 54247, 31184, 37040, 43742, 85679, 90430, 54586, 63549, 86111, 94603, 46534, 93114, 65521, 24422, 69981, 57921, 77589, 98886, 6607, 87611, 68511, 17753, 60853, 86319, 82197, 11147, 68841, 69190, 25352, 63296, 73947, 63978, 73795, 27787, 13695, 87784, 92497, 47285, 34875, 3926, 15396, 16784, 25077, 1524, 29854, 10777, 65293, 65775, 91512, 86753, 53678, 78086, 74439, 44724, 80332, 69264, 49554, 20398, 95713, 64432, 17915, 96379, 87002, 21907, 95262, 78681, 52122, 66307, 27609, 22120, 60755, 95862, 45614, 92391, 39111, 11150, 9978, 32889, 38874, 11505, 4592, 50656, 16859, 13560, 66091, 60705, 2279, 64062, 24419, 45741, 63558, 61241, 91744, 80393, 93119, 82841, 85593, 21573, 94044, 76226, 64521, 2267, 89206, 23663, 83720, 33562, 41334, 5428, 53441, 84374, 55380, 86574, 66900, 56097, 50467, 9281, 26769, 49409, 25420, 21717, 22023, 53379, 21237, 70759, 56975, 91654, 61372, 83884, 18230, 60515, 6258, 82088, 54423, 52113, 95653, 47067, 84109, 8221, 97507, 91315, 25510, 6914, 50161, 42083, 26680, 14027, 17807, 22611, 62743, 59739, 63754, 46889, 17457, 44721, 9442, 3585, 29626, 88217, 41729, 62790, 60833, 58916, 58527, 69249, 21049, 38834, 96047, 253, 79194, 11541, 90483, 18744, 23979, 748, 86218, 48793, 73317, 85450, 71996, 24173, 49852, 74494, 22228, 21178, 36013, 21425, 94677, 16057, 71045, 45155, 25881, 48581, 64076, 48752, 91490, 26463, 53605, 1879, 13995, 28007, 22131, 80172, 66300, 47964, 38751, 87541, 80635, 34698, 81259, 51006, 87944, 6162, 72092, 5611, 93694, 19182, 91045, 27811, 4734, 8361, 17741, 90698, 28148, 33632, 85185, 37035, 87873, 32082, 39118, 34615, 12641, 38505, 27591, 21920, 9688, 60384, 1486, 28862, 12869, 27185, 44183, 15454, 82431, 12486, 98926, 33702, 38394, 98771, 44606, 80173, 543, 93696, 37343, 62922, 94880, 60396, 6035, 8787, 55161, 40272, 15210, 56049, 85937, 11166, 92144, 98262, 88994, 60273, 11846, 1731, 76938, 81284, 61905, 66559, 37567, 16925, 73843, 97801, 64359, 75306, 47874, 6350, 15333, 93448, 47790, 78526, 4747, 7460, 35887, 43501, 90094, 98669, 76337, 17451, 94384, 95759, 48549, 41606, 59632, 758, 38315, 29698, 25578, 35801, 34353, 97538, 42988, 49000, 1570, 49090, 58135, 43400, 17693, 16389, 19135, 94218, 61064, 35866, 24697, 37171, 56901, 56249, 28507, 12624, 17152, 49821, 47769, 1817, 92461, 64618, 37565, 67478, 89650, 96844, 97785, 20693, 42117, 57232, 2120, 56253, 14044, 12713, 22198, 52898, 91028, 43740, 13407, 88818, 33440, 41940, 56467, 15369, 48428, 81244, 80445, 48041, 37175, 54111, 3394, 17105, 66385, 85354, 69873, 67739, 22574, 39398, 78851, 95182, 86961, 18120, 77778, 95102, 32439, 37576, 15573, 13318, 80093, 49226, 78870, 79327, 73769, 37034, 73971, 37845, 24770, 9632, 4, 52741, 69419, 16024, 55592, 53021, 36427, 79105, 90366, 38192, 53682, 31448, 78492, 99978, 58053, 61081, 44332, 66746, 36891, 15140, 60477, 96087, 5005, 63776, 4149, 93163, 63234, 69442, 99602, 75244, 56200, 42925, 94128, 4645, 98677, 33474, 87370, 25763, 89008, 27599, 95228, 52686, 71520, 14576, 79841, 5386, 50463, 54021, 36126, 16331, 4393, 11301, 38211, 30068, 86460, 17939, 55369, 67433, 87557, 11257, 76966, 12390, 8199, 31940, 98453, 50576, 94623, 24503, 81675, 46422, 67599, 43934, 29466, 66626, 75504, 55572, 8144, 49363, 1599, 8830, 43483, 23119, 79494, 99187, 94205, 13988, 47857, 56554, 1108, 29716, 80767, 45826, 88930, 88713, 95495, 67602, 1513, 42382, 68616, 67488, 32191, 15227, 79764, 4283, 40825, 93253, 11062, 99473, 73327, 12105, 36763, 88091, 63719, 64922, 97583, 17031, 40446, 86558, 22853, 16368, 72658, 29245, 80086, 86013, 78323, 94869, 49765, 25518, 69999, 69444, 6072, 6082, 55397, 96801, 65210, 15080, 86359, 80485, 50730, 89723, 69646, 85572, 53113, 6986, 93380, 29149, 92565, 22403, 11077, 44438, 21087, 93273, 35022, 12333, 90572, 67907, 23032, 50790, 95728, 83245, 2606, 37349, 59424, 28274, 12216, 86922, 48905, 57672, 98163, 9825, 65243, 52750, 61403, 21110, 70008, 55337, 93377, 20101, 22861, 99676, 26537, 51909, 27982, 98917, 57457, 85107, 44694, 34088, 25537, 13871, 60141, 45139, 18040, 23520, 45505, 55959, 83370, 9795, 53035, 21721, 94451, 81582, 14394, 93584, 43415, 67239, 65084, 45401, 46971, 22189, 80618, 77057, 12233, 84536, 6053, 33393, 9265, 27779, 2675, 54631, 38113, 12070, 93900, 96214, 35679, 14137, 49916, 80789, 39393, 38694, 51090, 40943, 12709, 2096, 35034, 45534, 90632, 91023, 15097, 95402, 66138, 77295, 64961, 57447, 87422, 38691, 39067, 50470, 34897, 63395, 7241, 24153, 98188, 58900, 86155, 16542, 96767, 29764, 25972, 5272, 29362, 34484, 89570, 61128, 77364, 88158, 47755, 80464, 67296, 70737, 38405, 54314, 89228, 68731, 23433, 60184, 7742, 46675, 34198, 25088, 66483, 95536, 76690, 29343, 74320, 22817, 27103, 51728, 98333, 70274, 81963, 35074, 18613, 87170, 30837, 89857, 45641, 17650, 17655, 7561, 76953, 2847, 98764, 66288, 84992, 83267, 52561, 104, 33888, 85226, 78307, 74023, 2875, 96663, 42360, 67213, 90216, 56180, 79932, 481, 37104, 2561, 38532, 29608, 31646, 66447, 87262, 338, 12968, 2025, 10839, 66416, 20766, 41176, 6963, 40162, 12029, 32939, 1308, 57078, 77674, 87847, 78391, 42882, 31718, 67321, 14989, 61982, 73022, 36946, 87042, 66201, 9926, 60795, 17591, 47753, 78026, 78227, 22028, 69758, 35651, 48991, 38414, 75775, 54280, 82, 91630, 43345, 99407, 18897, 49160, 64093, 11899, 8273, 41531, 27896, 40593, 72026, 4948, 33947, 8475, 16655, 27078, 55532, 17670, 25896, 89176, 49041, 69740, 10973, 46630, 43891, 11235, 77202, 32180, 37863, 64217, 65551, 96289, 36312, 90116, 15189, 20548, 79140, 31083, 34234, 17201, 18229, 23384, 70343, 55654, 4447, 96763, 93143, 95042, 83109, 78387, 10295, 86350, 18718, 16098, 64058, 62603, 9541, 6310, 97376, 20716, 88034, 67138, 50100, 10136, 64869, 71592, 80931, 29578, 8363, 47856, 42912, 94202, 640, 82329, 90021, 20038, 18743, 47492, 50811, 97945, 94633, 37412, 81960, 28917, 92844, 78831, 66595, 42269, 6197, 23078, 10226, 41757, 20654, 77896, 83379, 68077, 59490, 60661, 48310, 55585, 30554, 14654, 44586, 40359, 84689, 58757, 18602, 4258, 69830, 65907, 57612, 68540, 41709, 50041, 87383, 97496, 87095, 19891, 24456, 74461, 94087, 19499, 53617, 26220, 74688, 94847, 21387, 46814, 71995, 19471, 70131, 52000, 34900, 93036, 9456, 82982, 39346, 46782, 60908, 49723, 63035, 41522, 43028, 53235, 88269, 53350, 42902, 45961, 67866, 40652, 98821, 87106, 32120, 33993, 40971, 99644]

bubble_sort!(toSort)

# > julia juliaTest.jl

max_stars_repo_name: AbhimanyuAryan/youtube-tutorial-scripts

max_issues_repo_name: AbhimanyuAryan/youtube-tutorial-scripts

max_forks_repo_name: AbhimanyuAryan/youtube-tutorial-scripts


text:
module VarianceTests
using Base.Test;
using FactCheck;
using ValidatedNumerics;
using IntervalStatistic;
using Distributions;

srand(10)

contain(value) = (i) -> value in i

facts("estimate variance of standard (0, 1) distribution") do
    d = Normal()
    length = 100
    values = rand(d, length)
    mu, sigma = params(d)
    average = mean(values)

    context("by confidence probability") do
        result = IntervalStatistic.var(values, IntervalStatistic.Variance.byConfidenceProbability(0.95))
        println(result)
        @fact result --> contain(sigma^2)
    end

    context("by point variance") do
        variance = var(values)
        result = IntervalStatistic.var(values, IntervalStatistic.Variance.byPointVariance(0.95, variance))
        println(result)
        @fact result --> contain(variance)
    end
end

facts("estimate variance of normanl mu=3 sigma=0.1 distribution") do
    d = Normal(3, 0.1)
    length = 10
    values = rand(d, length)
    mu, sigma = params(d)
    average = mean(values)

    context("by confidence probability") do
        result = IntervalStatistic.var(values, IntervalStatistic.Variance.byConfidenceProbability(0.95))
        println(result)
        @fact result --> contain(sigma^2)
    end

    context("by point variance") do
        variance = var(values)
        result = IntervalStatistic.var(values, IntervalStatistic.Variance.byPointVariance(0.95, variance))
        println(result)
        @fact result --> contain(variance)
    end
end

facts("estimate variance of standard (0, 1) distribution with 10 samples") do
    d = Normal()
    length = 10
    values = rand(d, length)
    mu, sigma = params(d)
    average = mean(values)

    context("by mean abs deviation") do
        result = IntervalStatistic.var(values, IntervalStatistic.Variance.byMeanAbsoluteDeviation(0.95))
        println(result)
        @fact result --> contain(sigma^2)
    end
end

facts("estimate variance of normanl mu=3 sigma=0.1 distribution with 10 samples") do
    d = Normal(3, 0.1)
    length = 10
    values = rand(d, length)
    mu, sigma = params(d)
    average = mean(values)

   context("by mean abs deviation") do
        result = IntervalStatistic.var(values, IntervalStatistic.Variance.byMeanAbsoluteDeviation(0.95))
        println(result)
        @fact result --> contain(sigma^2)
    end
end

end

ext: jl


text:
import CoverageTools

const MallocInfo = CoverageTools.MallocInfo
const analyze_malloc = CoverageTools.analyze_malloc
const analyze_malloc_files = CoverageTools.analyze_malloc_files
const find_malloc_files = CoverageTools.find_malloc_files
const sortbybytes = CoverageTools.sortbybytes


text:
@testset "Local Level With Cycle Model" begin
    rj_temp = CSV.File(StateSpaceModels.RJ_TEMPERATURE) |> DataFrame

    @test has_fit_methods(LocalLevelCycle)
    model = LocalLevelCycle(rj_temp.Values)
    fit!(model)
    # TODO check with other software maybe statsmodels
    @test loglike(model) ≈ -619.8679932 atol = 1e-5 rtol = 1e-5

    # forecasting
    forec = forecast(model, 52)
    @test monotone_forecast_variance(forec)

    smoother = kalman_smoother(model)
    alpha = get_smoothed_state(smoother)
    @test maximum(alpha[:, 1]) >= 296
    @test minimum(alpha[:, 1]) <= 296
    @test maximum(alpha[:, 2]) >= 7.5
    @test minimum(alpha[:, 2]) <= -7.5
end


text:
@enum WType i32 i64 f32 f64

WType(::Type{Int32}) = i32
WType(::Type{Int64}) = i64
WType(::Type{Float32}) = f32
WType(::Type{Float64}) = f64

WType(::Type{<:Union{Bool,UInt32}}) = i32
WType(::Type{UInt64}) = i64

const wtypenames = Dict(Symbol(x) => x for x in instances(WType))
WType(s::Symbol) = wtypenames[s]

WType(T::WType) = T

jltype(x::WType) = [Int32, Int64, Float32, Float64][Int(x)+1]

abstract type Instruction end

import Base.parse
parse(t::Type{WType}, s) = Dict(zip(map(string, instances(WType)), instances(WType)))[s]

struct Const <: Instruction
  typ::WType
  val::UInt64
end

Const(x::Union{UInt32,UInt64})   = Const(WType(typeof(x)), UInt64(x))
Const(x::Union{Int64,Int32})     = Const(WType(typeof(x)), reinterpret(UInt64, Int64(x)))
Const(x::Union{Float64,Float32}) = Const(WType(typeof(x)), reinterpret(UInt64, Float64(x)))
Const(x::Bool) = Const(Int32(x))

value(x::Const) = value(x, jltype(x.typ))
value(x::Const, T::Union{Type{Float64},Type{Int64}}) = reinterpret(T, x.val)
value(x::Const, T::Union{Type{Float32},Type{Int32}}) = T(value(x, widen(T)))

struct Nop <: Instruction end

const nop = Nop()

struct Local <: Instruction
  id::Int
end

struct SetLocal <: Instruction
  tee::Bool
  id::Int
end

struct GetGlobal <: Instruction
  id::Int
end

struct SetGlobal <: Instruction
  id::Int
end

struct Op <: Instruction
  name::Symbol
end

Op(x::WType, op::Symbol) = Op(Symbol(x, ".", op))

Base.getproperty(x::WType, op::Symbol) = Op(x, op)
Base.:(/)(x::Op, t::WType) = Op(Symbol(x.name, "/", t))

struct Select <: Instruction end

struct Convert <: Instruction
  to::WType
  from::WType
  name::Symbol
end

struct Block <: Instruction
  body::Vector{Instruction}
end

struct If <: Instruction
  t::Vector{Instruction}
  f::Vector{Instruction}
end

struct Loop <: Instruction
  body::Vector{Instruction}
end

struct Branch <: Instruction
  cond::Bool
  level::Int
end

struct Call <: Instruction
  name::Symbol
end

Branch(l::Integer) = Branch(false, l)

struct Return <: Instruction end

struct Unreachable <: Instruction end

const unreachable = Unreachable()

struct FuncType
  # TODO
end

struct Func
  name::Symbol
  params::Vector{WType}
  result::Vector{WType}
  locals::Vector{WType}
  body::Block
end

struct Table
  # TODO
end

struct Mem
  name::Symbol
  min::UInt32
  max::Union{UInt32,Nothing}
  Mem(name::Symbol, min::Integer, max = nothing) = new(name, min, max)
end

Mem(min::Integer, max = nothing) = Mem(:memory, min, max)

struct Global
  type::WType
  mut::Bool
  init::Instruction
end

Global(val, mut = true) = Global(WType(typeof(val)), mut, Const(val))
Global(T::WType, mut = true) = Global(jltype(T)(0), mut)

struct Elem
  # TODO
end

struct Data
  memidx::UInt32
  offset::UInt32
  data::Vector{UInt8}
end

struct Import
  mod::Symbol
  name::Symbol
  as::Symbol
  typ::Symbol   # :func, :table, :memory, :global
  params::Vector{WType}
  result::Vector{WType}
end

struct Export
  name::Symbol
  internalname::Symbol
  typ::Symbol   # :func, :table, :memory, :global
end

# TODO perhaps split this into sections
struct Module
  types::Vector{FuncType}
  funcs::Vector{Func}
  tables::Vector{Table}
  mems::Vector{Mem}       # Only one of these is allowed right now
  globals::Vector{Global}
  elem::Vector{Elem}
  data::Vector{Data}
  start::Ref{Int}
  imports::Vector{Import}
  exports::Vector{Export}
end

function func(m::Module, name)
  i = findfirst(f -> f.name == name, m.funcs)
  i == nothing || return m.funcs[i]
  i = findfirst(f -> f.as == name, m.imports)
  i == nothing || return m.imports[i]
  error("Function $name not found.")
end

Module(; types = [], funcs = [], tables = [], mems = [], globals = [], elem = [], data = [], start = Ref(0), imports = [], exports = []) =
  Module(types, funcs, tables, mems, globals, elem, data, start, imports, exports)

# Printing

Base.show(io::IO, i::Nop)      = print(io, "nop")
Base.show(io::IO, i::Const)    = print(io, i.typ, ".const ", value(i))
Base.show(io::IO, i::Local)    = print(io, "local.get ", i.id)
Base.show(io::IO, i::SetLocal) = print(io, i.tee ? "local.tee " : "local.set ", i.id)
Base.show(io::IO, i::GetGlobal)= print(io, "global.get ", i.id)
Base.show(io::IO, i::SetGlobal)= print(io, "global.set ", i.id)
Base.show(io::IO, i::Op)       = print(io, i.name)
Base.show(io::IO, i::Call)     = print(io, "call \$", i.name)
Base.show(io::IO, i::Convert)  = print(io, i.to, ".", i.name, "/", i.from)
Base.show(io::IO, i::Select)   = print(io, "select")
Base.show(io::IO, i::Branch)   = print(io, i.cond ? "br_if " : "br ", i.level)
Base.show(io::IO, i::Return)   = print(io, "return")
Base.show(io::IO, i::Unreachable) = print(io, "unreachable")

printwasm(io, x, level) = show(io, x)

function printwasm_(io, xs, level)
  for x in xs
    print(io, "\n", "  "^(level))
    print(io, "(")
    printwasm(io, x, level)
    print(io, ")")
  end
end

function printwasm(io, x::If, level)
  level += 1
  print(io, "if")
  if !isempty(x.t)
    print(io, "\n", "  "^level, "(then")
    printwasm_(io, x.t, level+1)
  end
  if !isempty(x.f)
    print(io, ")\n", "  "^level, "(else")
    printwasm_(io, x.f, level+1)
  end
  print(io, ")")
end

function printwasm(io, x::Block, level)
  print(io, "block")
  printwasm_(io, x.body, level+1)
end

function printwasm(io, x::Loop, level)
  print(io, "loop")
  printwasm_(io, x.body, level+1)
end

Base.show(io::IO, i::Union{Block,Loop,If}) = printwasm(io, i, 0)

function printwasm(io, x::Mem, level)
  print(io, "\n", "  "^(level))
  print(io, "(memory $(x.min))")    # TODO: add x.max
end

function printwasm(io, x::Data, level)
  print(io, "\n", "  "^(level))
  print(io, """(data (i32.const $(x.offset)) "$(String(x.data))"))""")
end

function printwasm(io, x::Export, level)
  print(io, "\n", "  "^(level))
  print(io, "(export \"$(x.name)\" ($(x.typ) \$$(x.internalname)))")
end

function printwasm(io, x::Import, level)
  print(io, "\n", "  "^(level))
  print(io, "(import \"$(x.mod)\" \"$(x.name)\" ($(x.typ) \$$(x.as)")
  if x.typ == :func && length(x.params) > 0
    print(io, " (param")
    foreach(p -> print(io, " $p"), x.params)
    print(io, ")")
  end
  if x.typ == :func && length(x.result) > 0
    print(io, " (result")
    foreach(p -> print(io, " $p"), x.result)
    print(io, ")")
  end
  print(io, "))")
end

function printwasm(io, x::Global, level)
  print(io, "\n", "  "^(level))
  print(io, "(global ")
  if x.mut
    print(io, "(mut ", x.type, ") ")
  else
    print(io, x.type, " ")
  end
  print(io, "(", x.init, "))")
end

function printvars(io, name, vs)
  if !isempty(vs)
    print(io, " (", name, " ")
    join(io, vs, " ")
    print(io, ")")
  end
end

function printwasm(io::IO, f::Func, level)
  print(io, "\n", "  "^(level))
  print(io, "(func \$$(f.name)")
  printvars(io, "param", f.params)
  printvars(io, "result", f.result)
  !isempty(f.locals) && print(io, "\n", "  "^level, " ")
  printvars(io, "local", f.locals)
  printwasm_(io, f.body.body, level + 1)
  print(io, ")")
end

Base.show(io::IO, f::Func) = printwasm(io, f, 1)

function Base.show(io::IO, m::Module)
  print(io, "(module")
  foreach(p -> printwasm(io, p, 1), m.imports)
  foreach(p -> printwasm(io, p, 1), m.exports)
  foreach(p -> printwasm(io, p, 1), m.globals)
  foreach(p -> printwasm(io, p, 1), m.mems)
  foreach(p -> printwasm(io, p, 1), m.data)
  foreach(p -> printwasm(io, p, 1), m.funcs)
  print(io, ")")
end


text:
sigmoid(x::Real) = 1 / (1 + exp(-x))
relu(x::Real) = max(x, 0.0)
softplus(x::Real) = log(1 + exp(x))
elu(x::Real) = max(x, 0.0) + (exp(x) - 1)*(x <= 0.0)

function Base.push!{T, A<:Activation}(net::ForwardNet{T}, ::Type{A},
    name::Symbol,
    parent::NameOrIndex,
    )

    input = ForwardNets.output(net[parent])
    output = deepcopy(input)
    node = A(name, input, output)
    push!(net, node, parent)
end
Base.push!{T, A<:Activation}(net::ForwardNet{T}, ::Type{A}, parent::NameOrIndex) =
    push!(net, A, create_next_name!(net, string(A)), parent)

type TanH{T} <: Activation{T}
    name::Symbol
    input::Array{T}
    output::Array{T}
end
name(a::TanH) = a.name
output(a::TanH) = a.output
function forward!(a::TanH)
    a.output .= tanh.(a.input)
    a
end

type ReLU{T} <: Activation{T}
    name::Symbol
    input::Array{T}
    output::Array{T}
end
name(a::ReLU) = a.name
output(a::ReLU) = a.output
function forward!{T}(a::ReLU{T})
    a.output .= max.(a.input, zero(T))
    a
end

type ELU{T} <: Activation{T}
    name::Symbol
    input::Array{T}
    output::Array{T}
end
name(a::ELU) = a.name
output(a::ELU) = a.output
function forward!{T}(a::ELU{T})
    a.output .= elu.(a.input)
    a
end

type SoftPlus{T} <: Activation{T}
    name::Symbol
    input::Array{T}
    output::Array{T}
end
name(a::SoftPlus) = a.name
output(a::SoftPlus) = a.output
function forward!(a::SoftPlus)
    a.output .= softplus.(a.input)
    a
end


text:
#############################################################
# Running Simulations
#############################################################

#Include KG_Module to run simulation
include("../../src/KG_Module.jl")

p0 = Param(

    #Temporal variables
    tmax           = 7000.0     ,
    out_every_t    = 2.0        ,
    deltat         = 0.05       ,

    #Spacial variables
    xmin           =  -30.0     ,
    xmax           =  30.0      ,
    xnodes         =  512       ,

    #Spacial variables
    ymin           =  -30.0     ,
    ymax           =  30.0      ,
    ynodes         =   512      ,

    #Initial Conditions
    A0              =   3.5     ,
    σ               =   1.5     ,
    r0              =   17.0    ,
    ω               =   0.5     ,
    m               =   2       ,

    #Klein Gordon Mass
    μ               =   0.0     ,

    #Dissipation terms
    dissipation     =  :true    ,

    R_orbit         = 0.0       ,
    R1              = 1.5       ,
    R2              = 0.0       ,

    Ω               = 0.45      , #(3)^(-3/2) ,      ,
    alpha1          = 10.0      ,
    alpha2          = 0.0       ,

    #Periodic BC?
    Boundaries      = :radial   , # :square :periodic

    #Data variables
    folder          = "/2021_06_23/"  ,       #must have a bar before the folder
    fname           = "default_name"

)

#Several rotation speeds (start with the highest!)
p1 = Param(     p0,
                Ω      =  0.5,
                fname = "single_bh_Radius_1.5_Alpha_10.0_Omega_0.50"
            )

p2 = Param(     p0,
                Ω      =  0.4,
                fname = "single_bh_Radius_1.5_Alpha_10.0_Omega_0.40"
            )

p3 = Param(     p0,
                Ω      =  0.3,
                fname = "single_bh_Radius_1.5_Alpha_10.0_Omega_0.30"
            )

p4 = Param(     p0,
                Ω      =  0.2,
                fname = "single_bh_Radius_1.5_Alpha_10.0_Omega_0.20"
            )

p5 = Param(     p0,
            Ω      =  0.1,
            fname = "single_bh_Radius_1.5_Alpha_10.0_Omega_0.10"
        )


text:
# by default, MLJType objects are `==` if: (i) they have ==
# type, AND (ii) they have the same set of *defined* fields AND (iii)
# their defined field values are `==` OR the values are both
# AbstractRNG objects.
import Base.==
function ==(m1::M1, m2::M2) where {M1<:MLJType,M2<:MLJType}
    if typeof(m1) != typeof(m2)
        return false
    end
    defined1 = filter(fieldnames(M1)|>collect) do fld
        isdefined(m1, fld)
    end
    defined2 = filter(fieldnames(M1)|>collect) do fld
        isdefined(m2, fld)
    end
    if defined1 != defined2
        return false
    end
    same_values = true
    for fld in defined1
        same_values = same_values &&
            (getfield(m1, fld) == getfield(m2, fld) ||
             getfield(m1, fld) isa AbstractRNG)
    end
    return same_values
end

# for using `replace` or `replace!` on collections of MLJType objects
# (eg, Model objects in a learning network) we need a stricter
# equality:
MLJBase.isequal(m1::MLJType, m2::MLJType) = (m1 === m2)

## TODO: Do we need to overload hash here?
function Base.in(x::MLJType, itr::Set)
    anymissing = false
    for y in itr
        v = (y === x)
        if ismissing(v)
            anymissing = true
        elseif v
            return true
        end
    end
    return anymissing ? missing : false
end


text:
using NQCDynamics
using Test
using RecursiveArrayTools
using DiffEqBase: CallbackSet

atoms = Atoms([:H])
model = NQCModels.Harmonic()
sim = Simulation(atoms, model)

positions = [randn(1, length(atoms)) for i=1:10]
velocities = [randn(1, length(atoms)) for i=1:10]
distribution = DynamicalDistribution(positions, velocities, (1, 1))

u = rand(distribution)
prob = DynamicsMethods.create_problem(u, (0.0, 1.0), sim)
@testset "OrderedSelection" begin
    selector = Ensembles.OrderedSelection(distribution, 1:10)
    new_prob = selector(prob, 3, false)
    u = getindex(distribution, 3)
    @test new_prob.u0 == ArrayPartition(u.v, u.r)
    selector = Ensembles.OrderedSelection(distribution, 6:10)
    new_prob = selector(prob, 3, false)
    u = getindex(distribution, 8)
    @test new_prob.u0 == ArrayPartition(u.v, u.r)
end

@testset "RandomSelection" begin
    selector = Ensembles.RandomSelection(distribution)
    new_prob = selector(prob, 3, false)
end

@testset "SelectWithCallbacks" begin
    selector = Ensembles.RandomSelection(distribution)
    Ensembles.SelectWithCallbacks(selector, CallbackSet(), (:position,), 10)
end


text:
module Particles

using StaticArrays

import Gloria: onevent!, render!, update!, after_update!
using Gloria: Gloria,
    AbstractObject, AbstractShape,
    Event, Font, Layer, Resources, Scene, Window,
    add!, kill!, play!,
    getmousestate, isalive, isbutton, iskey, ispressed, tocoordinates,
    text

using Gloria.Shapes: Shapes, Polygon, Vertex, rotate

using Gloria.Physics
using Gloria.Physics: Physics

using Colors: RGB, @colorant_str

##################################################
# Types
##################################################

mutable struct Controls <: AbstractObject end

struct Floor <: AbstractObject end
function Physical{Floor}(x, y, θ)
    Physical(
        Floor(),
        Shapes.HalfSpace(
            Vertex(0., 0),
            SVector(1., 0.) |> rotate(θ)
        ),
        position = SVector(x, y),
        static = true
    )
end

struct Plateau <: AbstractObject end
function Physical{Plateau}(x, y, w, h, θ)
    Physical(
        Plateau(),
        Shapes.Polygon(
            Vertex(-w/2., h/2),
            Vertex(w/2., h/2),
            Vertex(w/2., -h/2),
            Vertex(-w/2., -h/2)
        ),
        position = SVector(x, y),
        angle = SVector(θ),
        static = true
    )
end

mutable struct Particle <: AbstractObject
    color::RGB
end
function Physical{Particle}(color, x, y, n=4)
    vertices = map(0:n-1) do i
        Vertex(20cos(2π*i/n), 20sin(2π*i/n))
    end
    Physical(
        Particle(color),
        Polygon(vertices),
        position = SVector(x, y),
        mass = 5.0,
        angularmass = 1500.0,
    )
end

##################################################
# Events
##################################################

function onevent!(::Controls, e::Event{:key_down})
    iskey(e, "escape") && Gloria.quit!(window, e)
    iskey(e, "space") && (window.loops["update"].paused = !window.loops["update"].paused)
end

function onevent!(::Controls, e::Event{:mousebutton_down})
    if isbutton(e, "left")
        add!(object_layer, Physical{Particle}(colorant"#000", tocoordinates(object_layer, e.x, e.y)...))
    end
    if isbutton(e, "right")
        add!(object_layer, Physical{Particle}(colorant"#000", tocoordinates(object_layer, e.x, e.y)..., 6))
    end
end

##################################################
# Update
##################################################

function after_update!(self::Physical{Particle}, ::Layer, t, dt)
    Physics.applyimpulse!(self, SVector(0., Physics.mass(self)[1]*500.0*dt), Physics.position(self))
end

Physics.restitution(::Physical{Particle}, ::Physical{Particle}) = 0.1
Physics.restitution(::Physical{Floor}, ::Physical{Particle}) = 0.1
Physics.restitution(::Physical{Plateau}, ::Physical{Particle}) = 0.1
Physics.dynamicfriction(::Union{Physical{Floor}, Physical{Plateau}, Physical{Particle}}, ::Physical{Particle}) = 0.4
Physics.staticfriction(::Union{Physical{Floor}, Physical{Plateau}, Physical{Particle}}, ::Physical{Particle}) = 0.6

##################################################
# Render
##################################################

function render!(layer::Layer, self::Physical{Particle}, frame::Int, fps::Float64)
    render!(layer, self.shape, Physics.position(self)..., Physics.angle(self)..., color=self.color)
end

function render!(layer::Layer, self::Union{Physical{Floor}, Physical{Plateau}}, frame::Int, fps::Float64)
    render!(layer, self.shape, Physics.position(self)..., Physics.angle(self)..., color=colorant"#000")
end

function render!(layer::Layer, ::Controls, frame, fps)
    render!(layer, text(font_noto, "FPS: $(round(fps; digits=1))", color=colorant"#000"; halign=1.0), width, 0., 0.)
end

##################################################
# Setup
##################################################

function main(; keepalive=true)
    @eval begin
        const width, height = 800, 600
        const controls_layer = Layer([Controls()])

        const object_layer = Layer(AbstractObject[Physics.CollisionSolver{2}()], width/2, height/2)

        const scene = Scene(object_layer, controls_layer, color=colorant"#D0D0D0")

        const window = Window("Particles", width, height, scene, fullscreen=false)

        const resources = Resources(window)
        const keyboard = Gloria.KeyboardState()

        const font_noto = Font(resources, abspath(@__DIR__, "..", "assets", "NotoSans-Black.ttf"), fontsize=24)

        add!(object_layer, Physical{Floor}(0., 200., -90.))
        add!(object_layer, Physical{Floor}(0., -200., 80.))
        add!(object_layer, Physical{Floor}(-300., 0., 20.))
        add!(object_layer, Physical{Floor}(300., 0., 190.))
        add!(object_layer, Physical{Plateau}(-200., 0., 300., 20., 10.))
        add!(object_layer, Physical{Plateau}(50., -150., 300., 20., -10.))
        add!(object_layer, Physical{Plateau}(100., 150., 300., 20., -10.))
        for _ in 1:0
            add!(object_layer, Physical{Particle}(colorant"#000", rand(-width/2:width/2), rand(-height/2:(-height/2+200)), rand(3:7)))
        end

    end

    Gloria.run!(window)
    keepalive && wait(window)
end

end # module


text:
using Makie

 s1 = slider(LinRange(0.01, 1, 100), raw = true, camera = campixel!, start = 0.3)
 s2 = slider(LinRange(-2pi, 2pi, 100), raw = true, camera = campixel!)
 data = lift(s2[end][:value]) do v
     map(LinRange(0, 2pi, 100)) do x
         4f0 .* Point2f0(sin(x) + (sin(x * v) .* 0.1), cos(x) + (cos(x * v) .* 0.1))
     end
 end
 p = scatter(data, markersize = s1[end][:value])

 RecordEvents(
     hbox(p, vbox(s1, s2), parent = Scene(resolution = (500, 500))),
     "output"
 )

max_stars_repo_name: terasakisatoshi/juliaExer

max_issues_repo_name: terasakisatoshi/juliaExer

max_forks_repo_name: terasakisatoshi/juliaExer


text:
"Generic PDDL action definition."
struct GenericAction <: Action
    name::Symbol # Name of action
    args::Vector{Var} # GenericAction parameters
    types::Vector{Symbol} # Parameter types
    precond::Term # Precondition of action
    effect::Term # Effect of action
end

GenericAction(term::Term, precond::Term, effect::Term) =
    GenericAction(term.name, get_args(term), Symbol[], precond, effect)

Base.:(==)(a1::GenericAction, a2::GenericAction) = (a1.name == a2.name &&
    Set(a1.args) == Set(a2.args) && Set(a1.types) == Set(a2.types) &&
    a1.precond == a2.precond && a1.effect == a2.effect)

get_name(action::GenericAction) = action.name

get_argvars(action::GenericAction) = action.args

get_argtypes(action::GenericAction) = action.types

get_precond(action::GenericAction) = action.precond

function get_precond(action::GenericAction, args)
    subst = Subst(k => v for (k, v) in zip(action.args, args))
    return substitute(action.precond, subst)
end

get_effect(action::GenericAction) = action.effect

function get_effect(action::GenericAction, args)
    subst = Subst(k => v for (k, v) in zip(action.args, args))
    return substitute(action.effect, subst)
end


text:
Base.String(::Type{T}) where T<:TruncatedKernel = "Truncated"
Base.String(::Type{T}) where T<:ParzenKernel = "Parzen"
Base.String(::Type{T}) where T<:TukeyHanningKernel = "Tukey-Hanning"
Base.String(::Type{T}) where T<:BartlettKernel = "Bartlett"
Base.String(::Type{T}) where T<:QuadraticSpectralKernel = "Quadratic Spectral"

Base.size(x::CovarianceMatrix) = size(x.V)
Base.getindex(x::CovarianceMatrix, row, col) = getindex(x.V, row, col)
Base.eltype(x::CovarianceMatrix) = eltype(x.V)

LinearAlgebra.inv(x::CovarianceMatrix) = inv(x.F)
function LinearAlgebra.pinv(x::CovarianceMatrix{T}; kwargs...) where T<:SVD
    F = invfact(x)
    F'*F
end

invfact(x::CovarianceMatrix{T1}, lower::Bool = true) where T1<:Cholesky = !lower ? inv(x.F.U) : inv(x.F.L)

function invfact(x::CovarianceMatrix{T1}; regularize::Bool = true, atol::Real = 0.0, rtol::Real = (eps(real(float(one(eltype(x)))))*min(size(x)...))*iszero(atol)) where T1<:SVD
    Sr = similar(x.F.S)
    S = x.F.S
    Vt = x.F.Vt
    U = x.F.U
    if regularize
        maxabs = abs.(first(S))
        tol = max(rtol*maxabs, atol)
        @inbounds for j in eachindex(S)
            if S[j] <= tol
                Sr[j] = zero(eltype(x))
            else
                Sr[j] = 1/sqrt(S[j])
            end
        end
    end
    Diagonal(Sr)*Vt
end

function quadinv(g::AbstractMatrix, x::CovarianceMatrix)
    @assert size(x, 1) == size(g, 2)
    B = invfact(x)
    gw = B*Transpose(g)
    dot(gw, gw)
end

function quadinv(g::AbstractVector, x::CovarianceMatrix)
    @assert length(g) == size(x, 1)
    B = invfact(x)
    gw = B*g
    dot(gw, gw)
end

LinearAlgebra.eigmax(x::CovarianceMatrix{T1}) where {T1<:SVD} = first(x.F.S)
LinearAlgebra.eigmin(x::CovarianceMatrix{T1}) where {T1<:SVD} = last(x.F.S)

LinearAlgebra.eigmax(x::CovarianceMatrix{T1}) where {T1<:Cholesky} = eigmax(Matrix(x))
LinearAlgebra.eigmin(x::CovarianceMatrix{T1}) where {T1<:Cholesky} = eigmin(Matrix(x))

LinearAlgebra.Symmetric(x::CovarianceMatrix) = LinearAlgebra.Symmetric(x.V)

function LinearAlgebra.logdet(x::CovarianceMatrix{T1}) where {T1<:Cholesky}
    a = zero(eltype(x))
    @simd for j in 1:size(x, 1)
        @inbounds a += log.(x.F.U[j,j])
    end
    2*a
end

LinearAlgebra.logdet(x::CovarianceMatrix{T1}) where {T1<:SVD} = sum(log.(x.F.S))


text:
using MathLink

e = mlinitialize()
l = mlopen(e)
mlactivate(l)

# skip input packet
mlnextpacket(l) != MathLink.INPUTNAMEPKT && error("Unexpected MathLink packet")
mlnewpacket(l)

# factor(123456789)
mlput(l,MLFunction("EvaluatePacket",1))
mlput(l,MLFunction("FactorInteger",1))
mlput(l,123456789)
mlendpacket(l)

# check for next packet
p = mlnextpacket(l)

t = mlgetnext(l) # a function: this is a list of lists of integers
mlget(l,Array{Int}) # note: this is transposed from Mathematica output

# done
mlclose(l)
mldeinitialize(e)