efl/src/tests/eina/eina_test_rbtree.c

593 lines
88 KiB
C

/* EINA - EFL data type library
* Copyright (C) 2008 Cedric Bail
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library;
* if not, see <http://www.gnu.org/licenses/>.
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <Eina.h>
#include "eina_suite.h"
static const unsigned int r1[1000] =
{
494534539, 709255765, 808309457, 248840126, 474578725, 64355296, 1606165298, 200251875, 1423420644, 201453060, 1935759511,
727534932, 2117834837, 905931337, 2096963412, 558518433, 796581473, 1072026772, 948771371, 1337050116, 205170050, 1069717055, 600285325, 1197427194, 622416307, 103658299, 1033048038, 766945153, 1551858604, 1605299191, 460865184, 2046393144, 167071308, 1269174641, 147749622, 641650033,
1333529937, 1753914920, 841901908, 609466934, 1955367980, 630177771, 1337001866, 1925719170, 1536109108, 1286481630, 336753955, 185206933, 211024755, 1285525326, 1522257050, 416194805, 207758733, 2122542375, 1613621999, 830175041, 78717026, 499186389, 1597120194, 1630575630, 2104485580, 2057985378, 1529485126, 124073240, 1179676372, 1677234748, 765723273,
365722661, 1283666020, 1607625181, 975189595, 1091550353, 90319305, 164707814, 869785875, 1626428413, 1451189444, 1206539830, 1811635347, 1662214199, 344581508, 1186408749, 2078409005, 552340241, 1161467476, 1544547356, 1382515282, 1240184502, 2043733746, 832151829, 723276484, 2000735678, 742653559, 105277963, 2124808919, 1922329931, 1782512711, 743048544, 140568945, 918695084, 203190078, 1115758540, 2010245437, 293509383, 1280466354, 732547664, 1919937796,
584172151, 1939087494, 1584089495, 98902702, 136185354, 623014596, 29828059, 688525595, 1784482072, 1574375416, 2071040878, 877182926, 1470625514, 755709059, 1600459411, 1323877544, 1498362618, 1705737374, 1301202815, 1273208902, 1340766437, 2044251360, 1413777847, 111977873, 99957790, 382052739, 2122223310, 393467173, 1662519094, 707287326, 165921321, 99207597, 498891172, 1750010817, 198110299, 635076526, 225541765, 227938359, 1323602122, 2010023838, 1802313775, 1247159352, 739723116, 1125455641, 2002868411, 192698879, 301849537, 1353747381, 1898436253, 1603052353, 479472635, 1091719043, 1499820065, 1893250482, 1203696916, 1599777855, 127819574, 1178436579, 1993245028, 1790338668, 1885723905, 11682701, 1889546265, 237131430, 1761693518, 2087656564, 872207956, 1987235284, 168111275, 48326430, 1849775474, 1970425050, 1295485782, 442014942, 948397043, 1150870545, 634713822, 1250246581, 357134279, 385666427, 705815286, 836606914, 1477385470, 58151703, 582373749, 533598739, 1657929558, 710193323, 1712035318, 1503690938, 353048343, 1450275575, 1515373639, 95110960, 1687407005, 1129583510, 35283876, 412131314, 969335146, 203395152, 460457744, 671626972, 26336554, 1755943527, 1113641914, 974733598, 759330424, 1748355736, 77496531, 1116464703, 2134022164, 783311817, 1953071618, 1463923986, 841463520, 387961719, 1997522725, 351909430, 1098155042, 1562074395, 1855600368, 1451203385, 864866323, 1223490359, 1546314345, 404789680, 205590221, 1581598221, 816920994, 1174925367, 1784993373, 1277378739, 1846552339, 1811329928, 885838618, 812710606, 638579878, 1645169042, 413582694, 716076409, 614150098, 400121210, 1499388226, 419738068, 1864045197, 193368098, 807699787, 1714084274, 545277528, 1905854829, 1128675022, 253394248, 1209574566, 1993541345, 1476884607, 608405263, 250847377, 1682474829, 42519836,
1067768372, 709916548, 1827513210, 197663463, 408985240, 1491359490, 1083502081, 1221695846, 2129939368, 581187475, 1635278540, 698532129, 1195337573, 2035399751, 50436707, 1615075641, 1751961300, 243804805, 275291780, 1318561926, 789082333, 33662961, 299753300, 1042476581, 1243237527, 145810997, 371877540, 1851642790, 396658375, 2054352369, 1894162627, 1464426747, 616785270, 1574192189, 1662090210, 1025770510, 918068031, 598108643, 99982708, 900523751, 1179296118, 1735261248, 1599055880, 227150044, 1623177351, 1649492587, 1842225685, 1227655003, 1893297392, 2117517466, 398733282, 534896077, 3696779, 698486582, 1577372658, 1246934307, 844297580, 1949250198, 951093449, 1240955955, 1856118920, 697772428, 557899054, 325420542, 124480969, 72505616, 1351191052, 1042549000, 670614259, 1451173760, 1943072751, 1849910377, 1038951360, 1394644983, 2077060421, 514645064, 896653922, 1771802459, 1742300067, 642467666, 1741836277, 2141033349, 1177363743, 1745533056, 692036284, 607252753, 844983715, 1536333864, 409019304, 1796077165, 629806171, 117654576, 346365945, 1187705225, 443075118, 470846915, 1260210841, 1794266170, 1513395915, 1930825100, 1097956282, 1308985019, 1633251829, 2136907642, 556146354, 1562828603, 504069058, 1452800277, 1187147414, 98885478, 2095267943, 781500043, 92435179, 1125148039, 379549451, 784471463, 1732400792, 1224533167, 173321679, 2141420096, 873126684, 803127850, 111591024, 1219492629, 1990833075, 554666142, 1690339544, 1103560268, 201448664, 1056251812, 886901720, 1299404946, 217753183, 372669902, 1288828941, 773899537, 1935498505, 1792897999, 79216166, 975162271, 1891783477, 27000462, 1756662314, 1984218657, 1152148501, 2136211765, 621206472, 737065645, 1213261284, 794528152, 731002094, 2086387968, 1597656002, 842593118, 1158396950, 1441005430, 1397259261, 701252846, 397082050, 1598707925, 1757504658, 1283983771, 750629224, 1975257841, 1656653673, 2039458165, 601673731, 1444668530, 1684872516, 680889897, 272347153, 1429172346, 707890359, 2029009467, 1265907355, 1860038860, 2017737584, 1887113827, 449620858, 1083515221, 534158331, 1180622952,
1022419541, 2131814334, 2023216070, 33332843, 1425336116, 1272991683, 734585690, 1822418166, 724215961, 344606700, 958918289, 1474845185, 172380894, 468088314, 1366819702, 774054625, 1912756844, 904208570, 1454944522, 37620349, 185897268, 15351234, 2066629816, 1451804623, 1875390094, 1936883753, 1191434803, 177527304, 872915326, 1725593134, 1358150256, 1895334867, 1709923820, 1233882679, 1928667711, 987776288, 359390714, 515769753, 662710807, 1083606675, 860376453, 1621629096, 410968212, 1032757347, 2089717411, 1777787914, 1806811972, 1854990607, 534512837, 1114272847, 1892610957, 720410105, 1129624081, 1811757125, 24731081, 857530527, 1601157230, 1216165884, 1035057832, 326588908, 794275370, 245724440, 74440128, 356715543, 1479607119, 2003107839, 1344491831, 1838997834, 371393944, 2007202638, 775120861, 1231770397, 1481348087, 1186089074, 117044097, 1423581850, 816393340, 1923856069, 1131088809, 1350906177, 890645268, 876216118, 2071316283, 2020269349, 540489596, 2096047364, 730316229, 2141646826, 1164729600, 1765374061, 320752087, 1959004970, 2011098501, 395192215, 168236865, 1343221973, 250816406, 1512728697, 1034736159, 622210350, 1372447687, 1809857020, 1853980747, 706312126, 848462446, 1971024844, 2129893976, 1664855787, 1747397266, 1113499138, 868278316, 490558886, 1989715256, 792110951, 363344588, 382721204, 740674667, 1093660817, 376884383, 1905404267, 711551230, 697636470, 1716925590, 575166083, 1092828685, 1885162455, 1918388056, 1343645091, 1250407504, 805640567, 1965855441, 475371544, 468013940, 1672352540, 1181683670, 1316476386, 1495893737, 1164093999, 833848525, 1095807355, 130109489, 1702126842, 1586366241, 2119824745, 346754145, 1949710829, 355062302, 1087428813, 895887998, 731946685, 845349432, 1607439228, 1429583155, 414791374, 35121664, 374928192, 152470182, 1953509720, 1718573283, 1402877686, 611666640, 1536945076, 1878249230,
1079680580, 1061813968, 912449253, 248673318, 410224057, 2076543252, 1082521844, 1506031412, 59169093, 637165038, 944914006, 31510190, 983919183, 747141187, 386572492, 2071347996, 1643029186, 1118519177, 769213781, 1102984766, 400618684, 1184005155, 1138106430, 775546876, 1336475337, 944132503, 346636511, 591869376, 1555799143, 1883581587, 322634958, 487996075, 797911908, 1235084211, 736669393, 1208135965, 1164143815, 1819191237, 566683730, 1223312908, 308872627, 1511597736, 1254823099, 1292791811, 111255275, 1641395591, 1216656159, 1754284461, 612431121, 1985869940, 709785580, 1013049805, 1022391448, 1847892010, 1788596682, 211383137, 644540865, 2135233193, 803252513, 52856360, 1871331133, 1125887472, 540852435, 521759393, 213488035, 1277521829, 1729895358, 1377631851, 949229418, 149095440, 453461111, 1258102046, 1660693176, 1708284210, 403410209, 1771948452, 1202196154, 1620066368, 1378749265, 1814627275, 1458452661, 2088534845, 680193432, 333360461, 1788943208, 321306466, 544743598, 286000425, 309056012, 1347996112, 338856786, 32903497, 326399936, 879709221, 554662890, 539887971, 9747402, 137074600, 1917519822, 958976821, 286170041, 223497286, 69595219, 1946863217, 1931781496, 473005428, 1571328021, 986494002, 2093071796, 802593639, 653637629,
1404040809, 743644836, 1333831062, 1737401270, 385104396, 1655137528, 134661221, 671104822, 1964193540, 1482657333, 1009961608, 1997097037, 1809057269, 1889670829, 404276279, 201461592, 1899418232, 541350880, 2118981415, 710911405, 827520921, 194995053, 780506624, 626900490, 2126776549, 1253512052, 50744864, 965786904, 1199100200, 853338503, 1619424533, 455657362, 1596983339, 805771947, 45574984, 1982087736, 313425828, 180236205, 505708910, 130135720, 1662893538, 1515670518, 2127232758, 1324467159, 1257857699, 384025389, 1525928752, 1009792283, 925376269, 1497426519, 1720703688, 1752897190, 1692421572, 353726664, 232314033, 1671714473, 1607238716, 283058897, 490017729, 658855269, 1136397400, 2109442263, 1114512631, 585897091, 767730562, 1160087615, 420501179, 1081156390, 1340323821, 926210089, 1211292111, 855733711, 294396959, 1191041221, 32717223, 1552254659, 1575066610, 1558645975, 414563294, 352959232, 908588846, 2135266983, 2105856422, 453526770, 341509999, 190686807, 2125241243, 1948748716, 473745704, 467775325, 460120337, 1610143104, 429733940, 1574632968, 48556548, 1197464502, 587236935, 469057727, 131137245, 1927560756, 1395267817, 1342429356, 635810820, 1689664776, 385986929, 668528043, 1094435787, 1961053539, 79690370, 1508999082, 166529123, 988279216, 1496782417, 124901898, 1441805986, 1838292416, 315588705, 1419563581, 1639557484, 789334410, 1887338906, 2099677821, 251993866, 169589198, 1526827141, 300550414, 1367053701, 2114064077, 769608142, 1498190946, 1894141185, 17392311, 693136654, 382468357, 1707057087, 1079123583, 1050996400, 654009227, 892693474, 1130686770, 15524661, 1059222598, 2118965986, 1512307078, 1184124496, 1413288324, 1203115846, 1499713201, 685368258, 695189683, 141563963, 425223516, 647383856, 393557830, 594812715, 26727350, 694108244, 1961866416, 2140791427, 1463716386, 1312573714, 1887448964, 1481108697, 2005710368, 122433674, 1040682137, 937350303, 1173430074, 1694691364, 1830043777, 156633197, 1710216025, 741782727, 128115535, 1075039455, 1925907223, 1541403860, 130671653, 1278136777, 79288470, 825861336, 1419700740, 504511986, 1473245193, 1813258570, 1099324701, 1499972543, 359883167, 913707469, 1493280322, 1823599553, 78797535, 1233245638, 1157224603, 2084507903, 1355679312, 50423092, 874374558, 381625739, 1745114456, 556934688, 538258936, 1307846833, 1298717415,
666374471, 235402640, 1077140991, 60294683, 366074293, 207794120, 139583153, 1191935630, 1627494860, 644095140, 517697175, 1293269783, 1743419841, 2017669718, 1653152950, 509643663, 1363466392, 1329268855, 588441198, 449228382, 339009810, 525465454, 1804907695, 389432902, 1399840012, 39049786, 2134547358, 1956774700, 577308722, 1294910543, 1108008468, 1243683193, 1530313183, 37665811, 1303977877, 1896387477, 245459931, 1443561030, 940839459, 1872954791, 2087656170, 1458536634, 1018740926, 1683592364, 1328722704, 524410228, 45752379, 544705448, 1853679084, 634193577, 993933830, 45205246, 1159659031, 651357877, 434638149, 412015396, 690407663, 421701859, 221306448, 1267716385, 1716612403, 1329314916, 363915931, 1099441938, 1366980727, 1667893808, 848345767, 1612440658, 963971190, 1789185226, 1337911802, 904143713, 1100238212, 209169080
};
static const unsigned int r2[10000] =
{
11423, 23305, 22422, 3286, 28841, 6652, 3499, 3618, 8363, 31491, 15444, 5852, 19081, 28074, 15631, 28112, 32389, 13015, 26077, 16467, 10087, 12788, 9679, 15525, 29177, 24, 1856, 21048, 2684, 5022, 8091, 14107, 28327, 30513, 17394, 24400, 4397, 20893, 28018, 12761, 19616, 10695, 18613, 5930, 6001, 1477, 1274, 5622, 14492, 27351, 22089,
24579, 7371, 31769, 7336, 3780, 31793, 9193, 24828, 1709, 14215, 151, 15817, 9774, 30664, 443, 1407, 2294, 21336, 29425, 15055, 8184, 7352, 900, 14114, 13354, 2377, 15389, 18976, 16869, 9972, 8298, 8681, 17344, 7299, 16017, 21124, 6324, 25210, 13185, 8033, 6657, 13336, 23850, 16432, 11233, 24293, 17839, 13527, 12861, 14496, 28582, 21046, 21849, 29482, 2392, 2435, 31860, 17781, 21411, 15961, 27754, 29709, 24642, 12330,
4240, 7892, 686, 10564, 334, 13871, 18598, 6992, 27208, 9680, 23424, 5673, 1206, 8495, 19200, 14067, 22991, 15014, 2345, 12072, 11728, 4738, 14507, 10820, 22519, 3151, 26782, 17505, 92, 18656, 29835, 4333, 26548, 30522, 14897, 26883, 11625, 727, 1107, 6065, 10408, 24531, 11738, 11614, 258, 30938, 25681, 23249, 13184, 28027, 2554, 24913, 32765, 17061, 2965, 22516, 20212, 29747, 7254, 20305, 15636, 4321, 24638, 9416,
2075, 6767, 3531, 13701, 7495, 4638, 19766, 17903, 29169, 31505, 29517, 29427, 29675, 22430, 19909, 10092, 17689, 22463, 2237, 17686, 16972, 5202, 7435, 26969, 2182, 14689, 14506, 17818, 19010, 6376, 27234, 21086, 13143, 30766, 2019, 20638, 2636, 21785, 5773, 31806, 20522, 2522, 28465, 17430, 24953, 15606, 27522, 9874, 5301, 29759, 27561, 12058, 2193, 2228, 6259, 4375, 16917, 20765, 22193, 3159, 27141, 16660, 24245, 7516,
14658, 26264, 28155, 17294, 15282, 1160, 16332, 3036, 3683, 12030, 20466, 28636, 27636, 15220, 5742, 170, 12211, 535, 12228, 14405, 2763, 18487, 18780, 19680, 6484, 8206, 22840, 857, 24866, 14317, 8373, 6756, 7814, 3760, 24050, 23096, 4921, 7615, 26132, 8604, 19645, 13831, 4472, 14513, 29051, 10214, 14683, 8495, 10750, 26911, 22900, 13513, 12630, 8912, 426, 19114, 17118, 23266, 19971, 9216, 4815, 28345, 15972, 12629,
32105, 7255, 2957, 4258, 14870, 29090, 12862, 1747, 10153, 17334, 16260, 6436, 27549, 30944, 14931, 5531, 25087, 5063, 19044, 4950, 13976, 19470, 24064, 31094, 9968, 11268, 7543, 14784, 6845, 23515, 27413, 6182, 30770, 30371, 10441, 12872, 26693, 23303, 14619, 4078, 7870, 30880, 10514, 2651, 29056, 25446, 8182, 21375, 30509, 27226, 26325, 11717, 13929, 17622, 10044, 23897, 28890, 17587, 5913, 2967, 8334, 559, 9149, 6337,
30930, 19590, 19209, 24855, 10126, 1061, 28933, 17996, 31941, 6679, 20647, 28229, 32125, 28829, 16836, 29867, 23287, 10394, 8816, 4448, 28016, 18860, 28346, 24138, 3679, 1491, 27105, 12014, 2050, 3486, 18351, 212, 23077, 4792, 25067, 435, 5853, 21232, 18431, 5026, 27912, 6310, 487, 27269, 2371, 17324, 24368, 25658, 27718, 417, 30107, 22966, 19277, 25685, 14336, 22957, 27176, 8673, 2203, 29227, 12159, 20554, 29439, 2468,
25346, 21739, 2903, 31200, 10203, 21334, 3458, 5347, 27644, 3946, 32617, 30015, 21270, 24217, 22906, 16220, 24634, 20245, 6418, 11144, 13162, 20754, 1333, 7570, 29427, 3536, 4029, 8818, 24090, 701, 11287, 16668, 22440, 14190, 15100, 32643, 2757, 18559, 5223, 30401, 22505, 5072, 27649, 11007, 29289, 17787, 27227, 21156, 5264, 877, 32300, 18426, 21631, 865, 25996, 18290, 4401, 30026, 27108, 28491, 30727, 5627, 12391, 20399,
19818,
27492, 20274, 22575, 13283, 25497, 20208, 3020, 30569, 15089, 14027, 27091, 108, 8486, 15479, 5372, 9363, 15011, 23798, 30994, 15876, 17027, 16516, 20277, 14285, 10856, 16000, 12244, 16484, 28391, 32643, 3534, 23115, 20149, 26109, 3630, 12879, 13549, 6650, 10680, 28639, 20677, 5003, 28747, 29163, 20482, 1352, 5758, 2725, 22541, 3984, 18601, 9409, 20500, 6110, 23694, 31357, 22110, 3170, 15073, 17734, 3045, 18607, 8081,
23195, 11948, 11712, 3306, 25497, 18362, 13986, 21368, 6272, 18990, 17348, 2667, 6704, 18700, 8426, 9430, 11082, 12410, 28031, 20492, 143, 1374, 11418, 31500, 23484, 14589, 13805, 8450, 17634, 32412, 16532, 8061, 11592, 28244, 11367, 4321, 13838, 25354, 25690, 20110, 11576, 10270, 22778, 18280, 28970, 31204, 27710, 7284, 10846, 22974, 27776, 10989, 24348, 6427, 9721, 15064, 21016, 23526, 23515, 5882, 23170, 7279, 13944, 1994,
2755, 25311, 6316, 16593, 17897, 32006, 3936, 29473, 9508, 26714, 14986, 5710, 25150, 9928, 12994, 3228, 134, 8003, 14218, 24482, 14430, 23939, 6779, 2678, 14698, 30294, 8560, 5100, 4805, 22504, 7095, 7560, 15048, 13411, 24153, 177, 12649, 28089, 29651, 22157, 22035, 11869, 27867, 14417, 21797, 8093, 17646, 21932, 16096, 31864, 13646, 30526, 23035, 20425, 436, 4965, 17951, 8997, 10066, 22756, 31501, 17161, 30316, 13781,
30572, 21702, 13959, 10453, 17023, 10842, 32610, 6291, 22711, 27709, 20708, 11740, 3034, 5586, 904, 19131, 4682, 14551, 16889, 27718, 2208, 17326, 32683, 20160, 26323, 9981, 10148, 25056, 27142, 7697, 6070, 24946, 29399, 20029, 2631, 13654, 30871, 2473, 19945, 20814, 30182, 7886, 32554, 449, 13472, 691, 19580, 18155, 15242, 3701, 13105, 17450, 21027, 13020, 4842, 14582, 23002, 14991, 6871, 17376, 22688, 12941, 9555, 19319,
202, 12186, 205, 31073, 14660, 20151, 19119, 12074, 28037, 18905, 12523, 8741, 19596, 32103, 26896, 2070, 3037, 7233, 19521, 24064, 20254, 24363, 5879, 10488, 6586, 12750, 27864, 29274, 25691, 4651, 15825, 25893, 16838, 16031, 24198, 31498, 3414, 10549, 10804, 31451, 29454, 23328, 7424, 16283, 22663, 1553, 18353, 25700, 8786, 5106, 16997, 29040, 29470, 22876, 6760, 3288, 2858, 1857, 32563, 28549, 6508, 15620, 21674, 23346,
31651, 13104, 22076, 2297, 23653, 113, 980, 20339, 23441, 8405, 3854, 13336, 9958, 22208, 6269, 18744, 27314, 23266, 15017, 24016, 13374, 21777, 27305, 16232, 23634, 27100, 12013, 30143, 9952, 919, 20721, 8836, 14023, 10030, 11133, 4908, 10143, 12114, 25247, 816, 20519, 29102, 14152, 30477, 18542, 20421, 16453, 13088, 10919, 31470, 4337, 24293, 20480, 31642, 7757, 11346, 25974, 19770, 8721, 3158, 20689, 29443, 11994, 1944,
6705, 23128, 6852, 16848, 2474, 32100, 17664, 22993, 28434, 31816, 20702, 14208, 19470, 4387, 27296, 30389, 3090, 31633, 21915, 23570, 30507, 29672, 2148, 23713, 16675, 10870, 26872, 4596, 7545, 6098, 6541, 14250, 29226, 13393, 31098, 31700, 12725, 15994, 21925, 8391, 15042, 9859, 22599, 1744, 14247, 17128, 32134, 17337, 15993, 21281, 8139, 13733, 18185, 10287, 4678, 2092, 21157, 31550, 6689, 28702, 4881, 13230, 10184, 1339,
26623, 8514, 272, 6581, 24508, 22197, 14972, 6783, 32057, 4804, 8527, 13536, 21932, 7893, 30873, 5157, 29174, 6244, 18890, 14592, 16531, 23569, 16684, 4921, 22351, 23373, 855, 27232, 3835, 11040, 28572, 30459, 19554, 28844, 4272, 11295, 18273, 19244, 18078, 17562, 24048, 26605, 31098, 13212, 1731, 29203, 18370, 30905, 2679, 4492, 12729, 19211, 28061, 29414, 24132, 17645, 20019, 24987, 12109, 23855, 3259, 7913, 21546, 22814,
10816, 12909, 12637, 16217, 16673, 3326, 19102, 14982, 23485, 31270, 29711, 661, 3844, 32650, 2535, 26090, 11854, 29605, 25631, 11767, 10782, 7880, 7479, 3240, 7534, 14150, 7956, 6157, 8368, 29811, 9208, 4575, 781, 10075, 19990, 32318, 16581, 8079, 21035,
20987, 7195, 2568, 23415, 12850, 24474, 14603, 1782, 8048, 6232, 14562, 9917, 11954, 28879, 28974, 15194, 3645, 10356, 23150, 9803, 18725, 20194, 19011, 23300, 20975, 29086, 10522, 20525, 12899, 18601, 8792, 1118, 25796, 11360, 24533, 5878, 3067, 6368, 7660, 11115, 12601, 22223, 21032, 24555, 18334, 17238, 6981, 21979, 27595, 30132, 31782, 13552, 17558, 18025, 4084, 5765, 14343, 14606, 26291, 27242, 439, 2315, 28360, 26235,
13676, 20125, 32113, 16743, 26494, 7006, 27858, 6327, 29229, 16123, 30882, 14795, 593, 5095, 4006, 28188, 2459, 3021, 8972, 20017, 21046, 13056, 25783, 2622, 27662, 19306, 29864, 28101, 21621, 25457, 21568, 2529, 12814, 20914, 19272, 6540, 27920, 14363, 12867, 24381, 30486, 10981, 6408, 31079, 16077, 10414, 26500, 18536, 13435, 2704, 5786, 1714, 15761, 31569, 4336, 10655, 18107, 1432, 5989, 6960, 26889, 27557, 9490, 6936,
15703, 28762, 13476, 10855, 10357, 26344, 2468, 8075, 4557, 8876, 6387, 20634, 19291, 119, 6403, 32726, 2823, 12189, 1672, 18584, 10990, 6008, 29240, 29097, 7441, 2461, 3289, 1562, 30018, 12779, 8498, 12954, 8774, 21975, 23809, 19131, 15551, 26278, 27207, 20108, 2386, 826, 7975, 21677, 945, 14378, 21636, 3768, 26567, 23308, 22353, 4789, 29317, 18825, 1118, 3990, 21286, 4407, 5552, 18536, 17187, 14051, 31490, 25961,
3258, 22532, 12324, 18809, 16042, 6763, 6149, 18428, 7589, 14124, 7338, 8534, 28502, 28974, 12303, 22301, 19514, 1888, 27090, 16063, 20713, 28208, 20053, 9231, 32616, 25606, 27767, 17035, 6889, 26490, 10228, 10147, 16254, 22552, 28956, 32296, 29316, 2337, 17956, 4137, 16462, 25294, 12672, 12196, 21500, 24975, 1730, 8247, 26863, 28820, 24310, 14808, 24261, 11596, 24039, 24109, 4434, 19038, 8376, 11323, 12760, 18604, 21470, 29014,
8388, 17658, 28542, 4936, 19995, 13731, 9074, 3689, 6257, 21746, 15886, 27758, 13953, 17616, 3237, 8048, 13668, 27547, 22856, 5161, 6375, 14127, 29270, 10809, 397, 4878, 22132, 13158, 23482, 10834, 9404, 31871, 28492, 5179, 4039, 15720, 18910, 13113, 19409, 25167, 2091, 2527, 20157, 16044, 20143, 23394, 24092, 1044, 18174, 14180, 6205, 24549, 28307, 2708, 2591, 28705, 7586, 24723, 9095, 31069, 2790, 18499, 30172, 31282,
23678, 1443, 14234, 9820, 14557, 876, 2220, 16648, 3403, 22377, 32693, 23547, 13004, 24017, 24591, 31178, 5430, 30796, 22959, 969, 736, 25550, 29674, 8323, 17506, 6001, 6624, 20296, 24501, 4028, 18810, 15411, 5471, 277, 25232, 20028, 1153, 27452, 3909, 4556, 17061, 3834, 28103, 30065, 27851, 19926, 28475, 513, 17955, 18667, 1483, 18691, 11449, 31157, 27014, 28955, 4391, 870, 16483, 28892, 4898, 2526, 11535, 10370,
2803, 3999, 30398, 3956, 31451, 1539, 8512, 15745, 5373, 3848, 13042, 457, 23774, 8750, 970, 8961, 27417, 2453, 27653, 6098, 843, 21899, 2286, 5234, 22770, 18769, 1358, 27668, 21295, 12893, 5270, 24098, 16893, 2901, 28054, 15576, 4440, 3799, 31321, 9814, 7647, 11596, 10271, 31421, 20346, 11241, 7615, 14995, 13695, 2500, 21093, 14538, 24399, 23379, 19772, 14401, 9381, 21130, 9302, 30676, 1255, 14572, 22007, 18148,
17473, 17293, 957, 21914, 21092, 32278, 31728, 28739, 11106, 9231, 27393, 31452, 20472, 2240, 13679, 1399, 4740, 2005, 15937, 29139, 25384, 2941, 10773, 1997, 24071, 20075, 32674, 25327, 1879, 21913, 10707, 19353, 6438, 11664, 8499, 27531, 11175, 7459, 23502, 22281, 16690, 18127, 20966, 4394, 20367, 1877, 5794, 25107, 3882, 21731, 21479, 29267, 24673, 32252, 31264, 15976, 19559, 31170, 8535, 21438, 20315, 19243, 8023, 26754,
30907, 16522, 21517, 9314, 23981, 12251, 31596, 7903, 30379, 19794, 12298, 17978, 21671, 18092, 10318, 25554, 7055, 31797, 22053, 31728, 31281, 20549, 14937, 18072, 18952, 23472, 6742, 6499, 9947, 14766, 485, 8087, 31288, 22002, 17401, 22502, 1486, 16229, 30405, 31865, 3255, 9935, 17075, 24927, 28027, 27393, 17713, 2315, 26422, 6998, 1275, 24935, 27547, 16212, 10239, 13731, 6917, 16982, 20231, 16864, 31748, 20716, 24951, 30268,
9951, 9585, 20002, 11437, 25814, 17640, 10534, 29070, 27575, 27609, 21229, 22835, 22235, 6174, 25150, 15889, 13172, 26425, 8057, 7951, 9870, 18296, 21683, 16787, 2510, 9146, 883, 1490, 29862, 25835, 31759, 7045, 2652, 18993, 18482, 28466, 3865, 29016, 24768, 31441, 23858, 13229, 21508, 13325, 19403, 13890, 29214, 32575, 7547, 4503, 7759, 17417, 22800, 29442, 1436, 25310, 5820, 2320, 26801, 2914, 28155, 25792, 9960, 30807,
12017, 28442, 26505, 15883, 24691, 18506, 14556, 15781, 31735, 3296, 29106, 18371, 17186, 25552, 18178, 24733, 30056, 25937, 9383, 20088, 22611, 10819, 12630, 28431, 13139, 6663, 31346, 8526, 32455, 8538, 6565, 11705, 4212, 303, 27588, 28903, 18809, 9376, 11916, 17776, 12672, 8254, 3379, 29858, 1039, 21558, 21823, 31095, 14727, 31206, 18415, 4571, 9258, 31045, 234, 22397, 4941, 31580, 30924, 4628, 7350, 4721, 16333, 11563,
5024, 11153, 7698, 23833, 20529, 19615, 8842, 433, 27869, 12221, 30291, 28908, 1011, 19347, 27235, 15739, 17785, 12882, 20310, 27043, 11160, 20544, 16673, 16101, 19357, 14829, 20729, 26707, 19550, 4295, 5502, 24575, 15448, 13201, 15640, 3210, 48, 24482, 3643, 27917, 3936, 1167, 24058, 4947, 20514, 18525, 20686, 5531, 31408, 8228, 32575, 9800, 28773, 16480, 25901, 15362, 31309, 13862, 9301, 18091, 18157, 14804, 9898, 838,
28005, 25539, 4048, 28053, 17253, 7691, 23202, 21189, 8858, 14492, 26137, 29372, 250, 14055, 2136, 31658, 22284, 1943, 8690, 18289, 18423, 1823, 883, 16964, 15685, 10184, 2287, 1075, 24988, 12186, 1913, 20225, 4957, 5961, 15510, 22210, 13652, 5945, 10632, 22511, 20437, 4001, 19115, 20687, 18056, 21251, 19577, 7572, 23194, 28267, 25861, 8849, 30090, 26744, 25813, 13008, 4161, 28101, 14083, 29149, 7519, 15996, 16607, 12476,
21957, 32117, 1918, 2841, 5294, 12550, 25352, 25732, 16551, 11700, 13651, 1840, 183, 461, 9412, 23378, 28728, 2506, 32227, 26051, 29250, 25273, 6291, 643, 20606, 20374, 29793, 28125, 3602, 13632, 7833, 25559, 12981, 9751, 28400, 18276, 22302, 20985, 11240, 6085, 32685, 24891, 7925, 100, 25352, 17338, 23478, 21313, 19844, 22938, 14596, 16326, 15443, 20887, 16970, 3281, 8493, 13995, 31406, 12095, 27627, 6471, 4886, 7840,
16222, 518, 26116, 5756, 21503, 4588, 11842, 21420, 29480, 19767, 21521, 22064, 4337, 12231, 10609, 24181, 2401, 25205, 7740, 17844, 13324, 24710, 21125, 21817, 5937, 19763, 1144, 796, 26234, 6030, 8636, 9689, 6549, 1985, 15445, 28052, 6573, 27287, 16705, 3285, 14287, 5458, 25350, 18624, 17689, 3191, 10038, 20091, 28397, 17778, 5167, 8953, 9720, 26293, 30771, 15657, 13288, 31915, 16453, 6755, 5178, 25089, 16444, 11727,
27074, 31889, 7011, 880, 26409, 23716, 4165, 7928, 29174, 29515, 26552, 14096, 32707, 3822, 1419, 28336, 21600, 6586, 4521, 31320, 111, 2524, 14209, 13400, 1672, 30662, 20155, 6850, 22984, 3831, 18577, 17290, 2952, 25588, 18170, 29361, 16537, 22336, 4521, 12943, 19083, 31074, 27039, 19022, 2128, 28458, 14590, 23729, 2277, 19112, 22281, 2388, 21636, 3723, 15788, 23308, 1617, 3175, 30158, 24601, 7006, 15967, 9124, 9959,
8788, 27294, 6552, 25325, 16862, 11074, 5500, 3178, 9380, 32540, 22200, 11508, 28230, 4023, 2469, 30507, 23135, 24751, 128, 12003, 28474, 15916, 2544, 30091, 19092, 32702, 21925, 26098, 15902, 31049, 3289, 24690, 25575, 9842, 17247, 9670, 20916, 22747, 12848, 30296, 22519, 2280, 9036, 17982, 6303, 11506, 15721, 29438, 3489, 15849, 8674, 31963, 31766, 11218, 29286, 18090, 11152, 18443, 11420, 27054, 16724, 14710, 18976, 9532,
24552, 3455, 19202, 12700, 26203, 32050, 10228, 15954, 1562, 19264, 1168, 7866, 30770, 16890, 4536, 1491, 32739, 13210, 686, 31737, 24428, 29973, 17059, 2813, 15648, 28480, 29867, 32373, 10422, 16076, 9137, 2206, 19531, 28339, 14906, 12966, 27621, 25134, 28921, 29183, 11630, 30089, 4281, 9633, 14211, 8818, 11124, 14183, 22028, 11811, 13152, 13689, 9016, 30212, 16502, 24664, 25924, 13601, 24269, 3578, 29677, 638, 5784, 16441,
28977, 20690, 29407, 23830, 13056, 25560, 20246, 24686, 22882, 24527, 1551, 4325, 577, 12676, 18508, 22606, 24487, 31661, 3527, 735, 29105, 20029, 25399, 22261, 862, 16901, 25839, 30540, 17539, 31623, 14213, 13749, 19545, 10852, 4811, 32601, 3645, 25057, 24519, 26527, 16817, 26071, 30852, 17394, 5979, 16593, 7232, 30466, 15486, 10759, 31201, 11823, 30788, 23832, 1316, 31651, 7965, 27155, 29423, 25505, 26010, 10868, 6486, 12787,
21720, 11297, 12620, 25365, 3587, 4371, 19124, 20404, 30442, 17209, 5030, 3653, 1034, 12263, 1351, 16520, 23022, 32552, 28343, 21043, 23617, 29659, 19926, 31582, 24046, 16581, 24319, 17288, 27449, 30805, 30075, 16401, 9335, 9927, 8999, 12922, 14298, 28123, 558, 11973, 12564, 5588, 15626, 13598, 17851, 16978, 30118, 8106, 16762, 25693, 29149, 7611, 22584, 16307, 6426, 13862, 120, 30745, 31150, 27569, 28783, 28457, 11202, 5350,
5616, 20201, 18272, 19915, 15557, 18830, 31888, 28121, 24418, 14746, 8952, 9502, 31724, 6302, 17608, 15719, 31996, 13989, 23330, 21812, 30296, 29756, 2907, 30416, 27734, 1289, 25217, 23749, 29747, 3651, 29099, 2595, 23853, 14603, 22510, 6642, 665, 21630, 1995, 25083, 3609, 10947, 1817, 2565, 17250, 19425, 18284, 16478, 646, 8847, 5522, 30942, 5835, 8429, 28590, 801, 9719, 21039, 24550, 6698, 24691, 20881, 9293, 15776,
2716, 31804, 22418, 3381, 20666, 24413, 28465, 24275, 2593, 30282, 26841, 19843, 16940, 12357, 3553, 17586, 21204, 9075, 15761, 27040, 17505, 11583, 27841, 27224, 32623, 19624, 1154, 24546, 7737, 10447, 7554, 10454, 9483, 29972, 13835, 30150, 21617, 9532, 21657, 24210, 7047, 15730, 11285, 23987, 28088, 14838, 8805, 16524, 23914, 24566, 10796, 8651, 3382, 5870, 3107, 3237, 25494, 4261, 27783, 463, 14708, 2569, 10917, 24192,
32541, 24753, 21574, 21390, 1517, 10463, 12833, 8564, 26194, 24118, 32551, 21514, 6189, 8589, 5270, 30103, 387, 16067, 5986, 3769, 21937, 9093, 7006, 14663, 13354, 2021, 15126, 28062, 4590, 26044, 19486, 4363, 18029, 8292, 25754, 19546, 18756, 5819, 28111, 12182, 29937, 27894, 928, 3358, 3715, 6198, 693, 4103, 22265, 6679, 7872, 11434, 15772, 14879, 26097, 29126, 16900, 8456, 24421, 21491, 1732, 11139, 25854, 19761,
19432, 18840, 6539, 5420, 24659, 1882, 17602, 21829, 29777, 18530, 25187, 724, 24728, 25881, 4827, 14226, 32560, 12700, 25660, 15565, 27579, 18990, 11923, 11711, 27446, 3576, 434, 29178, 14716, 26289, 16171, 1380, 12361, 22710, 6800, 4253, 24593, 24402, 26082, 21602, 10164, 18501, 22326, 2124, 11614, 27154, 16350, 11407, 7086, 9243, 26972, 1897, 28233, 6127, 13608, 22911, 9704, 14043, 19321, 24420, 7564, 2724, 25800, 19925,
25434, 32600, 24178, 17259, 24234, 17492, 6093, 1630, 3226, 28420, 3754, 14840, 22806, 20105, 26247, 29892, 29348, 20451, 31789, 24813, 26579, 12629, 14956, 3515, 26672, 1509, 27935, 1468, 4233, 20967, 21394, 29667, 20799, 12804, 14159, 12265, 30297, 20252, 13895, 755, 15904, 17649, 15595, 5942, 4986, 9075, 3066, 1566, 29526, 2087, 26379, 23337, 14717, 8567, 26852, 8621, 10076, 22019, 10090, 14309, 10218, 31484, 11209, 31017,
11520, 25368, 10514, 9049, 12852, 24409, 9804, 28757, 9291, 25400, 1931, 14277, 1707, 4998, 15844, 31233, 7085, 9455, 21803, 21802, 18023, 15887, 30424, 28099, 5139, 7746, 9641, 15357, 6462, 20850, 13607, 17982, 13450, 24121, 27032, 26302, 15763, 4068, 22291, 25054, 29468, 24223, 6563, 31175, 29221, 22407, 29641, 3538, 31863, 18676, 25341, 17118, 1795, 22997, 12449, 6934, 30743, 22090, 22292, 4437, 10172, 3131, 22419, 23622,
27252, 16683, 17157, 10247, 20752, 6680, 2533, 17452, 30903, 9097, 15860, 27356, 31504, 12733, 30895, 30599, 31409, 23468, 14949, 436, 13697, 27399, 7371, 11672, 16721, 29663, 16109, 26894, 26, 5760, 17748, 27278, 22444, 2137, 4758, 10428, 8818, 7291, 27880, 6953, 16388, 10972, 1542, 15125, 23705, 32437, 12956, 22346, 23137, 27906, 22783, 4066, 22537, 30154, 15738, 6490, 27049, 31847, 616, 27075, 4839, 18365, 21585, 27283,
20502, 26343, 4943, 29320, 867, 56, 3506, 17255, 11028, 5048, 32380, 1966, 4717, 12569, 24312, 27854, 7707, 14327, 31920, 30244, 11713, 14890, 3966, 5994, 13969, 4583, 301, 18808, 22948, 21887, 13324, 10682, 15462, 18267, 7235, 16329, 18323, 10741, 817, 29352, 15789, 429, 31318, 20506, 12998, 22862, 15592, 20705, 4422, 14744, 18181, 16135, 29634, 22148, 22130, 10835, 26731, 22431, 29643, 16911, 11550, 10199, 27593, 27013,
28467, 2060, 10574, 14022, 12801, 11391, 10606, 28590, 11821, 9156, 16328, 24819, 32019, 31920, 12757, 3673, 13896, 30938, 19808, 10762, 20318, 9170, 21597, 14281, 31602, 18473, 31192, 10384, 28672, 26018, 4629, 24371, 28078, 15204, 5626, 8112, 26595, 16232, 3934, 5648, 25389, 20263, 30468, 24640, 19415, 10457, 28313, 544, 8627, 15353, 11306, 28946, 24524, 136, 10459, 23358, 18609, 8884, 974, 14513, 2134, 5604, 6117, 30212,
20808, 11743, 5556, 14635, 27975, 9491, 20284, 20596, 29754, 17984, 12468, 16401, 28441, 8013, 16945, 4300, 23367, 28252, 478, 15123, 28388, 10938, 5713, 14229, 19822, 6687, 28742, 21956, 12291, 2091, 19400, 331, 13834, 24957, 14967, 9042, 1680, 2483, 29638, 31434, 20467, 9339, 15067, 16140, 17352, 32013, 20440, 7951, 27497, 20919, 23074, 23117, 31857, 28787, 4578, 18911, 2707, 552, 8099, 14998, 2644, 27499, 15330, 16478,
19688, 30297, 25520, 21368, 12, 22391, 20034, 20479, 31730, 2334, 3851, 16314, 1579, 24291, 24266, 29076, 12442, 14572, 19425, 11531, 10592, 24003, 30442, 13299, 24555, 5773, 28297, 27199, 505, 10859, 10910, 20193, 8388, 3662, 8794, 8400, 26053, 28828, 28879, 25015, 31162, 32730, 8562, 32741, 24254, 60, 29049, 3928, 14632, 15706, 15460, 25224, 6941, 13134, 5755, 31497, 18908, 1285, 25928, 19413, 12144, 4070, 6838, 20533,
7733, 15632, 28933, 1018, 11693, 25045, 26034, 10087, 25007, 1828, 10061, 16493, 1888, 6342, 20422, 16520, 22049, 3114, 8977, 28990, 16248, 14732, 27719, 2388, 16017, 20880, 21801, 28162, 24950, 28640, 15927, 4685, 11504, 12092, 934, 23197, 4369, 26968, 517, 29377, 28796, 10578, 13102, 30684, 16920, 756, 14436, 6201, 3870, 23413, 2424, 20119, 5378, 30143, 22507, 21395, 18255, 11541, 16789, 10438, 7413, 32716, 10353, 18917,
12041, 11287, 9347, 16410, 5487, 9864, 13019, 1515, 20442, 26122, 32199, 4594, 26878, 13868, 10796, 30749, 4513, 13220, 18100, 9891, 10595, 7839, 31287, 28851, 19380, 15308, 6521, 26793, 15257, 16874, 12943, 27298, 28162, 22290, 10940, 881, 32154, 23960, 2397, 19828, 17314, 1828, 24422, 11424, 15696, 2450, 9405, 20210, 15670, 27505, 30101, 26266, 2577, 28620, 22349, 21957, 11161, 28870, 15983, 26418, 12976, 28926, 20948, 8370,
18448, 31888, 9252, 17834, 23080, 11649, 4894, 7626, 13477, 29316, 19051, 29174, 31767, 28456, 16616, 14669, 23194, 13949, 8167, 25771, 9802, 30516, 14960, 20963, 26618, 30943, 14613, 6827, 27101, 2793, 15197, 12781, 1913, 24449, 30615, 24994, 3330, 2741, 32620, 16808, 32058, 18903, 13214, 31057, 14592, 29830, 12958, 5018, 11011, 21126, 30789, 20813, 18874, 12981, 9008, 12725, 11157, 23621, 19552, 5490, 26414, 1981, 18272, 28328,
26431, 16119, 20554, 29761, 18861, 20406, 13801, 18151, 6542, 27015, 16440, 21134, 24077, 29398, 26152, 2321, 17756, 24173, 23134, 3863, 4386, 32143, 16588, 15543, 22996, 3372, 21034, 16643, 5353, 6538, 12203, 31784, 22657, 32757, 28778, 8750, 20395, 9811, 26901, 26937, 4059, 10573, 15303, 28136, 7204, 8687, 30457, 24960, 92, 20824, 28823, 4479, 20199, 12643, 20022, 10427, 16015, 8288, 27070, 21369, 14826, 6505, 20385, 4716,
6494, 16395, 13466, 26890, 26207, 7600, 21059, 30266, 18173, 3595, 25634, 25377, 12282, 23324, 17570, 12375, 11380, 13625, 16854, 31579, 26269, 4108, 9238, 9516, 12397, 3541, 30885, 27223, 10046, 18503, 31939, 16541, 2130, 12638, 10663, 28337, 20238, 31722, 25835, 5643, 2549, 18702, 31021, 14832, 9258, 15823, 27207, 20638, 29448, 11293, 19449, 22949, 15401, 28687, 32466, 27798, 32228, 30583, 22254, 9507, 16318, 21425, 26048, 18449,
1295, 3943, 14018, 21533, 2897, 7086, 27177, 5447, 25788, 25430, 20279, 2278, 8485, 14718, 22916, 5165, 26011, 9597, 28115, 8644, 5516, 27813, 3675, 4977, 25628, 25929, 14484, 9179, 14586, 7764, 27628, 15882, 11707, 8878, 4647, 14604, 15964, 31824, 20051, 8984, 24486, 7562, 11262, 203, 22280, 1410, 5369, 15523, 11007, 716, 24168, 16524, 28529, 27843, 21501, 21389, 21004, 3217, 30568, 2822, 10981, 25428, 18704, 22688,
1539, 23352, 4524, 17503, 22408, 24576, 26488, 14127, 32138, 4982, 14330, 21651, 6393, 19699, 4406, 17400, 20415, 28574, 1156, 16176, 23649, 22657, 4798, 11885, 25874, 2598, 14708, 4087, 28027, 644, 26775, 29566, 23996, 31300, 14301, 13637, 23108, 8021, 27764, 22478, 13004, 9326, 11361, 19397, 29026, 15768, 4029, 16673, 11574, 5186, 82, 2456, 27843, 4880, 14341, 20950, 7478, 29049, 25037, 2737, 29694, 19045, 32303, 20922,
17577, 13837, 1791, 7917, 21858, 29555, 30395, 2094, 6114, 8989, 21491, 2372, 24757, 25521, 19045, 3563, 30707, 19127, 6019, 25782, 24007, 20361, 13964, 31486, 16642, 6234, 1455, 13568, 25279, 991, 1723, 10088, 14828, 3514, 18005, 3918, 302, 15632, 6013, 6416, 24621, 27504, 8788, 16610, 20257, 27833, 20174, 18196, 14193, 26193, 11211, 5432, 13786, 25175, 4150, 30429, 31409, 5606, 11229, 23920, 6597, 12952, 1240, 21425,
16467, 19245, 25343, 16769, 2110, 31356, 23185, 26731, 26093, 31973, 10574, 13582, 27038, 30748, 31779, 8463, 24173, 10222, 13896, 5192, 2629, 18046, 2853, 1271, 23652, 14082, 25191, 30249, 27035, 26432, 18906, 10734, 12909, 11482, 27503, 15019, 10070, 17920, 8983, 3395, 17125, 19557, 16978, 11395, 17537, 15989, 19859, 8942, 26211, 987, 14134, 28840, 19033, 16987, 30111, 9918, 31070, 22535, 7399, 25337, 16199, 26306, 3303, 29108,
5020, 30806, 11360, 15090, 15958, 20343, 18486, 315, 7132, 2696, 11710, 24669, 18685, 31569, 843, 12128, 32556, 14978, 8200, 18822, 31965, 5544, 28740, 30267, 28079, 3371, 22836, 11510, 29677, 26139, 7850, 1929, 24177, 19210, 17020, 7367, 6785, 2738, 7682, 13917, 5434, 19393, 5818, 24119, 18194, 6662, 3479, 17983, 21640, 11679, 4037, 20837, 17223, 9, 18337, 12534, 3380, 8405, 24044, 290, 1777, 31895, 2219, 25954,
18337, 19239, 554, 25123, 21977, 8236, 6272, 27411, 27629, 12091, 18762, 13056, 18753, 22241, 31039, 7625, 1153, 2308, 28462, 18376, 2317, 14031, 30911, 5697, 22437, 22187, 5987, 24214, 21314, 8207, 17400, 6884, 27446, 17954, 32007, 16656, 26191, 5511, 11299, 21052, 17602, 30062, 1340, 3587, 19535, 32379, 11212, 20688, 1919, 6907, 6297, 4236, 20938, 4440, 9934, 10607, 26627, 15921, 2053, 15174, 24128, 19454, 22058, 18807,
4640, 21297, 2695, 30831, 26808, 13994, 19116, 11643, 11288, 20456, 15230, 30824, 20068, 26443, 18744, 21987, 582, 25041, 26224, 21520, 29481, 3390, 32128, 23341, 19311, 1413, 5747, 10672, 20867, 27805, 29479, 25508, 16334, 32174, 23571, 10374, 13400, 9919, 22017, 24689, 30376, 4480, 22745, 17676, 30923, 8721, 6895, 31505, 995, 351, 20257, 30476, 3741, 19617, 21049, 23053, 21031, 26796, 957, 9130, 21833, 30436, 1870, 5399,
29842, 25442, 15774, 10474, 2593, 5023, 2395, 201, 9503, 25140, 17877, 7658, 1094, 24773, 6395, 2089, 25124, 26653, 32565, 28866, 13502, 20847, 19151, 1765, 14875, 20108, 10896, 3941, 17776, 12766, 9340, 14850, 5440, 25114, 25324, 8034, 30138, 27720, 8235, 6873, 20092, 26113, 14532, 21186, 18118, 20927, 23275, 10474, 14812, 23073, 6572, 28315, 11152, 25723, 30080, 26027, 13063, 8208, 29968, 30839, 20975, 6541, 12921, 26415,
31655, 5478, 1681, 29025, 430, 9917, 3131, 20522, 3262, 17663, 8941, 21380, 5822, 32216, 31854, 20635, 22521, 5659, 16182, 905, 31382, 13494, 26933, 11678, 21703, 24133, 9749, 9910, 30674, 22671, 3557, 29562, 28149, 5239, 25819, 28579, 15156, 28950, 16333, 18418, 13845, 25274, 7030, 19668, 24723, 6116, 7535, 14476, 11775, 23717, 15382, 10390, 4443, 9547, 22068, 26146, 912, 31817, 3288, 31587, 21720, 6846, 28381, 17101,
12085, 21432, 12912, 27241, 17615, 29246, 12891, 31460, 21752, 19921, 18360, 13707, 26037, 25895, 28184, 5045, 16844, 10798, 15435, 21288, 20345, 4735, 14666, 21257, 3784, 17955, 20076, 25505, 24801, 15689, 9838, 4118, 4354, 22751, 31359, 21969, 19229, 11482, 20661, 8213, 31403, 6254, 21921, 24672, 32149, 17337, 29717, 16226, 28135, 12384, 4746, 15712, 17119, 19412, 4201, 20904, 4599, 24278, 13641, 29400, 7199, 23479, 750, 11553,
13462, 32109, 754, 32691, 10823, 21416, 8137, 9458, 27670, 30058, 1363, 27051, 14627, 31080, 10509, 9994, 10697, 15255, 25706, 27816, 1900, 29907, 15952, 6499, 21417, 29593, 3132, 28617, 20305, 3882, 7402, 999, 3224, 8157, 923, 14047, 29573, 9060, 23506, 24475, 6350, 24869, 18758, 20977, 23181, 29268, 30971, 1110, 11755, 23909, 28927, 13655, 21048, 12111, 20155, 9698, 8937, 23287, 5547, 29242, 27169, 12949, 30241, 30393,
21106, 31164, 11673, 17911, 7456, 2411, 9618, 13806, 27280, 28377, 2015, 17693, 24877, 218, 18804, 3864, 24127, 14963, 17520, 12408, 27074, 4907, 22106, 3243, 28194, 27653, 32485, 22595, 7834, 29959, 20221, 28941, 28355, 31894, 14084, 3044, 1537, 23703, 16850, 28817, 19312, 18866, 13742, 11421, 19084, 32546, 15285, 10444, 14741, 37, 22852, 9048, 4944, 12190, 12291, 370, 7075, 12009, 22966, 14909, 9200, 10419, 11082, 4787,
9545, 25167, 7831, 11082, 16102, 24682, 7131, 2646, 10780, 20873, 14067, 29864, 20652, 29352, 7540, 2625, 29390, 30392, 11673, 1566, 9814, 23965, 1937, 16889, 3206, 24903, 31799, 12406, 2554, 10113, 17193, 12099, 2512, 25025, 23181, 18614, 16939, 30312, 21260, 27719, 18417, 2559, 24815, 6301, 31912, 32356, 8927, 28534, 29980, 20600, 30100, 7027, 11797, 32037, 23916, 15003, 24172, 22947, 27409, 26726, 293, 11835, 6057, 2805,
4092, 29238, 21420, 21031, 26782, 9912, 15982, 12432, 12472, 8029, 18733, 11616, 7617, 27660, 7382, 4830, 15493, 4714, 11857, 27290, 3984, 3005, 9526, 28156, 25953, 4167, 22115, 26246, 16002, 28172, 29051, 20094, 24643, 17703, 8357, 18657, 27616, 24339, 31089, 7320, 32369, 17055, 18936, 7218, 11947, 26318, 12048, 27440, 31032, 23905, 21963, 2248, 26911, 31489, 30405, 20096, 2888, 19752, 13574, 18891, 15156, 9857, 6217, 7031,
27561, 14575, 25689, 22409, 6146, 24010, 29729, 5747, 8297, 15897, 12966, 20245, 9447, 25014, 14917, 7711, 16152, 4112, 9960, 10295, 2833, 7597, 30391, 5722, 27349, 11197, 24613, 9737, 21054, 30830, 16769, 15847, 12637, 9690, 5488, 18784, 932, 2449, 24531, 9230, 18346, 4729, 29475, 27793, 29744, 11624, 2737, 13128, 15737, 12697, 23423, 18570, 20294, 21046, 24292, 14875, 32243, 16137, 24612, 20529, 14200, 8613, 3609, 26837,
18303, 9097, 12853, 19236, 11547, 4617, 28466, 29893, 9346, 25173, 24919, 6322, 4029, 27656, 19450, 19766, 7585, 10105, 5569, 27879, 31151, 29861, 9986, 30626, 13231, 1830, 18388, 27431, 10444, 21997, 21500, 28747, 31094, 1586, 15215, 9873, 6203, 10913, 6999, 15549, 3318, 31918, 21872, 7348, 26806, 8554, 27114, 1623, 18660, 32683, 29502, 17043, 29777, 6720, 14902, 10240, 8550, 522, 4903, 18994, 22519, 26403, 14974, 20845,
27989, 30189, 30719, 1424, 8335, 4950, 16974, 11653, 4100, 6078, 19001, 30906, 14632, 13348, 32529, 524, 13263, 29263, 17568, 10272, 3215, 32470, 20512, 11765, 224, 25415, 30760, 22743, 19051, 12966, 10820, 14272, 10387, 8771, 15697, 18722, 13721, 32671, 30376, 17821, 5981, 16609, 15959, 20613, 29957, 15720, 21138, 10453, 12215, 5938, 20725, 15430, 5640, 8470, 27196, 5864, 1117, 25188, 28607, 20168, 5386, 6659, 1673, 15773,
15431, 17370, 1728, 29152, 17273, 32104, 14206, 23254, 15945, 30165, 11099, 13135, 13118, 32237, 23588, 25333, 5407, 11545, 7996, 11047, 20015, 2424, 16911, 21133, 27612, 12750, 8533, 230, 19410, 10206, 16003, 2073, 27576, 17731, 31225, 12081, 17067, 12663, 2567, 245, 10061, 13667, 13380, 23179, 13136, 4200, 15744, 18544, 15745, 23740, 29591, 2993, 26164, 13735, 24126, 21008, 26485, 32659, 21238, 13127, 10098, 4474, 15200, 4906,
22205, 13658, 16988, 6505, 26321, 19555, 6750, 3614, 454, 20130, 26793, 13591, 24330, 9770, 32135, 7307, 742, 28958, 10300, 26907, 9925, 1658, 15147, 3643, 1550, 3618, 16770, 11648, 8092, 31971, 16554, 30297, 12861, 774, 4034, 6414, 20330, 10784, 10029, 20784, 30914, 4054, 1607, 22476, 13824, 974, 29784, 14567, 29933, 7316, 8706, 7090, 8975, 23853, 10733, 10525, 27471, 27504, 22173, 2795, 26707, 5959, 325, 6800,
6734, 4359, 13214, 27064, 15144, 23243, 15080, 13290, 27298, 16688, 2999, 8354, 17662, 15, 22921, 14827, 7331, 31627, 21918, 16306, 22713, 32651, 26831, 17416, 27387, 16236, 20212, 21326, 22196, 20537, 28126, 28930, 24896, 8573, 23226, 7272, 31816, 5538, 20563, 26346, 22226, 23562, 1933, 7121, 23577, 24854, 21948, 30908, 23714, 11098, 14447, 13659, 10982, 8510, 31075, 5601, 24747, 18519, 26928, 14175, 6288, 22286, 10337, 31185,
30859, 795, 5689, 29908, 6333, 26252, 23486, 28560, 17046, 25419, 2913, 7855, 17506, 24861, 5996, 8452, 3192, 20443, 22111, 14174, 28953, 20418, 19775, 20932, 6170, 13935, 2339, 12458, 3454, 12676, 10875, 1545, 13471, 16565, 31453, 19805, 10049, 22172, 15597, 27096, 14823, 18510, 2183, 32329, 10603, 8179, 8013, 13795, 28622, 30124, 27969, 24808, 17775, 14977, 12972, 23945, 28912, 15312, 3635, 32366, 27988, 14511, 1144, 8692,
31076, 32597, 28497, 8357, 22001, 11326, 2685, 4057, 29836, 4869, 3618, 7671, 13048, 11632, 21467, 8903, 8988, 16668, 943, 26763, 31645, 13915, 17940, 27790, 29227, 21576, 27388, 24448, 3319, 28532, 372, 1627, 28362, 28869, 9984, 17595, 7427, 12670, 21652, 4495, 17539, 25271, 12166, 30587, 4135, 865, 6722, 13123, 17534, 7665, 7119, 16411, 21581, 25059, 11433, 18040, 13867, 6054, 9720, 17186, 1818, 10092, 18813, 30180,
6193, 28798, 15008, 13620, 8700, 3892, 18115, 26239, 29163, 30282, 24058, 530, 31147, 30781, 13654, 15913, 5678, 20773, 32325, 27259, 13064, 10990, 12532, 26932, 17044, 22252, 11350, 18863, 32345, 30164, 16275, 5770, 26194, 31283, 19391, 2126, 2408, 4738, 28365, 31571, 2252, 19655, 32102, 632, 17668, 12988, 16545, 23347, 993, 16102, 17838, 14057, 27093, 30370, 8221, 11369, 19855, 19572, 30232, 19432, 16968, 13740, 25202, 10394,
12255, 11825, 12520, 14663, 16564, 8117, 13467, 18816, 27772, 12801, 19448, 12673, 25789, 3226, 3252, 26782, 19328, 21090, 8071, 13653, 18693, 16293, 25023, 5780, 3097, 22487, 25212, 20065, 3459, 17646, 30459, 15715, 29472, 10211, 30378, 13268, 18328, 11077, 32084, 13332, 23878, 18765, 26005, 16899, 21991, 29257, 10913, 8551, 17580, 18985, 22205, 3505, 2510, 14460, 9285, 5607, 4179, 1729, 25672, 7639, 19375, 23363, 23354, 16079,
806, 20964, 29347, 19134, 32042, 28664, 32466, 23152, 14661, 25704, 7284, 3884, 22193, 18197, 12435, 7005, 4414, 1872, 10510, 6924, 16332, 19795, 12531, 20512, 21524, 5435, 28151, 8132, 28798, 18737, 24211, 29604, 6933, 20791, 15970, 6207, 16687, 15669, 29360, 31348, 8605, 3876, 2464, 30798, 22073, 14899, 5036, 26488, 16772, 15546, 644, 336, 2574, 13176, 20848, 24098, 18611, 16231, 32230, 14642, 2200, 23674, 11478, 9134,
11697, 27449, 15341, 28384, 10350, 11933, 26964, 18955, 15809, 29428, 16985, 5115, 11559, 22021, 31603, 28331, 4800, 32247, 28668, 7374, 12655, 16748, 31472, 31267, 212, 30935, 13141, 2412, 21841, 24619, 11546, 770, 19300, 26888, 29154, 29650, 6053, 23350, 15837, 21863, 20010, 55, 26978, 31569, 22076, 25813, 27133, 26876, 25292, 23033, 1482, 5180, 7013, 187, 3679, 7225, 31122, 16820, 9638, 20195, 8671, 21184, 20965, 27972,
15304, 17351, 24854, 21358, 7933, 7924, 10453, 27943, 7979, 4663, 26744, 30055, 30476, 21109, 24164, 23000, 11374, 25646, 28180, 18388, 25833, 31859, 25613, 24187, 15911, 2483, 11614, 24583, 23668, 32579, 19787, 6204, 17162, 11873, 27562, 25095, 19797, 5247, 20270, 27776, 9910, 14247, 25064, 7618, 2588, 16460, 30619, 13963, 9338, 26031, 32351, 2404, 25123, 25196, 26591, 8266, 27680, 5438, 81, 18580, 5249, 19868, 24784, 22412,
31742, 19579, 14739, 18771, 24826, 2242, 13780, 1969, 16489, 6076, 9587, 19077, 22536, 7438, 272, 31874, 702, 32623, 1510, 25825, 25052, 28102, 1323, 19964, 772, 1405, 5776, 6021, 21273, 30560, 28433, 20247, 17371, 10405, 6251, 9430, 12647, 20031, 11399, 29136, 26107, 20986, 15445, 15875, 28425, 15718, 14981, 29127, 15573, 16492, 22184, 7857, 11826, 23507, 27821, 12598, 24912, 829, 18619, 13418, 31390, 14285, 897, 15993,
24690, 7148, 25423, 4569, 27179, 4054, 937, 20518, 25041, 16382, 3625, 20698, 32100, 18607, 17057, 14906, 2331, 6473, 22763, 14157, 29980, 17817, 26755, 22125, 18646, 12606, 2775, 17268, 26891, 3672, 494, 18813, 10821, 25917, 23382, 5232, 29972, 24319, 25751, 22245, 7934, 29376, 10175, 7266, 15215, 27232, 22172, 17546, 937, 12168, 31703, 30917, 29985, 25690, 20274, 15863, 5529, 23049, 364, 32420, 26722, 858, 18466, 4775,
26775, 9080, 10007, 23979, 632, 2990, 13456, 8566, 32367, 23631, 15832, 14814, 18095, 5237, 32361, 19032, 17405, 31296, 17182, 14622, 24219, 4688, 30485, 29748, 27738, 30849, 29400, 21692, 31707, 15098, 26467, 25715, 24179, 3706, 16926, 24811, 6697, 30383, 609, 6296, 21246, 16441, 21110, 6574, 21678, 20703, 25606, 6315, 19232, 10020, 20937, 10683, 14709, 18655, 7663, 9679, 16736, 4295, 31371, 15676, 19394, 25070, 8623, 10805,
28776, 25549, 2848, 2705, 23164, 3457, 9001, 11643, 19898, 30112, 18217, 8809, 18047, 11055, 15124, 4511, 21076, 3294, 15194, 3017, 21949, 22857, 12696, 5917, 27153, 11299, 21593, 13779, 3601, 30216, 24584, 32377, 22998, 27432, 2315, 13394, 30889, 11316, 25037, 18019, 8660, 10486, 26828, 26708, 21542, 9185, 31219, 9850, 12479, 13646, 12867, 1660, 3735, 25563, 7577, 30888, 4094, 29171, 11899, 7695, 26619, 3715, 7304, 16849,
31147, 9619, 30244, 29268, 20936, 22513, 14520, 29596, 232, 8580, 23536, 21774, 17765, 21988, 31624, 30244, 2866, 11723, 31904, 6601, 4518, 6714, 4722, 8612, 3117, 16621, 16307, 29736, 20337, 23611, 13818, 18716, 463, 11294, 15217, 21399, 1039, 29737, 18227, 1271, 5549, 8996, 23045, 23315, 30984, 21901, 20791, 1082, 856, 19928, 7683, 5374, 26642, 12405, 13986, 29759, 29027, 30293, 26727, 16596, 21137, 7777, 2544, 21600,
19071, 17761, 10231, 20111, 14730, 28458, 21382, 20280, 4686, 11660, 10827, 2902, 793, 31618, 3984, 1650, 18778, 11668, 7024, 12652, 24073, 21011, 9643, 20332, 18536, 3603, 4160, 6905, 11380, 6705, 28505, 30452, 24466, 5968, 17795, 6429, 1659, 6409, 26709, 6345, 18069, 4768, 9248, 18863, 3618, 13232, 20513, 22397, 24900, 27537, 2281, 16206, 15780, 11925, 3770, 1549, 15528, 7931, 8454, 26908, 14636, 4192, 24592, 6334,
10160, 9619, 12763, 11819, 16029, 6704, 18165, 1330, 11472, 27413, 20193, 15091, 7877, 7938, 4720, 10, 2708, 7001, 16216, 18488, 18926, 19986, 20037, 1686, 27917, 28492, 28595, 9785, 32684, 20419, 16120, 10076, 30039, 28883, 21896, 13300, 2820, 7293, 14630, 14292, 1938, 2056, 29383, 9815, 9994, 1335, 9825, 12702, 8337, 26041, 31191, 27263, 13260, 18460, 28950, 8409, 14184, 24777, 18195, 14100, 12428, 1547, 24177, 9699,
30430, 13305, 22999, 482, 20598, 4862, 14775, 22536, 6918, 11390, 32351, 16912, 12726, 9409, 29615, 21063, 2682, 28038, 15558, 15942, 13730, 11740, 24352, 27915, 3749, 9779, 9247, 16178, 11326, 656, 25877, 8988, 13961, 16109, 9471, 1791, 20971, 24246, 24327, 27889, 2868, 23911, 12033, 15594, 552, 8880, 3889, 3234, 4150, 19448, 19177, 17881, 31188, 10761, 13028, 2170, 20540, 22275, 18348, 31866, 22932, 11457, 8086, 4125,
27566, 17557, 5917, 15769, 9035, 30244, 10890, 11904, 21387, 22924, 27498, 21939, 31804, 31388, 25174, 3187, 18068, 11583, 21068, 16488, 22344, 1328, 18658, 10116, 23603, 4238, 9214, 13767, 15696, 17300, 17893, 10494, 2090, 23810, 26264, 11125, 21286, 4386, 23029, 9906, 27310, 17760, 31845, 26347, 16380, 24251, 29534, 1680, 3066, 17834, 18168, 25410, 19162, 4059, 2758, 9997, 8297, 11972, 23765, 23993, 29273, 8890, 1720, 31363,
32700, 27984, 9720, 21218, 32370, 32750, 31124, 26913, 17742, 30202, 20492, 1354, 21685, 17258, 3034, 24752, 2324, 21202, 17394, 21486, 25261, 20153, 31483, 791, 32125, 22480, 24784, 28630, 31370, 26504, 27225, 31302, 21720, 4178, 19753, 21323, 4160, 18109, 15468, 21902, 15543, 3192, 23256, 4461, 20450, 26290, 29213, 22774, 14724, 13839, 11492, 7218, 1224, 10207, 8009, 582, 32688, 25, 29212, 31290, 26530, 23670, 29825, 15482,
27848, 16810, 4037, 32008, 2151, 19505, 21142, 17695, 22697, 11630, 22156, 10379, 5152, 18601, 385, 19876, 32440, 11877, 27094, 897, 22085, 2335, 1479, 22005, 2361, 30691, 20527, 28891, 21593, 17584, 11605, 16673, 1626, 15643, 15913, 3778, 2380, 4287, 21473, 25078, 15917, 10861, 2689, 21069, 29462, 3075, 8178, 29134, 14952, 2504, 30031, 4269, 4840, 31510, 26274, 7201, 29434, 14034, 3324, 18259, 31618, 14929, 2165, 477,
30572, 18078, 4255, 185, 22366, 25728, 25263, 5515, 3821, 27952, 26585, 515, 31027, 1995, 29649, 13212, 4499, 26913, 17481, 9339, 25655, 10988, 16540, 22321, 25022, 19864, 7813, 23872, 2026, 9978, 24349, 32598, 28056, 28604, 15, 17654, 21564, 25278, 23170, 25385, 20463, 16987, 25900, 18722, 18982, 22782, 31934, 23481, 16927, 16648, 53, 9814, 27636, 16593, 32136, 19890, 3690, 7181, 10994, 5716, 17159, 2576, 5546, 12447,
31180, 5562, 30102, 19977, 30840, 20504, 12594, 18535, 4723, 5727, 4490, 23705, 28509, 3656, 14418, 12668, 20304, 14471, 22482, 15172, 31065, 21850, 2294, 1987, 29031, 13289, 7703, 13422, 15865, 13249, 25870, 14277, 18811, 23204, 1486, 16884, 10940, 14081, 2651, 15663, 19808, 7141, 6600, 15549, 10798, 21018, 28217, 31102, 2722, 17931, 13507, 1019, 7014, 15801, 3006, 3277, 29090, 10709, 16700, 12187, 23958, 9802, 26465, 10002,
238, 27951, 26886, 11178, 9264, 29537, 26841, 29072, 3911, 673, 11853, 14709, 21691, 7302, 13043, 24413, 25234, 26550, 25432, 32248, 9584, 28438, 2757, 5906, 6379, 19457, 18094, 30338, 29259, 11791, 7572, 29497, 6974, 1690, 7907, 16239, 31227, 1980, 12543, 2370, 2653, 24397, 17079, 24345, 31699, 30123, 15990, 24165, 23905, 8655, 23645, 721, 4325, 26403, 6628, 10705, 13092, 24722, 8275, 9584, 3745, 15847, 6313, 10719,
17537, 14221, 26958, 15996, 16201, 6734, 18367, 18855, 31131, 2678, 10432, 30062, 33, 26422, 21460, 23939, 2309, 12337, 24660, 6635, 5972, 31288, 17340, 19065, 23242, 25615, 28649, 26987, 8694, 2194, 4939, 26231, 16415, 31897, 9459, 32617, 5863, 27826, 18704, 4226, 30505, 29136, 1521, 30538, 22790, 22981, 21709, 25100, 2550, 13602, 31735, 8523, 12122, 16307, 27588, 2597, 9154, 23469, 29584, 17848, 25663, 1755, 11311, 9311,
885, 20770, 9160, 6748, 15829, 27864, 10975, 13566, 24232, 12496, 11336, 14254, 2709, 278, 6586, 5259, 13880, 5553, 13782, 26002, 21860, 8602, 28599, 31014, 32071, 25416, 16094, 24967, 27171, 27405, 1510, 28056, 15408, 10670, 2037, 31237, 5766, 13012, 12035, 29998, 25508, 23371, 11484, 28217, 23649, 18071, 708, 4761, 23624, 14491, 30764, 12717, 23093, 26595, 10963, 22397, 19243, 27058, 14596, 13647, 21695, 16106, 8935, 4335,
26776, 10972, 2804, 32542, 23984, 14839, 29772, 16724, 5443, 8488, 12173, 29092, 26559, 12882, 1086, 17416, 27373, 31850, 30133, 17698, 25677, 8328, 7327, 12153, 2618, 21923, 25800, 24314, 5261, 1967, 28649, 32037, 12940, 31454, 31811, 4156, 13525, 28815, 20881, 18968, 4536, 286, 15293, 31095, 13168, 16379, 15743, 7773, 15461, 13108, 25472, 8370, 21437, 31, 20523, 24055, 21955, 13555, 15601, 27216, 15523, 11483, 26486, 28463,
10169, 25529, 32619, 23694, 21577, 20732, 9895, 26113, 21019, 25188, 24440, 1419, 8799, 7416, 9193, 24260, 20524, 1897, 32630, 9193, 1928, 20386, 481, 23883, 1173, 16082, 18332, 16696, 27565, 12050, 12391, 4966, 4811, 12243, 28661, 26388, 207, 5788, 19733, 21226, 30976, 11406, 22646, 7007, 18822, 31839, 31267, 6578, 968, 31129, 15772, 2896, 18747, 16253, 26780, 19921, 32335, 12344, 3849, 27133, 24394, 16241, 32099, 29205,
28484, 27992, 22826, 28691, 1012, 9791, 17150, 31988, 21197, 7028, 6227, 7251, 6099, 4726, 13830, 7067, 3088, 29602, 9963, 21835, 13087, 3975, 8988, 12654, 16319, 12838, 7019, 7945, 29079, 6351, 4383, 24795, 1575, 27209, 20718, 2588, 4232, 5100, 1808, 25430, 12128, 8036, 32681, 18227, 12762, 13743, 25294, 15850, 10577, 2490, 4918, 23664, 6465, 13906, 3551, 22785, 26744, 10570, 30730, 23055, 16921, 2345, 15082, 18497,
29554, 3033, 21085, 1019, 8133, 22893, 26449, 20262, 30929, 26362, 5721, 10924, 7338, 31016, 26774, 17915, 738, 31692, 8812, 7203, 12831, 12363, 29988, 6807, 22933, 27951, 29863, 7087, 30296, 12177, 25584, 27083, 15210, 13901, 28102, 23344, 4026, 21783, 10838, 2188, 15377, 16559, 13112, 22715, 14807, 7118, 7863, 15545, 6043, 16675, 22749, 18874, 29038, 19969, 25681, 19203, 15152, 22776, 26290, 12681, 2186, 19106, 6996, 17396,
239, 2330, 7972, 4266, 24113, 18810, 6454, 6722, 2602, 19566, 29438, 17409, 26684, 4533, 187, 32727, 21208, 22936, 18833, 17478, 10137, 11747, 3913, 25290, 1755, 30204, 5203, 3941, 16542, 12199, 21338, 16782, 14529, 29310, 21048, 5874, 15353, 27502, 12596, 17955, 14300, 9266, 2596, 8216, 13799, 2783, 8176, 2239, 25719, 27009, 19717, 3089, 5988, 23631, 28379, 7744, 21067, 814, 11685, 4841, 13013, 255, 21623, 27542,
29566, 9903, 648, 12151, 4637, 13244, 30106, 18937, 22511, 11859, 27154, 3542, 2718, 2562, 5782, 28437, 29571, 25499, 31526, 2792, 16362, 27137, 10536, 4661, 27951, 22221, 9503, 8196, 22477, 31126, 2970, 19275, 8262, 3618, 31426, 12899, 16863, 28764, 31837, 6606, 28698, 26223, 10148, 31416, 28785, 15930, 27086, 25588, 8662, 25844, 28380, 25024, 20214, 6148, 29686, 15397, 28370, 6421, 23594, 18079, 4779, 26564, 4586, 13041,
30183, 3244, 25941, 14278, 32008, 25010, 20884, 27938, 18465, 31032, 26587, 14482, 14195, 20905, 7302, 22857, 13981, 2915, 15113, 1427, 9063, 12031, 16825, 4665, 18452, 7651, 22744, 23232, 1447, 27330, 3505, 31630, 30574, 29446, 13140, 29814, 21688, 1256, 24985, 7385, 32289, 18804, 21867, 13716, 6941, 29170, 3805, 20922, 32085, 18918, 22350, 8380, 30950, 6407, 13046, 16634, 14058, 3022, 7098, 15505, 30353, 10604, 14368, 28159,
7282, 27508, 25206, 28971, 28765, 17423, 3588, 28286, 3459, 25456, 9234, 10400, 21858, 13039, 31322, 21175, 31957, 20904, 29555, 30139, 27311, 9833, 14006, 8601, 12856, 21104, 24107, 10441, 31708, 5707, 5832, 6223, 447, 31038, 2426, 29212, 15693, 6014, 24730, 19152, 31470, 1196, 29552, 20560, 14235, 28107, 8967, 13425, 16243, 5755, 10796, 10787, 15588, 24802, 19388, 28444, 13139, 10727, 6117, 12079, 16434, 11950, 18302, 16882,
10220, 20728, 13326, 25914, 26743, 5289, 12298, 25445, 6485, 9083, 13238, 20721, 4422, 22205, 1378, 20665, 27960, 12174, 31452, 10781, 4209, 18073, 6457, 17348, 28800, 12575, 29427, 12467, 24525, 14962, 29349, 1977, 2922, 9907, 27891, 29665, 15196, 7422, 22343, 21682, 16505, 2813, 9635, 20927, 25018, 11013, 8824, 20211, 23187, 7509, 30992, 27396, 25582, 4681, 11976, 21614, 17256, 8636, 1313, 9013, 23598, 30662, 10991, 26520,
7802, 6114, 23418, 22998, 13536, 12993, 11912, 30041, 15806, 21547, 18200, 8056, 32560, 27025, 28267, 22980, 1766, 26491, 17608, 27348, 31173, 29585, 16194, 15661, 5453, 17508, 24675, 29051, 15402, 2898, 22803, 23204, 9012, 13453, 13435, 22549, 26446, 25347, 19822, 9484, 14127, 5255, 17541, 13919, 32280, 13040, 4131, 1278, 6764, 21740, 28626, 5169, 18557, 12052, 20830, 24010, 29560, 12737, 20293, 12195, 15635, 10328, 2631, 24648,
23782, 16066, 14429, 17460, 8646, 1483, 26945, 22773, 6738, 11718, 3924, 6250, 24758, 8056, 7528, 31522, 29796, 3386, 3923, 15585, 15439, 24754, 6827, 12231, 4723, 27120, 24426, 20359, 4680, 27058, 12239, 28462, 10356, 26668, 13155, 19002, 28151, 7332, 9007, 2122, 19050, 12932, 8372, 11040, 20988, 15901, 9795, 18016, 19287, 13718, 833, 1958, 5704, 7660, 14190, 10428, 2012, 5848, 30787, 6692, 138, 10258, 2387, 10495,
4158, 15542, 29497, 32309, 22874, 5737, 1663, 9156, 18669, 10036, 20196, 6889, 25937, 29991, 24905, 12456, 10942, 25738, 14415, 16646, 630, 28605, 27074, 2642, 1685, 25093, 9334, 1824, 2583, 11721, 12319, 6741, 27263, 9048, 6283, 17369, 14785, 7946, 26525, 686, 17982, 13954, 7575, 11151, 11177, 32480, 23608, 22119, 25450, 5255, 5998, 26080, 1092, 304, 28722, 2777, 25398, 5289, 4601, 27981, 17010, 16920, 1955, 11506,
25969, 8238, 28875, 7986, 16184, 22633, 8673, 1399, 3819, 16248, 12550, 14996, 15961, 3390, 4348, 8643, 8645, 10346, 1956, 9737, 10650, 30678, 12515, 3280, 3199, 17116, 31262, 20210, 1269, 449, 31716, 27238, 8687, 27823, 2456, 24871, 17688, 11129, 26270, 21507, 27378, 6053, 3736, 10571, 9443, 8084, 19214, 18089, 18430, 21170, 27826, 29080, 19081, 7573, 32361, 22280, 24690, 30855, 9722, 25959, 31304, 8670, 20429, 7223,
3726, 22885, 32094, 21414, 1247, 25597, 10154, 28625, 31650, 13890, 6428, 8325, 21974, 25642, 26414, 7636, 14045, 21473, 3948, 358, 29046, 3541, 22638, 20968, 1628, 32361, 14159, 164, 8263, 1820, 7387, 11989, 24706, 6714, 636, 25953, 32311, 10790, 21810, 31193, 24680, 28238, 6750, 13886, 21112, 397, 21522, 2389, 21870, 25470, 2747, 18148, 29012, 25386, 6349, 30640, 24979, 20508, 30805, 474, 22329, 5424, 12464, 14267,
12138, 13100, 7452, 11681, 23890, 29262, 10106, 15802, 24732, 16857, 29688, 13076, 17254, 18442, 15466, 6356, 11144, 18213, 24504, 7388, 10831, 30853, 5261, 3042, 18594, 3298, 3517, 8155, 8722, 15981, 22422, 20861, 29081, 29874, 32542, 20203, 26368, 9881, 3237, 18332, 26738, 157, 31408, 11224, 18599, 14106, 17580, 29743, 32320, 9316, 4364, 10383, 7402, 9625, 13426, 25996, 12923, 16943, 1383, 21645, 156, 23805, 9738, 29237,
20911, 9513, 16672, 14511, 19394, 19909, 75, 13364, 20066, 31483, 24588, 5897, 12822, 9400, 2872, 12374, 18716, 7236, 22757, 26118, 16861, 3415, 19346, 29784, 20358, 20729, 18662, 20514, 11766, 28400, 16983, 32677, 5145, 887, 14420, 24539, 20796, 14495, 5135, 8094, 13211, 29723, 13991, 26033, 6355, 16864, 5639, 25072, 24100, 28396, 18422, 8194, 31812, 5001, 5210, 19402, 25730, 23872, 7149, 4729, 19505, 24132, 4638, 24650,
25020, 19059, 16422, 13048, 786, 21557, 21143, 13997, 18513, 2366, 7262, 24868, 19230, 12901, 17172, 10563, 8530, 2827, 18757, 7574, 7828, 23967, 26976, 790, 15072, 1357, 5519, 1809, 25490, 10158, 26459, 17742, 29217, 10113, 30790, 30003, 31671, 19165, 11233, 17416, 21532, 18495, 9516, 7994, 31397, 26689, 18557, 7159, 29516, 4546, 14733, 4576, 28514, 8941, 5366, 10818, 10299, 10886, 12627, 3021, 21044, 6318, 20763, 17493,
16432, 18785, 14728, 15335, 5183, 25961, 32751, 26715, 11689, 9499, 1941, 10318, 3420, 20499, 17477, 168, 25045, 32210, 4744, 20791, 8383, 10111, 31609, 18682, 20997, 11468, 21703, 9273, 17787, 9698, 26766, 1451, 28484, 8726, 16786, 899, 1920, 16769, 27614, 13609, 26268, 29555, 23927, 29689, 17286, 8636, 29857, 9564, 8078, 1834, 30355, 16461, 11945, 29197, 2376, 174, 7897, 24079, 9447, 25684, 1010, 3445, 27135, 29494,
12171, 11153, 30393, 14091, 27922, 25239, 27700, 21423, 22026, 18859, 18344, 6545, 27495, 15433, 16109, 2805, 17267, 13696, 19267, 29212, 10125, 21643, 29386, 18023, 12954, 6065, 10939, 13964, 9510, 5307, 10690, 21682, 16460, 8315, 3005, 11615, 786, 30706, 270, 22813, 16797, 18614, 29358, 11525, 1279, 12699, 14330, 18547, 26395, 829, 14991, 3753, 22472, 11610, 21776, 2659, 17675, 32715, 16623, 27186, 5254, 27314, 16100, 21715,
2861, 19105, 562, 3648, 17043, 832, 26461, 1073, 19446, 23051, 12598, 20725, 2982, 26928, 6504, 29377, 27758, 21496, 362, 17462, 338, 22138, 20121, 18013, 22086, 3977, 12431, 27340, 31291, 28531, 16287, 1384, 14869, 16849, 5032, 31912, 17681, 31493, 217, 4359, 21776, 12815, 25085, 24758, 6976, 31589, 21368, 1966, 20317, 21730, 19428, 20655, 11101, 6782, 5901, 419, 10759, 18332, 27759, 9282, 14096, 11279, 10666, 28965,
28128, 15699, 28109, 13042, 14424, 28327, 17401, 3433, 8374, 9718, 28191, 15350, 8540, 16791, 17316, 28857, 5754, 3977, 16745, 16855, 10759, 22646, 17274, 21518, 8210, 12265, 30800, 22306, 23544, 8698, 18503, 18905, 24397, 13845, 31947, 6054, 9404, 16580, 9487, 17778, 26299, 4910, 361, 2071, 21702, 17677, 30928, 27456, 21654, 14905, 11543, 32413, 4783, 28817, 21163, 12994, 8314, 19195, 2532, 31859, 27894, 21036, 17996, 19523,
2113, 17175, 25577, 11517, 987, 2296, 29295, 27286, 7207, 29656, 29357, 28909, 14566, 27518, 23597, 3452, 9655, 2372, 3098, 14439, 31189, 24261, 27433, 6735, 10689, 29965, 5826, 5815, 18233, 23822, 25338, 20346, 8229, 18148, 31863, 9217, 20444, 28391, 3735, 27651, 25279, 325, 23792, 7077, 27843, 14621, 10530, 4730, 16993, 13628, 19169, 15414, 5121, 13834, 22150, 15810, 11032, 27976, 21625, 29265, 19031, 14196, 16844, 27260,
32344, 15939, 3709, 20020, 11562, 7445, 14904, 4074, 7770, 5928, 11151, 2845, 20550, 21681, 7575, 4775, 2541, 26745, 20190, 7663, 7811, 9572, 23473, 18843, 4780, 12331, 15341, 23811, 26527, 32185, 18304, 26103, 15356, 22013, 13355, 26919, 29458, 28259, 30993, 4460, 1420, 9376, 7305, 21970, 31058, 14881, 26745, 831, 8858, 14167, 8494, 16669, 23739, 31968, 2745, 28520, 11531, 18086, 19563, 5290, 17503, 5099, 31393, 91,
27113, 11980, 27010, 23803, 7472, 25235, 28264, 8892, 1844, 2801, 30862, 134, 17682, 24839, 965, 26540, 6239, 9460, 10442, 29978, 8660, 13187, 25730, 20191, 31273, 12526, 25481, 16008, 17625, 24106, 16099, 11970, 3318, 10342, 3006, 10790, 2809, 31270, 19682, 4653, 1303, 17776, 4787, 18986, 9848, 5753, 12758, 16087, 15213, 23200, 13297, 23873, 3619, 6260, 11296, 2124, 18786, 4009, 18132, 3643, 28115, 1464, 15614, 31433,
11806, 18620, 9456, 14615, 17122, 29138, 19269, 18425, 14147, 24056, 4643, 23995, 29809, 17402, 7314, 12254, 7834, 20611, 3359, 11454, 26871, 14655, 13578, 12889, 18664, 31711, 16533, 14011, 407, 32147, 12677, 12213, 17999, 22133, 26828, 2353, 18503, 13329, 20778, 32650, 4618, 25422, 23877, 1659, 10056, 31191, 13914, 17890, 19035, 17273, 29344, 13138, 31929, 10155, 26028, 17825, 9098, 9793, 31837, 9505, 9172, 11746, 21718, 27171,
1111, 15778, 29524, 19614, 29108, 17534, 19497, 958, 10188, 10606, 2617, 20244, 9030, 16531, 5367, 28065, 1037, 1943, 8435, 198, 12098, 1695, 18023, 21196, 11488, 17092, 30701, 20660, 28838, 19651, 15063, 29949, 2662, 11819, 16796, 31770, 29354, 3525, 32728, 6774, 14131, 2577, 27019, 23161, 19109, 32386, 18458, 20146, 1561, 26894, 20344, 13660, 28589, 5599, 2088, 7310, 22692, 22, 27970, 18762, 19673, 10266, 15944, 22335,
22085, 32740, 21337, 18671, 3497, 21297, 25446, 17628, 23875, 19697, 8022, 10216, 19315, 26480, 30362, 20876, 20606, 17938, 1768, 16428, 23537, 3857, 23738, 13461, 3879, 18940, 32224, 23552, 29206, 15400, 13120, 18524, 15372, 1689, 4427, 18869, 22987, 29873, 3729, 14094, 16802, 11751, 24310, 3349, 5464, 21904, 24226, 26070, 7074, 25994, 9730, 30611, 29851, 700, 11305, 962, 19641, 10761, 24515, 16079, 26161, 4867, 1835, 8765,
6556, 6263, 27634, 29543, 3368, 31363, 10869, 20171, 10347, 2411, 23520, 15811, 24315, 14978, 9113, 31389, 8205, 18844, 29233, 5288, 19544, 7770, 6251, 6417, 18531, 30766, 22497, 11924, 2865, 24332, 20689, 9421, 30595, 15555, 6197, 1196, 14150, 17066, 21367, 24497, 19478, 12119, 7540, 11025, 27098, 16654, 9647, 2535, 2730, 6112, 7823, 22274, 13882, 14074, 28692, 32413, 12072, 18421, 11569, 14937, 9985, 32258, 24359, 7813,
15045, 30556, 9009, 29195, 14854, 30376, 20925, 1564, 9727, 28465, 12590, 4057, 12351, 22237, 6592, 15081, 28349, 14416, 4588, 9463, 28490, 512, 9108, 7795, 18933, 20677, 22732, 28918, 20167, 14323, 3963, 2444, 12111, 12972, 31639, 26966, 10580, 19796, 28530, 20308, 15494, 8352, 24365, 27845, 30589, 30958, 10159, 26170, 12606, 14747, 2865, 8328, 15259, 11973, 16123, 1424, 32650, 6088, 30342, 20049, 20411, 1538, 22493, 32523,
14510, 21365, 26721, 25091, 8393, 22483, 12631, 23887, 30836, 4228, 18965, 28657, 2418, 29124, 22060, 15024, 11103, 24925, 23353, 26362, 4131, 6708, 27786, 4013, 12796, 25360, 24063, 440, 26898, 13788, 195, 8641, 2385, 26916, 964, 10779, 16631, 13595, 1898, 14699, 17823, 20863, 10589, 20242, 17219, 32649, 2498, 28322, 24806, 25851, 21916, 28937, 32560, 16934, 183, 12588, 9527, 24246, 13028, 3657, 5266, 13223, 12298, 7652,
7371, 13262, 18431, 24003, 26857, 20329, 5934, 11913, 8425, 16523, 32155, 25644, 16404, 1885, 21199, 8443, 27737, 10347, 4612, 27529, 27282, 4795, 7349, 4041, 29041, 20378, 7698, 1540, 833, 19997, 9192, 8205, 491, 27623, 32208, 27349, 15184, 5374, 6494, 23609, 21898, 5881, 16486, 5534, 7766, 4917, 13977, 2735, 15264, 18590, 30264, 9778, 23385, 4846, 13819, 19659, 25224, 21518, 21199, 26057, 8747, 30391, 1494, 9238,
25246, 934, 3819, 7662, 6309, 10313, 31272, 28207, 16194, 14990, 973, 23961, 19907, 14951, 26696, 2403, 773, 24193, 12182, 24158, 29039, 26001, 11049, 21495, 14751, 32248, 14784, 23498, 29871, 16279, 32737, 22349, 17213, 3788, 30012, 23522, 14102, 28516, 18961, 30296, 10738, 19935, 21489, 30645, 2118, 15418, 280, 2891, 6843, 12462, 27049, 3114, 5696, 5331, 24609, 20447, 4811, 6625, 11178, 1915, 22904, 11147, 24264, 7350,
14935, 21508, 30872, 29037, 17256, 17066, 26566, 27994, 4233, 15287, 25871, 6351, 30705, 26152, 9242, 4780, 5846, 3523, 7894, 11542, 8854, 32503, 31990, 13666, 6361, 10400, 15581, 29265, 21547, 7077, 3847, 3714, 28586, 1952, 32752, 13074, 19018, 26550, 8301, 23251, 9069, 1404, 29602, 7007, 27556, 6076, 11787, 635, 9599, 19682, 12177, 18454, 19417, 11399, 32120, 25778, 21799, 14933, 22276, 10578, 22010, 26123, 14293, 17828,
28075, 14277, 30903, 14325, 8059, 6436, 4808, 17128, 7840, 1642, 24135, 2629, 7718, 3155, 3264, 17318, 22837, 15441, 3004, 9486, 26841, 2356, 2497, 15872, 17289, 24773, 26451, 6531, 18128, 7976, 24360, 13436, 22253, 22495, 27761, 30312, 28931, 32570, 14672, 4003, 1444, 6040, 6632, 9163, 9195, 9896, 26481, 32032, 25338, 29485, 8750, 19411, 31841, 11247, 2515, 16362, 3252, 28966, 22893, 21381, 4174, 14485, 2049, 26427,
4212, 29810, 23971, 375, 29612, 5876, 4379, 31057, 11916, 11011, 7452, 21111, 20908, 1165, 20375, 13478, 30650, 29125, 121, 29723, 7605, 2636, 13317, 10857, 31603, 3442, 32238, 3009, 17928, 1519, 29437, 22140, 31330, 20640, 22516, 28174, 26516, 26895, 26463, 5664, 5138, 1147, 26775, 26046, 2312, 14382, 27612, 194, 10740, 6877, 29917, 18345, 9514, 10466, 29202, 8349, 13909, 28673, 11358, 31837, 30192, 8027, 21209, 28754,
28668, 10957, 24161, 22416, 5084, 17856, 28081, 10223, 19004, 22088, 3501, 21316, 3703, 10258, 21511, 14443, 17135, 18660, 20, 26649, 29127, 29222, 2230, 10268, 25127, 13589, 9337, 22552, 21616, 30546, 18538, 17516, 8736, 9931, 7165, 13820, 27788, 2478, 24043, 14024, 24566, 27545, 2572, 28269, 5035, 24083, 9944, 22170, 9976, 9964, 16052, 6335, 6419, 18282, 16603, 31546, 31871, 25940, 21330, 20720, 23718, 7101, 5468, 32454,
17032, 12633, 13507, 12052, 15111, 4782, 26076, 6910, 32327, 28649, 2411, 4594, 19964, 12356, 26765, 29940, 22320, 10049, 3507, 28739, 28331, 20110, 27518, 27435, 13282, 16080, 15387, 4233, 23181, 20855, 3919, 7446, 721, 17426, 19498, 15832, 22209, 12807, 22742, 21768, 8688, 25154, 26363, 28652, 4742, 20360, 25825, 27062, 30409, 29332, 23034, 25972, 16675, 17784, 20639, 29957, 1096, 3258, 1422, 24278, 24114, 5342, 31724, 24835,
22768, 18454, 7899, 12209, 31261, 30642, 1210, 7181, 23028, 27573, 3066, 27770, 15165, 28891, 22064, 12806, 25455, 12330, 6010, 9362, 30114, 26650, 6552, 31211, 29908, 7974, 22721, 21254, 13316, 21677, 13321, 3317, 7363, 21221, 15526, 5857, 19095, 16736, 13038, 9355, 11541, 16104, 4357, 26706, 12227, 26421, 6744, 4915, 5984, 12755, 14277, 3330, 6637, 20829, 1773, 3777, 28804, 24494, 25032, 9352, 13403, 5585, 12669, 20767,
26806, 28196, 26624, 13133, 12164, 6894, 22488, 23706, 22999, 26845, 17644, 2458, 20499, 24389, 7373, 26483, 4376, 21651, 29813, 11013, 9712, 31587, 14790, 5748, 23313, 7054, 15101, 3949, 12640, 27770, 24716, 6678, 23198, 18572, 19812, 2595, 25466, 9532, 26301, 15697, 3610, 11177, 18156, 24109, 2798, 25529, 17824, 7174, 14412, 14869, 18187, 24125, 13688, 210, 29873, 4234, 7264, 12206, 8183, 19904, 7209, 131, 26583, 30407,
18703, 13627, 234, 11401, 23159, 26535, 27099, 26769, 4945, 12487, 18110, 7743, 5248, 3166, 14918, 19661, 18036, 337, 11018, 31724, 547, 8123, 3190, 7812, 20330, 11373, 27716, 27539, 11504, 21531, 25178, 30207, 2390, 25413, 8841, 25550, 19180, 3172, 19551, 24125, 15659, 4894, 31869, 20907, 8060, 14019, 7800, 26096, 14356, 18818, 25053, 14904, 26942, 28243, 22716, 14504, 6849, 17664, 9275, 18353, 6428, 1685, 15793, 8818,
27098, 24634, 1600, 13511, 27806, 21152, 4868, 10697, 26046, 3969, 31604, 1338, 17988, 6637, 27435, 32345, 25455, 19720, 14481, 19629, 15195, 4429, 1365, 22044, 22093, 10640, 7630, 28521, 12326, 23423, 4572, 6656, 15289, 6172, 20167, 10327, 27324, 25036, 21024, 20602, 29005, 19860, 21941, 14226, 26497, 16608, 13803, 19185, 3560, 28284, 6046, 18755, 32713, 7412, 8032, 22038, 18052, 15662, 17792, 30378, 6317, 22364, 4267, 21606,
28536, 24434, 31933, 23093, 16702, 20189, 10927, 12940, 7281, 100, 27166, 1011, 16708, 8201, 20196, 20268, 3717, 26242, 6256, 3662, 886, 14288, 25700, 18939, 29950, 10724, 16549, 3499, 320, 20816, 25105, 28857, 12483, 24270, 19182, 29185, 11691, 30109, 9357, 18972, 30210, 3755, 19983, 14150, 11956, 7411, 1651, 15673, 886, 7907, 19335, 1772, 22195, 12268, 20711, 19377, 22992, 4493, 22876, 23313, 25309, 15213, 19402, 5024,
6715, 5816, 1442, 18406, 3157, 10799, 4610, 599, 14555, 24594, 14750, 26511, 32005, 16401, 9417, 123, 24308, 28752, 1896, 13735, 8252, 22607, 344, 31245, 27100, 23220, 21790, 19642, 5665, 8424, 24666, 12380, 14240, 26108, 30786, 17397, 4140, 2628, 17997, 18695, 27222, 32747, 12438, 26460, 16380, 21855, 26583, 7920, 17840, 28479, 21655, 26092, 18319, 21999, 24569, 12651, 12451, 13591, 32293, 18116, 22015, 24192, 30496, 3487,
17532, 28514, 20885, 21672, 31142, 6114, 7599, 25597, 6093, 20038, 19289, 22473, 9125, 13104, 30393, 26965, 8816, 19280, 20290, 27135, 8511, 12091, 7018, 20962, 25683, 6544, 6310, 14930, 30736, 4038, 18418, 15500, 32552, 6535, 4405, 30926, 12649, 12004, 23755, 18742, 32042, 10276, 8447, 8400, 23381, 6072, 2597, 32197, 25352, 22887, 26564, 1095, 2211, 814, 22057, 27894, 7358, 28367, 10056, 5326, 32405, 28474, 20827, 32189,
2241, 25232, 30347, 14890, 4468, 21335, 864, 3743, 31611, 9311, 12143, 22224, 15383, 14740, 21653, 7967, 4860, 15449, 9062, 7071, 16264, 31119, 2197, 23622, 26718, 12253, 28949, 26355, 7960, 17008, 25776, 10201, 9472, 23356, 25092, 13940, 11923, 25956, 17683, 10766, 2500, 29826, 223, 17883, 11799, 21876, 25851, 16659, 4558, 2145, 23730, 20822, 497, 25927, 11676, 27215, 5412, 7857, 20803, 13372, 24865, 13811, 23574, 1569,
4399, 15898, 15510, 16322, 9086, 425, 27089, 11586, 30252, 27312, 29470, 9283, 16420, 22553, 25942, 20978, 24698, 16904, 9032, 25195, 10063, 20709, 19643, 15475, 28566, 7678, 28848, 20664, 21489, 19654, 22233, 25889, 2784, 4975, 9443, 11870, 5401, 3764, 23457, 2885, 31076, 20159, 12168, 14729, 9944, 5342, 2939, 1874, 22246, 11972, 27070, 32309, 1700, 13945, 15016, 28479, 21623, 11096, 16375, 10344, 30750, 5841, 3465, 766,
10816, 12909, 12637, 16217, 16673, 3326, 19102, 14982, 23485, 31270, 29711, 661, 3844, 32650, 2535, 26090, 11854, 29605, 25631, 11767, 10782, 7880, 7479, 32405, 18976, 23854, 9982, 16959, 29695, 13447, 17725, 7744, 26356, 30362, 23961, 10262, 920, 10296, 25244, 24405, 8798, 22187, 25066, 12643, 22069, 27602, 5965, 1156, 24439, 31597, 12923, 2454, 6709, 20402, 2091, 25685, 11489, 12073, 9876, 8416, 25521, 27602, 16160, 19109,
25196, 7354, 29371, 26117, 17650, 21847, 17754, 26448, 11266, 10053, 6323, 568, 4887, 12289, 1724, 29326, 11118, 14647, 31780, 17827, 2282, 1104, 10744, 13771, 13177, 20621, 22187, 5930, 15455, 5580, 25040, 7883, 12934, 21643, 1232, 30584, 10723, 18987, 24264, 21989, 29040, 30588, 22557, 1159, 10109, 24281, 30485, 21227, 6161, 29498, 6286, 8443, 30602, 17030, 22214, 11011, 4883, 11633, 16942, 20338, 17213, 9214, 28222, 30147,
30857, 29454, 27963, 8812, 15673, 19460, 30802, 11945, 17280, 20591, 13104, 27389, 12105, 10822, 15848, 18266, 7552, 22134, 26709, 5386, 6396, 16155, 16397, 11280, 27788, 571, 31618, 12234, 9785, 27072, 9613, 7875, 23759, 4809, 16687, 6664, 24269, 14721, 18610, 8781, 2545, 31714, 3402, 14650, 9768, 19250, 148, 17320, 8616, 26857, 22706, 15012, 10244, 6336, 26292, 5264, 6907, 25143, 17498, 16693, 19447, 27112, 24568, 10438,
31921, 8487, 17103, 23422, 23209, 2945, 32203, 25754, 1891, 2837, 7636, 11660, 22087, 7784, 28980, 30703, 1873, 18919, 12947, 12117, 25255, 6472, 17381, 32162, 31615, 2112, 16087, 18294, 29224, 7887, 28733, 28377, 16375, 13068, 19031, 6816, 16013, 18466, 4417, 17904, 21303, 7438, 29564, 10622, 15222, 25777, 8557, 17095, 11928, 21504, 29212, 4415, 27976, 13825, 3809, 26823, 15937, 19897, 12350, 12393, 27784, 8315, 8002, 11391,
21383, 27033, 18207, 4628, 12731, 18009, 22532, 1266, 25447, 19329, 11888, 7901, 12338, 20445, 24996, 24266, 9182, 21440, 28681, 4390, 2498, 32490, 31214, 18435, 19619, 10796, 30829, 14636, 19111, 6063, 26027, 7726, 329, 11467, 12354, 13060, 29476, 2118, 14327, 22156, 21447, 26215, 30057, 1017, 13893, 22286, 25283, 23075, 10958, 21196, 27465, 13456, 20919, 25911, 31892, 7770, 3939, 29953, 22406, 23050, 3248, 15666, 30776, 3577,
27133, 10362, 16638, 23841, 12481, 30965, 13229, 1160, 24412, 10519, 2178, 5537, 37, 27461, 28612, 10995, 15890, 23310, 24452, 4041, 16453, 23576, 11811, 20393, 20761, 1450, 10675, 24009, 17116, 8684, 27587, 11481, 19046, 11457, 2554, 31527, 9654, 15784, 32688, 1298, 26303, 2098, 6836, 26340, 29559, 2680, 4567, 12681, 25990, 29019, 16722, 9676, 19827, 28534, 30069, 7820, 29984, 7976, 31830, 14332, 16660, 26649, 25813, 2939,
5338, 28367, 1698, 14992, 11383, 1618, 16290, 4918, 3716, 23126, 31258, 508, 25807, 3058, 13189, 19029, 32077, 29912, 28705, 19137, 25678, 26006, 26957, 22894, 1215, 26019, 4458, 17875, 19900, 30271, 20814, 25238, 25870, 22513, 7462, 4486, 24131, 23753, 9404, 27848, 14111, 7895, 28356, 7150, 10953, 8777, 26180, 10262, 5921, 22117, 29399, 31599, 15356, 23589, 21725, 16571, 16840, 26183, 1678, 3973, 23686, 22493, 29211, 16789,
12238, 3906, 21275, 3601, 27659, 30679, 31449, 9002, 5806, 27037, 16153, 16759, 3047, 9565, 27022, 8968, 31682, 23653, 7800, 14270, 14474, 29525, 30841, 31315, 22941, 32520, 2520, 13859, 22245, 31731, 30648, 1715, 2869, 19155, 5316, 30528, 17067, 3998, 6763, 22873, 31035, 22916, 6865, 1314, 32481, 1119, 10283, 31395, 24772, 18083, 12898, 6479, 14840, 10971, 5026, 5013, 10723, 7546, 18873, 200, 6509, 16753, 1915, 9379,
3141, 7232, 7139, 20208, 11230, 13902, 10313, 9497, 4050, 17178, 10812, 3763, 18297, 21095, 2391, 10302, 6410, 15289, 16781, 21250, 26260, 21807, 26264, 4216, 29353, 12369, 4416, 3094, 29122, 6332, 12473, 32263, 13564, 19613, 19703, 24794, 747, 30017, 1523, 4798, 14427, 12335, 8561, 32725, 662, 10952, 10259, 7072, 26241, 27040, 28323, 19734, 16079, 21819, 23950, 12664, 1420, 28366, 15758, 30542, 1930, 28232, 30038, 15494,
15077, 16973, 7520, 15824, 14222, 9044, 20622, 28650, 21379, 29184, 28607, 22042, 7368, 6098, 29114, 842, 370, 24669, 20576, 16449, 13720, 11758, 29113, 15140, 7356, 12103, 12915, 9287, 7567, 10185, 24781, 22644, 27158, 32302, 5701, 8613, 8578, 26323, 4495, 29957, 22739, 334, 19231, 30108, 6432, 15578, 30950, 6802, 7479, 18758, 23251, 21200, 30516, 19596, 3572, 5104, 31699, 16487, 14391, 6499, 26672, 6405, 29143, 21063,
5939, 2076, 29676, 14517, 28400, 1403, 11706, 18371, 1737, 30938, 15711, 8169, 13748, 13893, 14971, 21227, 32651, 5454, 9659, 30399, 25050, 13232, 2736, 23981, 29719, 17127, 30480, 23624, 23532, 26856, 11919, 29471, 28932, 8827, 11220, 24564, 10230, 22927, 10168, 11967, 21097, 25879, 20136, 2077, 7005, 2339, 23304, 6888, 7793, 196, 4520, 75, 13428, 7256, 24056, 10379, 24383, 21769, 1235, 15148, 15857, 13154, 11851, 12021,
21981, 23072, 3818, 32211, 13231, 13986, 11410, 1560, 7097, 31546, 3637, 14102, 1117, 26941, 20991, 8910, 27137, 25511, 8985, 7797, 32767, 274, 18177, 24382, 22043, 19412, 6762, 5132, 32567, 18614, 17153, 21780, 8918, 20971, 21224, 22149, 2189, 32634, 23709, 9287, 31413, 27346, 23389, 32530, 21519, 11612, 8673, 15889, 4355, 17658, 23686, 4354, 17932, 9095, 28737, 7207, 28508, 2731, 12339, 28307, 21345, 29493, 17319, 30263,
17696, 5775, 19644, 19886, 5642, 10585, 29173, 4287, 5163, 19794, 4049, 26683, 31407, 12722, 9804, 2994, 30381, 722, 7349, 15545, 9818, 3318, 22753, 5558, 6049, 2324, 1097, 27395, 31817, 18416, 24890, 16746, 24192, 11767, 3864, 29834, 22352, 269, 1353, 27516, 20063, 5402, 21431, 18702, 18125, 31235, 21697, 15738, 31957, 29046, 31283, 9007, 32364, 21268, 14565, 5645, 23593, 15662, 272, 22642, 1311, 25163, 6620, 25503,
4162, 10484, 22569, 26514, 10753, 23922, 21262, 30817, 29324, 9925, 16751, 14681, 8392, 5680, 30419, 7582, 1958, 28935, 16589, 1554, 17435, 31155, 7200, 8260, 14049, 7472, 30903, 15360, 32635, 4755, 8095, 4029, 15240, 30664, 30544, 25993, 21818, 19038, 24042, 18375, 28964, 8026, 288, 4588, 13706, 30708, 12170, 15665, 26875, 28760, 17219, 11542, 27147, 24419, 19803, 8428, 31892, 17938, 23789, 31759, 22693, 31884, 3021, 5165,
29781, 797, 31159, 18831, 19835, 22433, 4438, 16031, 30459, 4727, 20620, 11398, 2667, 22, 27063, 29542, 28782, 11514, 8316, 23161, 3166, 28119, 31590, 2290, 13289, 22611, 1281, 3215, 21727, 4302, 8380, 18740, 5099, 6771, 4804, 24935, 29205, 9242, 8198, 26896, 13969, 28818, 5526, 16636, 28841, 32589, 13410, 24855, 11336, 21727, 15249, 14502, 17078, 14071};
static inline Eina_Bool
_eina_rbtree_is_red(Eina_Rbtree *tree)
{
return tree != NULL && tree->color == EINA_RBTREE_RED;
}
static int
_eina_rbtree_black_height(Eina_Rbtree *tree, Eina_Rbtree_Cmp_Node_Cb cmp)
{
Eina_Rbtree *left;
Eina_Rbtree *right;
Eina_Rbtree_Direction dir;
int left_height;
int right_height;
if (!tree)
return 1;
left = tree->son[EINA_RBTREE_LEFT];
right = tree->son[EINA_RBTREE_RIGHT];
/* Consecutive red links. */
fail_if(_eina_rbtree_is_red(tree) &&
(_eina_rbtree_is_red(left) || _eina_rbtree_is_red(right)));
left_height = _eina_rbtree_black_height(left, cmp);
right_height = _eina_rbtree_black_height(right, cmp);
/* Check binary search tree. */
if (left)
{
dir = cmp(tree, left, NULL);
fail_if(dir != EINA_RBTREE_LEFT);
}
if (right)
{
dir = cmp(tree, right, NULL);
fail_if(dir != EINA_RBTREE_RIGHT);
}
/* Check black height */
if (left_height != right_height)
fprintf(stderr, "%i != %i\n", left_height, right_height);
fail_if(left_height != right_height);
return _eina_rbtree_is_red(tree) ? left_height : left_height + 1;
}
typedef struct _Eina_Rbtree_Int Eina_Rbtree_Int;
struct _Eina_Rbtree_Int
{
Eina_Rbtree node;
int value;
};
static Eina_Rbtree_Direction
eina_rbtree_int_cmp(const Eina_Rbtree_Int *left,
const Eina_Rbtree_Int *right,
EINA_UNUSED void *data)
{
fail_if(!left);
fail_if(!right);
if (left->value < right->value)
return EINA_RBTREE_LEFT;
return EINA_RBTREE_RIGHT;
}
static int
eina_rbtree_int_key(const Eina_Rbtree_Int *node,
const int *key,
EINA_UNUSED int length,
EINA_UNUSED void *data)
{
fail_if(!node);
return node->value - *key;
}
static Eina_Rbtree_Int *
_eina_rbtree_int_init(int num)
{
return malloc(num * sizeof(Eina_Rbtree_Int));
}
static Eina_Rbtree_Int *
_eina_rbtree_int_new(int value, Eina_Rbtree_Int *mem, int i)
{
mem[i].value = value;
return &mem[i];
}
EFL_START_TEST(eina_rbtree_insertion)
{
Eina_Rbtree_Int *root = NULL;
Eina_Rbtree_Int *item;
int i;
Eina_Rbtree_Int *mem;
mem = _eina_rbtree_int_init(500);
for (i = 0; i < 500; ++i)
{
item = _eina_rbtree_int_new(r1[i], mem, i);
root = (Eina_Rbtree_Int *)eina_rbtree_inline_insert(
&root->node,
&item->node,
EINA_RBTREE_CMP_NODE_CB(
eina_rbtree_int_cmp),
NULL);
}
_eina_rbtree_black_height(&root->node,
EINA_RBTREE_CMP_NODE_CB(
eina_rbtree_int_cmp));
free(mem);
}
EFL_END_TEST
EFL_START_TEST(eina_rbtree_lookup)
{
Eina_Rbtree_Int *root = NULL;
Eina_Rbtree_Int *item;
int list[] = { 50, 100, 10, 43, 23 };
unsigned int i;
Eina_Rbtree_Int *mem;
mem = _eina_rbtree_int_init(EINA_C_ARRAY_LENGTH(list));
for (i = 0; i < EINA_C_ARRAY_LENGTH(list); ++i)
{
item = _eina_rbtree_int_new(list[i], mem, i);
root = (Eina_Rbtree_Int *)eina_rbtree_inline_insert(
&root->node,
&item->node,
EINA_RBTREE_CMP_NODE_CB(
eina_rbtree_int_cmp),
NULL);
}
item = (Eina_Rbtree_Int *)eina_rbtree_inline_lookup(&root->node,
&list[0],
sizeof(int),
EINA_RBTREE_CMP_KEY_CB(
eina_rbtree_int_key),
NULL);
fail_if(!item);
i = 42;
item =
(Eina_Rbtree_Int *)eina_rbtree_inline_lookup(&root->node,
&i,
sizeof(int),
EINA_RBTREE_CMP_KEY_CB(
eina_rbtree_int_key),
NULL);
fail_if(item);
free(mem);
}
EFL_END_TEST
EFL_START_TEST(eina_rbtree_remove)
{
Eina_Rbtree_Int *root = NULL;
Eina_Rbtree_Int *item;
Eina_Array *ea;
Eina_Array_Iterator it;
unsigned int i;
Eina_Rbtree_Int *mem;
unsigned int num_nodes = 20;
mem = _eina_rbtree_int_init(num_nodes);
ea = eina_array_new(num_nodes);
fail_if(!ea);
for (i = 0; i < num_nodes; ++i)
{
item = _eina_rbtree_int_new(r1[i], mem, i);
eina_array_push(ea, item);
root = (Eina_Rbtree_Int *)eina_rbtree_inline_insert(
&root->node,
&item->node,
EINA_RBTREE_CMP_NODE_CB(
eina_rbtree_int_cmp),
NULL);
}
_eina_rbtree_black_height(&root->node,
EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp));
EINA_ARRAY_ITER_NEXT(ea, i, item, it)
{
root = (Eina_Rbtree_Int *)eina_rbtree_inline_remove(
&root->node,
&item->node,
EINA_RBTREE_CMP_NODE_CB(
eina_rbtree_int_cmp),
NULL);
_eina_rbtree_black_height(&root->node,
EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp));
}
fail_if(root != NULL);
eina_array_free(ea);
free(mem);
}
EFL_END_TEST
EFL_START_TEST(eina_rbtree_simple_remove)
{
Eina_Rbtree *root = NULL;
Eina_Rbtree *lookup;
int i;
int values[] =
{
10, 42, 69, 1337
};
Eina_Rbtree_Int *mem;
mem = _eina_rbtree_int_init(EINA_C_ARRAY_LENGTH(values));
for (i = 0; i < (int)EINA_C_ARRAY_LENGTH(values); i++)
root = eina_rbtree_inline_insert(root,
(Eina_Rbtree *)_eina_rbtree_int_new(values[i], mem, i),
EINA_RBTREE_CMP_NODE_CB( eina_rbtree_int_cmp), NULL);
_eina_rbtree_black_height(root,
EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp));
fail_if(root == NULL);
i = 69;
lookup = eina_rbtree_inline_lookup(root,
&i,
sizeof (int),
EINA_RBTREE_CMP_KEY_CB(
eina_rbtree_int_key),
NULL);
_eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp));
fail_if(lookup == NULL);
root =
eina_rbtree_inline_remove(root, lookup, EINA_RBTREE_CMP_NODE_CB(
eina_rbtree_int_cmp), NULL);
_eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp));
free(mem);
}
EFL_END_TEST
EFL_START_TEST(eina_rbtree_simple_remove2)
{
Eina_Rbtree *root = NULL;
Eina_Rbtree *lookup;
int i;
int values[] =
{
10, 42, 69, 1337, 77, 75, 81
};
Eina_Rbtree_Int *mem;
mem = _eina_rbtree_int_init(EINA_C_ARRAY_LENGTH(values));
for (i = 0; i < (int)EINA_C_ARRAY_LENGTH(values); i++)
root = eina_rbtree_inline_insert(root,
(Eina_Rbtree *)_eina_rbtree_int_new(values[i], mem, i),
EINA_RBTREE_CMP_NODE_CB( eina_rbtree_int_cmp), NULL);
_eina_rbtree_black_height(root,
EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp));
fail_if(root == NULL);
i = 69;
lookup = eina_rbtree_inline_lookup(root,
&i,
sizeof (int),
EINA_RBTREE_CMP_KEY_CB(
eina_rbtree_int_key),
NULL);
_eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp));
fail_if(lookup == NULL);
root =
eina_rbtree_inline_remove(root, lookup, EINA_RBTREE_CMP_NODE_CB(
eina_rbtree_int_cmp), NULL);
_eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp));
free(mem);
}
EFL_END_TEST
EFL_START_TEST(eina_rbtree_simple_remove3)
{
Eina_Rbtree *root = NULL;
Eina_Rbtree *lookup;
int i;
int values[] =
{
1113497590,
499187507,
1693860487,
26211080,
797272577,
1252184882,
1448158229,
1821884856,
346086006,
936357333,
1462073936,
1717320055,
1845524606
};
Eina_Rbtree_Int *mem;
mem = _eina_rbtree_int_init(EINA_C_ARRAY_LENGTH(values));
for (i = 0; i < (int)EINA_C_ARRAY_LENGTH(values); i++)
root = eina_rbtree_inline_insert(root,
(Eina_Rbtree *)_eina_rbtree_int_new(values[i], mem, i),
EINA_RBTREE_CMP_NODE_CB( eina_rbtree_int_cmp), NULL);
_eina_rbtree_black_height(root,
EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp));
fail_if(root == NULL);
i = 1113497590;
lookup = eina_rbtree_inline_lookup(root,
&i,
sizeof (int),
EINA_RBTREE_CMP_KEY_CB(
eina_rbtree_int_key),
NULL);
_eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp));
fail_if(lookup == NULL);
root =
eina_rbtree_inline_remove(root, lookup, EINA_RBTREE_CMP_NODE_CB(
eina_rbtree_int_cmp), NULL);
_eina_rbtree_black_height(root, EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp));
free(mem);
}
EFL_END_TEST
EFL_START_TEST(eina_rbtree_fuzzy)
{
Eina_Rbtree_Int *child;
Eina_Rbtree *root = NULL;
unsigned int i;
Eina_Rbtree_Int *mem;
mem = _eina_rbtree_int_init(100);
for (i = 0; i < 100; i++)
{
child = _eina_rbtree_int_new(r2[i], mem, i);
root = eina_rbtree_inline_remove(root, (Eina_Rbtree*) child,
EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp), NULL);
root = eina_rbtree_inline_insert(root, (Eina_Rbtree*) child,
EINA_RBTREE_CMP_NODE_CB(eina_rbtree_int_cmp), NULL);
}
for (i = 0; i < 100; i++)
{
int r;
r = r1[i];
ck_assert_ptr_eq(eina_rbtree_inline_lookup(root, &r, sizeof (int),
EINA_RBTREE_CMP_KEY_CB(eina_rbtree_int_key), NULL), NULL);
}
free(mem);
}
EFL_END_TEST
void
eina_test_rbtree(TCase *tc)
{
tcase_add_test(tc, eina_rbtree_insertion);
tcase_add_test(tc, eina_rbtree_lookup);
tcase_add_test(tc, eina_rbtree_remove);
tcase_add_test(tc, eina_rbtree_simple_remove);
tcase_add_test(tc, eina_rbtree_simple_remove2);
tcase_add_test(tc, eina_rbtree_simple_remove3);
tcase_add_test(tc, eina_rbtree_fuzzy);
}