1/*
2 * This file derives from SFMT 1.3.3
3 * (http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html), which was
4 * released under the terms of the following license:
5 *
6 *   Copyright (c) 2006,2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima
7 *   University. All rights reserved.
8 *
9 *   Redistribution and use in source and binary forms, with or without
10 *   modification, are permitted provided that the following conditions are
11 *   met:
12 *
13 *       * Redistributions of source code must retain the above copyright
14 *         notice, this list of conditions and the following disclaimer.
15 *       * Redistributions in binary form must reproduce the above
16 *         copyright notice, this list of conditions and the following
17 *         disclaimer in the documentation and/or other materials provided
18 *         with the distribution.
19 *       * Neither the name of the Hiroshima University nor the names of
20 *         its contributors may be used to endorse or promote products
21 *         derived from this software without specific prior written
22 *         permission.
23 *
24 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27 *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
28 *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29 *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
30 *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31 *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32 *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33 *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 */
36#include "test/jemalloc_test.h"
37
38#define	BLOCK_SIZE 10000
39#define	BLOCK_SIZE64 (BLOCK_SIZE / 2)
40#define	COUNT_1 1000
41#define	COUNT_2 700
42
43static const uint32_t init_gen_rand_32_expected[] = {
44	3440181298U, 1564997079U, 1510669302U, 2930277156U, 1452439940U,
45	3796268453U,  423124208U, 2143818589U, 3827219408U, 2987036003U,
46	2674978610U, 1536842514U, 2027035537U, 2534897563U, 1686527725U,
47	 545368292U, 1489013321U, 1370534252U, 4231012796U, 3994803019U,
48	1764869045U,  824597505U,  862581900U, 2469764249U,  812862514U,
49	 359318673U,  116957936U, 3367389672U, 2327178354U, 1898245200U,
50	3206507879U, 2378925033U, 1040214787U, 2524778605U, 3088428700U,
51	1417665896U,  964324147U, 2282797708U, 2456269299U,  313400376U,
52	2245093271U, 1015729427U, 2694465011U, 3246975184U, 1992793635U,
53	 463679346U, 3721104591U, 3475064196U,  856141236U, 1499559719U,
54	3522818941U, 3721533109U, 1954826617U, 1282044024U, 1543279136U,
55	1301863085U, 2669145051U, 4221477354U, 3896016841U, 3392740262U,
56	 462466863U, 1037679449U, 1228140306U,  922298197U, 1205109853U,
57	1872938061U, 3102547608U, 2742766808U, 1888626088U, 4028039414U,
58	 157593879U, 1136901695U, 4038377686U, 3572517236U, 4231706728U,
59	2997311961U, 1189931652U, 3981543765U, 2826166703U,   87159245U,
60	1721379072U, 3897926942U, 1790395498U, 2569178939U, 1047368729U,
61	2340259131U, 3144212906U, 2301169789U, 2442885464U, 3034046771U,
62	3667880593U, 3935928400U, 2372805237U, 1666397115U, 2460584504U,
63	 513866770U, 3810869743U, 2147400037U, 2792078025U, 2941761810U,
64	3212265810U,  984692259U,  346590253U, 1804179199U, 3298543443U,
65	 750108141U, 2880257022U,  243310542U, 1869036465U, 1588062513U,
66	2983949551U, 1931450364U, 4034505847U, 2735030199U, 1628461061U,
67	2539522841U,  127965585U, 3992448871U,  913388237U,  559130076U,
68	1202933193U, 4087643167U, 2590021067U, 2256240196U, 1746697293U,
69	1013913783U, 1155864921U, 2715773730U,  915061862U, 1948766573U,
70	2322882854U, 3761119102U, 1343405684U, 3078711943U, 3067431651U,
71	3245156316U, 3588354584U, 3484623306U, 3899621563U, 4156689741U,
72	3237090058U, 3880063844U,  862416318U, 4039923869U, 2303788317U,
73	3073590536U,  701653667U, 2131530884U, 3169309950U, 2028486980U,
74	 747196777U, 3620218225U,  432016035U, 1449580595U, 2772266392U,
75	 444224948U, 1662832057U, 3184055582U, 3028331792U, 1861686254U,
76	1104864179U,  342430307U, 1350510923U, 3024656237U, 1028417492U,
77	2870772950U,  290847558U, 3675663500U,  508431529U, 4264340390U,
78	2263569913U, 1669302976U,  519511383U, 2706411211U, 3764615828U,
79	3883162495U, 4051445305U, 2412729798U, 3299405164U, 3991911166U,
80	2348767304U, 2664054906U, 3763609282U,  593943581U, 3757090046U,
81	2075338894U, 2020550814U, 4287452920U, 4290140003U, 1422957317U,
82	2512716667U, 2003485045U, 2307520103U, 2288472169U, 3940751663U,
83	4204638664U, 2892583423U, 1710068300U, 3904755993U, 2363243951U,
84	3038334120U,  547099465U,  771105860U, 3199983734U, 4282046461U,
85	2298388363U,  934810218U, 2837827901U, 3952500708U, 2095130248U,
86	3083335297U,   26885281U, 3932155283U, 1531751116U, 1425227133U,
87	 495654159U, 3279634176U, 3855562207U, 3957195338U, 4159985527U,
88	 893375062U, 1875515536U, 1327247422U, 3754140693U, 1028923197U,
89	1729880440U,  805571298U,  448971099U, 2726757106U, 2749436461U,
90	2485987104U,  175337042U, 3235477922U, 3882114302U, 2020970972U,
91	 943926109U, 2762587195U, 1904195558U, 3452650564U,  108432281U,
92	3893463573U, 3977583081U, 2636504348U, 1110673525U, 3548479841U,
93	4258854744U,  980047703U, 4057175418U, 3890008292U,  145653646U,
94	3141868989U, 3293216228U, 1194331837U, 1254570642U, 3049934521U,
95	2868313360U, 2886032750U, 1110873820U,  279553524U, 3007258565U,
96	1104807822U, 3186961098U,  315764646U, 2163680838U, 3574508994U,
97	3099755655U,  191957684U, 3642656737U, 3317946149U, 3522087636U,
98	 444526410U,  779157624U, 1088229627U, 1092460223U, 1856013765U,
99	3659877367U,  368270451U,  503570716U, 3000984671U, 2742789647U,
100	 928097709U, 2914109539U,  308843566U, 2816161253U, 3667192079U,
101	2762679057U, 3395240989U, 2928925038U, 1491465914U, 3458702834U,
102	3787782576U, 2894104823U, 1296880455U, 1253636503U,  989959407U,
103	2291560361U, 2776790436U, 1913178042U, 1584677829U,  689637520U,
104	1898406878U,  688391508U, 3385234998U,  845493284U, 1943591856U,
105	2720472050U,  222695101U, 1653320868U, 2904632120U, 4084936008U,
106	1080720688U, 3938032556U,  387896427U, 2650839632U,   99042991U,
107	1720913794U, 1047186003U, 1877048040U, 2090457659U,  517087501U,
108	4172014665U, 2129713163U, 2413533132U, 2760285054U, 4129272496U,
109	1317737175U, 2309566414U, 2228873332U, 3889671280U, 1110864630U,
110	3576797776U, 2074552772U,  832002644U, 3097122623U, 2464859298U,
111	2679603822U, 1667489885U, 3237652716U, 1478413938U, 1719340335U,
112	2306631119U,  639727358U, 3369698270U,  226902796U, 2099920751U,
113	1892289957U, 2201594097U, 3508197013U, 3495811856U, 3900381493U,
114	 841660320U, 3974501451U, 3360949056U, 1676829340U,  728899254U,
115	2047809627U, 2390948962U,  670165943U, 3412951831U, 4189320049U,
116	1911595255U, 2055363086U,  507170575U,  418219594U, 4141495280U,
117	2692088692U, 4203630654U, 3540093932U,  791986533U, 2237921051U,
118	2526864324U, 2956616642U, 1394958700U, 1983768223U, 1893373266U,
119	 591653646U,  228432437U, 1611046598U, 3007736357U, 1040040725U,
120	2726180733U, 2789804360U, 4263568405U,  829098158U, 3847722805U,
121	1123578029U, 1804276347U,  997971319U, 4203797076U, 4185199713U,
122	2811733626U, 2343642194U, 2985262313U, 1417930827U, 3759587724U,
123	1967077982U, 1585223204U, 1097475516U, 1903944948U,  740382444U,
124	1114142065U, 1541796065U, 1718384172U, 1544076191U, 1134682254U,
125	3519754455U, 2866243923U,  341865437U,  645498576U, 2690735853U,
126	1046963033U, 2493178460U, 1187604696U, 1619577821U,  488503634U,
127	3255768161U, 2306666149U, 1630514044U, 2377698367U, 2751503746U,
128	3794467088U, 1796415981U, 3657173746U,  409136296U, 1387122342U,
129	1297726519U,  219544855U, 4270285558U,  437578827U, 1444698679U,
130	2258519491U,  963109892U, 3982244073U, 3351535275U,  385328496U,
131	1804784013U,  698059346U, 3920535147U,  708331212U,  784338163U,
132	 785678147U, 1238376158U, 1557298846U, 2037809321U,  271576218U,
133	4145155269U, 1913481602U, 2763691931U,  588981080U, 1201098051U,
134	3717640232U, 1509206239U,  662536967U, 3180523616U, 1133105435U,
135	2963500837U, 2253971215U, 3153642623U, 1066925709U, 2582781958U,
136	3034720222U, 1090798544U, 2942170004U, 4036187520U,  686972531U,
137	2610990302U, 2641437026U, 1837562420U,  722096247U, 1315333033U,
138	2102231203U, 3402389208U, 3403698140U, 1312402831U, 2898426558U,
139	 814384596U,  385649582U, 1916643285U, 1924625106U, 2512905582U,
140	2501170304U, 4275223366U, 2841225246U, 1467663688U, 3563567847U,
141	2969208552U,  884750901U,  102992576U,  227844301U, 3681442994U,
142	3502881894U, 4034693299U, 1166727018U, 1697460687U, 1737778332U,
143	1787161139U, 1053003655U, 1215024478U, 2791616766U, 2525841204U,
144	1629323443U,    3233815U, 2003823032U, 3083834263U, 2379264872U,
145	3752392312U, 1287475550U, 3770904171U, 3004244617U, 1502117784U,
146	 918698423U, 2419857538U, 3864502062U, 1751322107U, 2188775056U,
147	4018728324U,  983712955U,  440071928U, 3710838677U, 2001027698U,
148	3994702151U,   22493119U, 3584400918U, 3446253670U, 4254789085U,
149	1405447860U, 1240245579U, 1800644159U, 1661363424U, 3278326132U,
150	3403623451U,   67092802U, 2609352193U, 3914150340U, 1814842761U,
151	3610830847U,  591531412U, 3880232807U, 1673505890U, 2585326991U,
152	1678544474U, 3148435887U, 3457217359U, 1193226330U, 2816576908U,
153	 154025329U,  121678860U, 1164915738U,  973873761U,  269116100U,
154	  52087970U,  744015362U,  498556057U,   94298882U, 1563271621U,
155	2383059628U, 4197367290U, 3958472990U, 2592083636U, 2906408439U,
156	1097742433U, 3924840517U,  264557272U, 2292287003U, 3203307984U,
157	4047038857U, 3820609705U, 2333416067U, 1839206046U, 3600944252U,
158	3412254904U,  583538222U, 2390557166U, 4140459427U, 2810357445U,
159	 226777499U, 2496151295U, 2207301712U, 3283683112U,  611630281U,
160	1933218215U, 3315610954U, 3889441987U, 3719454256U, 3957190521U,
161	1313998161U, 2365383016U, 3146941060U, 1801206260U,  796124080U,
162	2076248581U, 1747472464U, 3254365145U,  595543130U, 3573909503U,
163	3758250204U, 2020768540U, 2439254210U,   93368951U, 3155792250U,
164	2600232980U, 3709198295U, 3894900440U, 2971850836U, 1578909644U,
165	1443493395U, 2581621665U, 3086506297U, 2443465861U,  558107211U,
166	1519367835U,  249149686U,  908102264U, 2588765675U, 1232743965U,
167	1001330373U, 3561331654U, 2259301289U, 1564977624U, 3835077093U,
168	 727244906U, 4255738067U, 1214133513U, 2570786021U, 3899704621U,
169	1633861986U, 1636979509U, 1438500431U,   58463278U, 2823485629U,
170	2297430187U, 2926781924U, 3371352948U, 1864009023U, 2722267973U,
171	1444292075U,  437703973U, 1060414512U,  189705863U,  910018135U,
172	4077357964U,  884213423U, 2644986052U, 3973488374U, 1187906116U,
173	2331207875U,  780463700U, 3713351662U, 3854611290U,  412805574U,
174	2978462572U, 2176222820U,  829424696U, 2790788332U, 2750819108U,
175	1594611657U, 3899878394U, 3032870364U, 1702887682U, 1948167778U,
176	  14130042U,  192292500U,  947227076U,   90719497U, 3854230320U,
177	 784028434U, 2142399787U, 1563449646U, 2844400217U,  819143172U,
178	2883302356U, 2328055304U, 1328532246U, 2603885363U, 3375188924U,
179	 933941291U, 3627039714U, 2129697284U, 2167253953U, 2506905438U,
180	1412424497U, 2981395985U, 1418359660U, 2925902456U,   52752784U,
181	3713667988U, 3924669405U,  648975707U, 1145520213U, 4018650664U,
182	3805915440U, 2380542088U, 2013260958U, 3262572197U, 2465078101U,
183	1114540067U, 3728768081U, 2396958768U,  590672271U,  904818725U,
184	4263660715U,  700754408U, 1042601829U, 4094111823U, 4274838909U,
185	2512692617U, 2774300207U, 2057306915U, 3470942453U,   99333088U,
186	1142661026U, 2889931380U,   14316674U, 2201179167U,  415289459U,
187	 448265759U, 3515142743U, 3254903683U,  246633281U, 1184307224U,
188	2418347830U, 2092967314U, 2682072314U, 2558750234U, 2000352263U,
189	1544150531U,  399010405U, 1513946097U,  499682937U,  461167460U,
190	3045570638U, 1633669705U,  851492362U, 4052801922U, 2055266765U,
191	 635556996U,  368266356U, 2385737383U, 3218202352U, 2603772408U,
192	 349178792U,  226482567U, 3102426060U, 3575998268U, 2103001871U,
193	3243137071U,  225500688U, 1634718593U, 4283311431U, 4292122923U,
194	3842802787U,  811735523U,  105712518U,  663434053U, 1855889273U,
195	2847972595U, 1196355421U, 2552150115U, 4254510614U, 3752181265U,
196	3430721819U, 3828705396U, 3436287905U, 3441964937U, 4123670631U,
197	 353001539U,  459496439U, 3799690868U, 1293777660U, 2761079737U,
198	 498096339U, 3398433374U, 4080378380U, 2304691596U, 2995729055U,
199	4134660419U, 3903444024U, 3576494993U,  203682175U, 3321164857U,
200	2747963611U,   79749085U, 2992890370U, 1240278549U, 1772175713U,
201	2111331972U, 2655023449U, 1683896345U, 2836027212U, 3482868021U,
202	2489884874U,  756853961U, 2298874501U, 4013448667U, 4143996022U,
203	2948306858U, 4132920035U, 1283299272U,  995592228U, 3450508595U,
204	1027845759U, 1766942720U, 3861411826U, 1446861231U,   95974993U,
205	3502263554U, 1487532194U,  601502472U, 4129619129U,  250131773U,
206	2050079547U, 3198903947U, 3105589778U, 4066481316U, 3026383978U,
207	2276901713U,  365637751U, 2260718426U, 1394775634U, 1791172338U,
208	2690503163U, 2952737846U, 1568710462U,  732623190U, 2980358000U,
209	1053631832U, 1432426951U, 3229149635U, 1854113985U, 3719733532U,
210	3204031934U,  735775531U,  107468620U, 3734611984U,  631009402U,
211	3083622457U, 4109580626U,  159373458U, 1301970201U, 4132389302U,
212	1293255004U,  847182752U, 4170022737U,   96712900U, 2641406755U,
213	1381727755U,  405608287U, 4287919625U, 1703554290U, 3589580244U,
214	2911403488U,    2166565U, 2647306451U, 2330535117U, 1200815358U,
215	1165916754U,  245060911U, 4040679071U, 3684908771U, 2452834126U,
216	2486872773U, 2318678365U, 2940627908U, 1837837240U, 3447897409U,
217	4270484676U, 1495388728U, 3754288477U, 4204167884U, 1386977705U,
218	2692224733U, 3076249689U, 4109568048U, 4170955115U, 4167531356U,
219	4020189950U, 4261855038U, 3036907575U, 3410399885U, 3076395737U,
220	1046178638U,  144496770U,  230725846U, 3349637149U,   17065717U,
221	2809932048U, 2054581785U, 3608424964U, 3259628808U,  134897388U,
222	3743067463U,  257685904U, 3795656590U, 1562468719U, 3589103904U,
223	3120404710U,  254684547U, 2653661580U, 3663904795U, 2631942758U,
224	1063234347U, 2609732900U, 2332080715U, 3521125233U, 1180599599U,
225	1935868586U, 4110970440U,  296706371U, 2128666368U, 1319875791U,
226	1570900197U, 3096025483U, 1799882517U, 1928302007U, 1163707758U,
227	1244491489U, 3533770203U,  567496053U, 2757924305U, 2781639343U,
228	2818420107U,  560404889U, 2619609724U, 4176035430U, 2511289753U,
229	2521842019U, 3910553502U, 2926149387U, 3302078172U, 4237118867U,
230	 330725126U,  367400677U,  888239854U,  545570454U, 4259590525U,
231	 134343617U, 1102169784U, 1647463719U, 3260979784U, 1518840883U,
232	3631537963U, 3342671457U, 1301549147U, 2083739356U,  146593792U,
233	3217959080U,  652755743U, 2032187193U, 3898758414U, 1021358093U,
234	4037409230U, 2176407931U, 3427391950U, 2883553603U,  985613827U,
235	3105265092U, 3423168427U, 3387507672U,  467170288U, 2141266163U,
236	3723870208U,  916410914U, 1293987799U, 2652584950U,  769160137U,
237	3205292896U, 1561287359U, 1684510084U, 3136055621U, 3765171391U,
238	 639683232U, 2639569327U, 1218546948U, 4263586685U, 3058215773U,
239	2352279820U,  401870217U, 2625822463U, 1529125296U, 2981801895U,
240	1191285226U, 4027725437U, 3432700217U, 4098835661U,  971182783U,
241	2443861173U, 3881457123U, 3874386651U,  457276199U, 2638294160U,
242	4002809368U,  421169044U, 1112642589U, 3076213779U, 3387033971U,
243	2499610950U, 3057240914U, 1662679783U,  461224431U, 1168395933U
244};
245static const uint32_t init_by_array_32_expected[] = {
246	2920711183U, 3885745737U, 3501893680U,  856470934U, 1421864068U,
247	 277361036U, 1518638004U, 2328404353U, 3355513634U,   64329189U,
248	1624587673U, 3508467182U, 2481792141U, 3706480799U, 1925859037U,
249	2913275699U,  882658412U,  384641219U,  422202002U, 1873384891U,
250	2006084383U, 3924929912U, 1636718106U, 3108838742U, 1245465724U,
251	4195470535U,  779207191U, 1577721373U, 1390469554U, 2928648150U,
252	 121399709U, 3170839019U, 4044347501U,  953953814U, 3821710850U,
253	3085591323U, 3666535579U, 3577837737U, 2012008410U, 3565417471U,
254	4044408017U,  433600965U, 1637785608U, 1798509764U,  860770589U,
255	3081466273U, 3982393409U, 2451928325U, 3437124742U, 4093828739U,
256	3357389386U, 2154596123U,  496568176U, 2650035164U, 2472361850U,
257	   3438299U, 2150366101U, 1577256676U, 3802546413U, 1787774626U,
258	4078331588U, 3706103141U,  170391138U, 3806085154U, 1680970100U,
259	1961637521U, 3316029766U,  890610272U, 1453751581U, 1430283664U,
260	3051057411U, 3597003186U,  542563954U, 3796490244U, 1690016688U,
261	3448752238U,  440702173U,  347290497U, 1121336647U, 2540588620U,
262	 280881896U, 2495136428U,  213707396U,   15104824U, 2946180358U,
263	 659000016U,  566379385U, 2614030979U, 2855760170U,  334526548U,
264	2315569495U, 2729518615U,  564745877U, 1263517638U, 3157185798U,
265	1604852056U, 1011639885U, 2950579535U, 2524219188U,  312951012U,
266	1528896652U, 1327861054U, 2846910138U, 3966855905U, 2536721582U,
267	 855353911U, 1685434729U, 3303978929U, 1624872055U, 4020329649U,
268	3164802143U, 1642802700U, 1957727869U, 1792352426U, 3334618929U,
269	2631577923U, 3027156164U,  842334259U, 3353446843U, 1226432104U,
270	1742801369U, 3552852535U, 3471698828U, 1653910186U, 3380330939U,
271	2313782701U, 3351007196U, 2129839995U, 1800682418U, 4085884420U,
272	1625156629U, 3669701987U,  615211810U, 3294791649U, 4131143784U,
273	2590843588U, 3207422808U, 3275066464U,  561592872U, 3957205738U,
274	3396578098U,   48410678U, 3505556445U, 1005764855U, 3920606528U,
275	2936980473U, 2378918600U, 2404449845U, 1649515163U,  701203563U,
276	3705256349U,   83714199U, 3586854132U,  922978446U, 2863406304U,
277	3523398907U, 2606864832U, 2385399361U, 3171757816U, 4262841009U,
278	3645837721U, 1169579486U, 3666433897U, 3174689479U, 1457866976U,
279	3803895110U, 3346639145U, 1907224409U, 1978473712U, 1036712794U,
280	 980754888U, 1302782359U, 1765252468U,  459245755U, 3728923860U,
281	1512894209U, 2046491914U,  207860527U,  514188684U, 2288713615U,
282	1597354672U, 3349636117U, 2357291114U, 3995796221U,  945364213U,
283	1893326518U, 3770814016U, 1691552714U, 2397527410U,  967486361U,
284	 776416472U, 4197661421U,  951150819U, 1852770983U, 4044624181U,
285	1399439738U, 4194455275U, 2284037669U, 1550734958U, 3321078108U,
286	1865235926U, 2912129961U, 2664980877U, 1357572033U, 2600196436U,
287	2486728200U, 2372668724U, 1567316966U, 2374111491U, 1839843570U,
288	  20815612U, 3727008608U, 3871996229U,  824061249U, 1932503978U,
289	3404541726U,  758428924U, 2609331364U, 1223966026U, 1299179808U,
290	 648499352U, 2180134401U,  880821170U, 3781130950U,  113491270U,
291	1032413764U, 4185884695U, 2490396037U, 1201932817U, 4060951446U,
292	4165586898U, 1629813212U, 2887821158U,  415045333U,  628926856U,
293	2193466079U, 3391843445U, 2227540681U, 1907099846U, 2848448395U,
294	1717828221U, 1372704537U, 1707549841U, 2294058813U, 2101214437U,
295	2052479531U, 1695809164U, 3176587306U, 2632770465U,   81634404U,
296	1603220563U,  644238487U,  302857763U,  897352968U, 2613146653U,
297	1391730149U, 4245717312U, 4191828749U, 1948492526U, 2618174230U,
298	3992984522U, 2178852787U, 3596044509U, 3445573503U, 2026614616U,
299	 915763564U, 3415689334U, 2532153403U, 3879661562U, 2215027417U,
300	3111154986U, 2929478371U,  668346391U, 1152241381U, 2632029711U,
301	3004150659U, 2135025926U,  948690501U, 2799119116U, 4228829406U,
302	1981197489U, 4209064138U,  684318751U, 3459397845U,  201790843U,
303	4022541136U, 3043635877U,  492509624U, 3263466772U, 1509148086U,
304	 921459029U, 3198857146U,  705479721U, 3835966910U, 3603356465U,
305	 576159741U, 1742849431U,  594214882U, 2055294343U, 3634861861U,
306	 449571793U, 3246390646U, 3868232151U, 1479156585U, 2900125656U,
307	2464815318U, 3960178104U, 1784261920U,   18311476U, 3627135050U,
308	 644609697U,  424968996U,  919890700U, 2986824110U,  816423214U,
309	4003562844U, 1392714305U, 1757384428U, 2569030598U,  995949559U,
310	3875659880U, 2933807823U, 2752536860U, 2993858466U, 4030558899U,
311	2770783427U, 2775406005U, 2777781742U, 1931292655U,  472147933U,
312	3865853827U, 2726470545U, 2668412860U, 2887008249U,  408979190U,
313	3578063323U, 3242082049U, 1778193530U,   27981909U, 2362826515U,
314	 389875677U, 1043878156U,  581653903U, 3830568952U,  389535942U,
315	3713523185U, 2768373359U, 2526101582U, 1998618197U, 1160859704U,
316	3951172488U, 1098005003U,  906275699U, 3446228002U, 2220677963U,
317	2059306445U,  132199571U,  476838790U, 1868039399U, 3097344807U,
318	 857300945U,  396345050U, 2835919916U, 1782168828U, 1419519470U,
319	4288137521U,  819087232U,  596301494U,  872823172U, 1526888217U,
320	 805161465U, 1116186205U, 2829002754U, 2352620120U,  620121516U,
321	 354159268U, 3601949785U,  209568138U, 1352371732U, 2145977349U,
322	4236871834U, 1539414078U, 3558126206U, 3224857093U, 4164166682U,
323	3817553440U, 3301780278U, 2682696837U, 3734994768U, 1370950260U,
324	1477421202U, 2521315749U, 1330148125U, 1261554731U, 2769143688U,
325	3554756293U, 4235882678U, 3254686059U, 3530579953U, 1215452615U,
326	3574970923U, 4057131421U,  589224178U, 1000098193U,  171190718U,
327	2521852045U, 2351447494U, 2284441580U, 2646685513U, 3486933563U,
328	3789864960U, 1190528160U, 1702536782U, 1534105589U, 4262946827U,
329	2726686826U, 3584544841U, 2348270128U, 2145092281U, 2502718509U,
330	1027832411U, 3571171153U, 1287361161U, 4011474411U, 3241215351U,
331	2419700818U,  971242709U, 1361975763U, 1096842482U, 3271045537U,
332	  81165449U,  612438025U, 3912966678U, 1356929810U,  733545735U,
333	 537003843U, 1282953084U,  884458241U,  588930090U, 3930269801U,
334	2961472450U, 1219535534U, 3632251943U,  268183903U, 1441240533U,
335	3653903360U, 3854473319U, 2259087390U, 2548293048U, 2022641195U,
336	2105543911U, 1764085217U, 3246183186U,  482438805U,  888317895U,
337	2628314765U, 2466219854U,  717546004U, 2322237039U,  416725234U,
338	1544049923U, 1797944973U, 3398652364U, 3111909456U,  485742908U,
339	2277491072U, 1056355088U, 3181001278U,  129695079U, 2693624550U,
340	1764438564U, 3797785470U,  195503713U, 3266519725U, 2053389444U,
341	1961527818U, 3400226523U, 3777903038U, 2597274307U, 4235851091U,
342	4094406648U, 2171410785U, 1781151386U, 1378577117U,  654643266U,
343	3424024173U, 3385813322U,  679385799U,  479380913U,  681715441U,
344	3096225905U,  276813409U, 3854398070U, 2721105350U,  831263315U,
345	3276280337U, 2628301522U, 3984868494U, 1466099834U, 2104922114U,
346	1412672743U,  820330404U, 3491501010U,  942735832U,  710652807U,
347	3972652090U,  679881088U,   40577009U, 3705286397U, 2815423480U,
348	3566262429U,  663396513U, 3777887429U, 4016670678U,  404539370U,
349	1142712925U, 1140173408U, 2913248352U, 2872321286U,  263751841U,
350	3175196073U, 3162557581U, 2878996619U,   75498548U, 3836833140U,
351	3284664959U, 1157523805U,  112847376U,  207855609U, 1337979698U,
352	1222578451U,  157107174U,  901174378U, 3883717063U, 1618632639U,
353	1767889440U, 4264698824U, 1582999313U,  884471997U, 2508825098U,
354	3756370771U, 2457213553U, 3565776881U, 3709583214U,  915609601U,
355	 460833524U, 1091049576U,   85522880U,    2553251U,  132102809U,
356	2429882442U, 2562084610U, 1386507633U, 4112471229U,   21965213U,
357	1981516006U, 2418435617U, 3054872091U, 4251511224U, 2025783543U,
358	1916911512U, 2454491136U, 3938440891U, 3825869115U, 1121698605U,
359	3463052265U,  802340101U, 1912886800U, 4031997367U, 3550640406U,
360	1596096923U,  610150600U,  431464457U, 2541325046U,  486478003U,
361	 739704936U, 2862696430U, 3037903166U, 1129749694U, 2611481261U,
362	1228993498U,  510075548U, 3424962587U, 2458689681U,  818934833U,
363	4233309125U, 1608196251U, 3419476016U, 1858543939U, 2682166524U,
364	3317854285U,  631986188U, 3008214764U,  613826412U, 3567358221U,
365	3512343882U, 1552467474U, 3316162670U, 1275841024U, 4142173454U,
366	 565267881U,  768644821U,  198310105U, 2396688616U, 1837659011U,
367	 203429334U,  854539004U, 4235811518U, 3338304926U, 3730418692U,
368	3852254981U, 3032046452U, 2329811860U, 2303590566U, 2696092212U,
369	3894665932U,  145835667U,  249563655U, 1932210840U, 2431696407U,
370	3312636759U,  214962629U, 2092026914U, 3020145527U, 4073039873U,
371	2739105705U, 1308336752U,  855104522U, 2391715321U,   67448785U,
372	 547989482U,  854411802U, 3608633740U,  431731530U,  537375589U,
373	3888005760U,  696099141U,  397343236U, 1864511780U,   44029739U,
374	1729526891U, 1993398655U, 2010173426U, 2591546756U,  275223291U,
375	1503900299U, 4217765081U, 2185635252U, 1122436015U, 3550155364U,
376	 681707194U, 3260479338U,  933579397U, 2983029282U, 2505504587U,
377	2667410393U, 2962684490U, 4139721708U, 2658172284U, 2452602383U,
378	2607631612U, 1344296217U, 3075398709U, 2949785295U, 1049956168U,
379	3917185129U, 2155660174U, 3280524475U, 1503827867U,  674380765U,
380	1918468193U, 3843983676U,  634358221U, 2538335643U, 1873351298U,
381	3368723763U, 2129144130U, 3203528633U, 3087174986U, 2691698871U,
382	2516284287U,   24437745U, 1118381474U, 2816314867U, 2448576035U,
383	4281989654U,  217287825U,  165872888U, 2628995722U, 3533525116U,
384	2721669106U,  872340568U, 3429930655U, 3309047304U, 3916704967U,
385	3270160355U, 1348884255U, 1634797670U,  881214967U, 4259633554U,
386	 174613027U, 1103974314U, 1625224232U, 2678368291U, 1133866707U,
387	3853082619U, 4073196549U, 1189620777U,  637238656U,  930241537U,
388	4042750792U, 3842136042U, 2417007212U, 2524907510U, 1243036827U,
389	1282059441U, 3764588774U, 1394459615U, 2323620015U, 1166152231U,
390	3307479609U, 3849322257U, 3507445699U, 4247696636U,  758393720U,
391	 967665141U, 1095244571U, 1319812152U,  407678762U, 2640605208U,
392	2170766134U, 3663594275U, 4039329364U, 2512175520U,  725523154U,
393	2249807004U, 3312617979U, 2414634172U, 1278482215U,  349206484U,
394	1573063308U, 1196429124U, 3873264116U, 2400067801U,  268795167U,
395	 226175489U, 2961367263U, 1968719665U,   42656370U, 1010790699U,
396	 561600615U, 2422453992U, 3082197735U, 1636700484U, 3977715296U,
397	3125350482U, 3478021514U, 2227819446U, 1540868045U, 3061908980U,
398	1087362407U, 3625200291U,  361937537U,  580441897U, 1520043666U,
399	2270875402U, 1009161260U, 2502355842U, 4278769785U,  473902412U,
400	1057239083U, 1905829039U, 1483781177U, 2080011417U, 1207494246U,
401	1806991954U, 2194674403U, 3455972205U,  807207678U, 3655655687U,
402	 674112918U,  195425752U, 3917890095U, 1874364234U, 1837892715U,
403	3663478166U, 1548892014U, 2570748714U, 2049929836U, 2167029704U,
404	 697543767U, 3499545023U, 3342496315U, 1725251190U, 3561387469U,
405	2905606616U, 1580182447U, 3934525927U, 4103172792U, 1365672522U,
406	1534795737U, 3308667416U, 2841911405U, 3943182730U, 4072020313U,
407	3494770452U, 3332626671U,   55327267U,  478030603U,  411080625U,
408	3419529010U, 1604767823U, 3513468014U,  570668510U,  913790824U,
409	2283967995U,  695159462U, 3825542932U, 4150698144U, 1829758699U,
410	 202895590U, 1609122645U, 1267651008U, 2910315509U, 2511475445U,
411	2477423819U, 3932081579U,  900879979U, 2145588390U, 2670007504U,
412	 580819444U, 1864996828U, 2526325979U, 1019124258U,  815508628U,
413	2765933989U, 1277301341U, 3006021786U,  855540956U,  288025710U,
414	1919594237U, 2331223864U,  177452412U, 2475870369U, 2689291749U,
415	 865194284U,  253432152U, 2628531804U, 2861208555U, 2361597573U,
416	1653952120U, 1039661024U, 2159959078U, 3709040440U, 3564718533U,
417	2596878672U, 2041442161U,   31164696U, 2662962485U, 3665637339U,
418	1678115244U, 2699839832U, 3651968520U, 3521595541U,  458433303U,
419	2423096824U,   21831741U,  380011703U, 2498168716U,  861806087U,
420	1673574843U, 4188794405U, 2520563651U, 2632279153U, 2170465525U,
421	4171949898U, 3886039621U, 1661344005U, 3424285243U,  992588372U,
422	2500984144U, 2993248497U, 3590193895U, 1535327365U,  515645636U,
423	 131633450U, 3729760261U, 1613045101U, 3254194278U,   15889678U,
424	1493590689U,  244148718U, 2991472662U, 1401629333U,  777349878U,
425	2501401703U, 4285518317U, 3794656178U,  955526526U, 3442142820U,
426	3970298374U,  736025417U, 2737370764U, 1271509744U,  440570731U,
427	 136141826U, 1596189518U,  923399175U,  257541519U, 3505774281U,
428	2194358432U, 2518162991U, 1379893637U, 2667767062U, 3748146247U,
429	1821712620U, 3923161384U, 1947811444U, 2392527197U, 4127419685U,
430	1423694998U, 4156576871U, 1382885582U, 3420127279U, 3617499534U,
431	2994377493U, 4038063986U, 1918458672U, 2983166794U, 4200449033U,
432	 353294540U, 1609232588U,  243926648U, 2332803291U,  507996832U,
433	2392838793U, 4075145196U, 2060984340U, 4287475136U,   88232602U,
434	2491531140U, 4159725633U, 2272075455U,  759298618U,  201384554U,
435	 838356250U, 1416268324U,  674476934U,   90795364U,  141672229U,
436	3660399588U, 4196417251U, 3249270244U, 3774530247U,   59587265U,
437	3683164208U,   19392575U, 1463123697U, 1882205379U,  293780489U,
438	2553160622U, 2933904694U,  675638239U, 2851336944U, 1435238743U,
439	2448730183U,  804436302U, 2119845972U,  322560608U, 4097732704U,
440	2987802540U,  641492617U, 2575442710U, 4217822703U, 3271835300U,
441	2836418300U, 3739921620U, 2138378768U, 2879771855U, 4294903423U,
442	3121097946U, 2603440486U, 2560820391U, 1012930944U, 2313499967U,
443	 584489368U, 3431165766U,  897384869U, 2062537737U, 2847889234U,
444	3742362450U, 2951174585U, 4204621084U, 1109373893U, 3668075775U,
445	2750138839U, 3518055702U,  733072558U, 4169325400U,  788493625U
446};
447static const uint64_t init_gen_rand_64_expected[] = {
448	KQU(16924766246869039260), KQU( 8201438687333352714),
449	KQU( 2265290287015001750), KQU(18397264611805473832),
450	KQU( 3375255223302384358), KQU( 6345559975416828796),
451	KQU(18229739242790328073), KQU( 7596792742098800905),
452	KQU(  255338647169685981), KQU( 2052747240048610300),
453	KQU(18328151576097299343), KQU(12472905421133796567),
454	KQU(11315245349717600863), KQU(16594110197775871209),
455	KQU(15708751964632456450), KQU(10452031272054632535),
456	KQU(11097646720811454386), KQU( 4556090668445745441),
457	KQU(17116187693090663106), KQU(14931526836144510645),
458	KQU( 9190752218020552591), KQU( 9625800285771901401),
459	KQU(13995141077659972832), KQU( 5194209094927829625),
460	KQU( 4156788379151063303), KQU( 8523452593770139494),
461	KQU(14082382103049296727), KQU( 2462601863986088483),
462	KQU( 3030583461592840678), KQU( 5221622077872827681),
463	KQU( 3084210671228981236), KQU(13956758381389953823),
464	KQU(13503889856213423831), KQU(15696904024189836170),
465	KQU( 4612584152877036206), KQU( 6231135538447867881),
466	KQU(10172457294158869468), KQU( 6452258628466708150),
467	KQU(14044432824917330221), KQU(  370168364480044279),
468	KQU(10102144686427193359), KQU(  667870489994776076),
469	KQU( 2732271956925885858), KQU(18027788905977284151),
470	KQU(15009842788582923859), KQU( 7136357960180199542),
471	KQU(15901736243475578127), KQU(16951293785352615701),
472	KQU(10551492125243691632), KQU(17668869969146434804),
473	KQU(13646002971174390445), KQU( 9804471050759613248),
474	KQU( 5511670439655935493), KQU(18103342091070400926),
475	KQU(17224512747665137533), KQU(15534627482992618168),
476	KQU( 1423813266186582647), KQU(15821176807932930024),
477	KQU(   30323369733607156), KQU(11599382494723479403),
478	KQU(  653856076586810062), KQU( 3176437395144899659),
479	KQU(14028076268147963917), KQU(16156398271809666195),
480	KQU( 3166955484848201676), KQU( 5746805620136919390),
481	KQU(17297845208891256593), KQU(11691653183226428483),
482	KQU(17900026146506981577), KQU(15387382115755971042),
483	KQU(16923567681040845943), KQU( 8039057517199388606),
484	KQU(11748409241468629263), KQU(  794358245539076095),
485	KQU(13438501964693401242), KQU(14036803236515618962),
486	KQU( 5252311215205424721), KQU(17806589612915509081),
487	KQU( 6802767092397596006), KQU(14212120431184557140),
488	KQU( 1072951366761385712), KQU(13098491780722836296),
489	KQU( 9466676828710797353), KQU(12673056849042830081),
490	KQU(12763726623645357580), KQU(16468961652999309493),
491	KQU(15305979875636438926), KQU(17444713151223449734),
492	KQU( 5692214267627883674), KQU(13049589139196151505),
493	KQU(  880115207831670745), KQU( 1776529075789695498),
494	KQU(16695225897801466485), KQU(10666901778795346845),
495	KQU( 6164389346722833869), KQU( 2863817793264300475),
496	KQU( 9464049921886304754), KQU( 3993566636740015468),
497	KQU( 9983749692528514136), KQU(16375286075057755211),
498	KQU(16042643417005440820), KQU(11445419662923489877),
499	KQU( 7999038846885158836), KQU( 6721913661721511535),
500	KQU( 5363052654139357320), KQU( 1817788761173584205),
501	KQU(13290974386445856444), KQU( 4650350818937984680),
502	KQU( 8219183528102484836), KQU( 1569862923500819899),
503	KQU( 4189359732136641860), KQU(14202822961683148583),
504	KQU( 4457498315309429058), KQU(13089067387019074834),
505	KQU(11075517153328927293), KQU(10277016248336668389),
506	KQU( 7070509725324401122), KQU(17808892017780289380),
507	KQU(13143367339909287349), KQU( 1377743745360085151),
508	KQU( 5749341807421286485), KQU(14832814616770931325),
509	KQU( 7688820635324359492), KQU(10960474011539770045),
510	KQU(   81970066653179790), KQU(12619476072607878022),
511	KQU( 4419566616271201744), KQU(15147917311750568503),
512	KQU( 5549739182852706345), KQU( 7308198397975204770),
513	KQU(13580425496671289278), KQU(17070764785210130301),
514	KQU( 8202832846285604405), KQU( 6873046287640887249),
515	KQU( 6927424434308206114), KQU( 6139014645937224874),
516	KQU(10290373645978487639), KQU(15904261291701523804),
517	KQU( 9628743442057826883), KQU(18383429096255546714),
518	KQU( 4977413265753686967), KQU( 7714317492425012869),
519	KQU( 9025232586309926193), KQU(14627338359776709107),
520	KQU(14759849896467790763), KQU(10931129435864423252),
521	KQU( 4588456988775014359), KQU(10699388531797056724),
522	KQU(  468652268869238792), KQU( 5755943035328078086),
523	KQU( 2102437379988580216), KQU( 9986312786506674028),
524	KQU( 2654207180040945604), KQU( 8726634790559960062),
525	KQU(  100497234871808137), KQU( 2800137176951425819),
526	KQU( 6076627612918553487), KQU( 5780186919186152796),
527	KQU( 8179183595769929098), KQU( 6009426283716221169),
528	KQU( 2796662551397449358), KQU( 1756961367041986764),
529	KQU( 6972897917355606205), KQU(14524774345368968243),
530	KQU( 2773529684745706940), KQU( 4853632376213075959),
531	KQU( 4198177923731358102), KQU( 8271224913084139776),
532	KQU( 2741753121611092226), KQU(16782366145996731181),
533	KQU(15426125238972640790), KQU(13595497100671260342),
534	KQU( 3173531022836259898), KQU( 6573264560319511662),
535	KQU(18041111951511157441), KQU( 2351433581833135952),
536	KQU( 3113255578908173487), KQU( 1739371330877858784),
537	KQU(16046126562789165480), KQU( 8072101652214192925),
538	KQU(15267091584090664910), KQU( 9309579200403648940),
539	KQU( 5218892439752408722), KQU(14492477246004337115),
540	KQU(17431037586679770619), KQU( 7385248135963250480),
541	KQU( 9580144956565560660), KQU( 4919546228040008720),
542	KQU(15261542469145035584), KQU(18233297270822253102),
543	KQU( 5453248417992302857), KQU( 9309519155931460285),
544	KQU(10342813012345291756), KQU(15676085186784762381),
545	KQU(15912092950691300645), KQU( 9371053121499003195),
546	KQU( 9897186478226866746), KQU(14061858287188196327),
547	KQU(  122575971620788119), KQU(12146750969116317754),
548	KQU( 4438317272813245201), KQU( 8332576791009527119),
549	KQU(13907785691786542057), KQU(10374194887283287467),
550	KQU( 2098798755649059566), KQU( 3416235197748288894),
551	KQU( 8688269957320773484), KQU( 7503964602397371571),
552	KQU(16724977015147478236), KQU( 9461512855439858184),
553	KQU(13259049744534534727), KQU( 3583094952542899294),
554	KQU( 8764245731305528292), KQU(13240823595462088985),
555	KQU(13716141617617910448), KQU(18114969519935960955),
556	KQU( 2297553615798302206), KQU( 4585521442944663362),
557	KQU(17776858680630198686), KQU( 4685873229192163363),
558	KQU(  152558080671135627), KQU(15424900540842670088),
559	KQU(13229630297130024108), KQU(17530268788245718717),
560	KQU(16675633913065714144), KQU( 3158912717897568068),
561	KQU(15399132185380087288), KQU( 7401418744515677872),
562	KQU(13135412922344398535), KQU( 6385314346100509511),
563	KQU(13962867001134161139), KQU(10272780155442671999),
564	KQU(12894856086597769142), KQU(13340877795287554994),
565	KQU(12913630602094607396), KQU(12543167911119793857),
566	KQU(17343570372251873096), KQU(10959487764494150545),
567	KQU( 6966737953093821128), KQU(13780699135496988601),
568	KQU( 4405070719380142046), KQU(14923788365607284982),
569	KQU( 2869487678905148380), KQU( 6416272754197188403),
570	KQU(15017380475943612591), KQU( 1995636220918429487),
571	KQU( 3402016804620122716), KQU(15800188663407057080),
572	KQU(11362369990390932882), KQU(15262183501637986147),
573	KQU(10239175385387371494), KQU( 9352042420365748334),
574	KQU( 1682457034285119875), KQU( 1724710651376289644),
575	KQU( 2038157098893817966), KQU( 9897825558324608773),
576	KQU( 1477666236519164736), KQU(16835397314511233640),
577	KQU(10370866327005346508), KQU(10157504370660621982),
578	KQU(12113904045335882069), KQU(13326444439742783008),
579	KQU(11302769043000765804), KQU(13594979923955228484),
580	KQU(11779351762613475968), KQU( 3786101619539298383),
581	KQU( 8021122969180846063), KQU(15745904401162500495),
582	KQU(10762168465993897267), KQU(13552058957896319026),
583	KQU(11200228655252462013), KQU( 5035370357337441226),
584	KQU( 7593918984545500013), KQU( 5418554918361528700),
585	KQU( 4858270799405446371), KQU( 9974659566876282544),
586	KQU(18227595922273957859), KQU( 2772778443635656220),
587	KQU(14285143053182085385), KQU( 9939700992429600469),
588	KQU(12756185904545598068), KQU( 2020783375367345262),
589	KQU(   57026775058331227), KQU(  950827867930065454),
590	KQU( 6602279670145371217), KQU( 2291171535443566929),
591	KQU( 5832380724425010313), KQU( 1220343904715982285),
592	KQU(17045542598598037633), KQU(15460481779702820971),
593	KQU(13948388779949365130), KQU(13975040175430829518),
594	KQU(17477538238425541763), KQU(11104663041851745725),
595	KQU(15860992957141157587), KQU(14529434633012950138),
596	KQU( 2504838019075394203), KQU( 7512113882611121886),
597	KQU( 4859973559980886617), KQU( 1258601555703250219),
598	KQU(15594548157514316394), KQU( 4516730171963773048),
599	KQU(11380103193905031983), KQU( 6809282239982353344),
600	KQU(18045256930420065002), KQU( 2453702683108791859),
601	KQU(  977214582986981460), KQU( 2006410402232713466),
602	KQU( 6192236267216378358), KQU( 3429468402195675253),
603	KQU(18146933153017348921), KQU(17369978576367231139),
604	KQU( 1246940717230386603), KQU(11335758870083327110),
605	KQU(14166488801730353682), KQU( 9008573127269635732),
606	KQU(10776025389820643815), KQU(15087605441903942962),
607	KQU( 1359542462712147922), KQU(13898874411226454206),
608	KQU(17911176066536804411), KQU( 9435590428600085274),
609	KQU(  294488509967864007), KQU( 8890111397567922046),
610	KQU( 7987823476034328778), KQU(13263827582440967651),
611	KQU( 7503774813106751573), KQU(14974747296185646837),
612	KQU( 8504765037032103375), KQU(17340303357444536213),
613	KQU( 7704610912964485743), KQU( 8107533670327205061),
614	KQU( 9062969835083315985), KQU(16968963142126734184),
615	KQU(12958041214190810180), KQU( 2720170147759570200),
616	KQU( 2986358963942189566), KQU(14884226322219356580),
617	KQU(  286224325144368520), KQU(11313800433154279797),
618	KQU(18366849528439673248), KQU(17899725929482368789),
619	KQU( 3730004284609106799), KQU( 1654474302052767205),
620	KQU( 5006698007047077032), KQU( 8196893913601182838),
621	KQU(15214541774425211640), KQU(17391346045606626073),
622	KQU( 8369003584076969089), KQU( 3939046733368550293),
623	KQU(10178639720308707785), KQU( 2180248669304388697),
624	KQU(   62894391300126322), KQU( 9205708961736223191),
625	KQU( 6837431058165360438), KQU( 3150743890848308214),
626	KQU(17849330658111464583), KQU(12214815643135450865),
627	KQU(13410713840519603402), KQU( 3200778126692046802),
628	KQU(13354780043041779313), KQU(  800850022756886036),
629	KQU(15660052933953067433), KQU( 6572823544154375676),
630	KQU(11030281857015819266), KQU(12682241941471433835),
631	KQU(11654136407300274693), KQU( 4517795492388641109),
632	KQU( 9757017371504524244), KQU(17833043400781889277),
633	KQU(12685085201747792227), KQU(10408057728835019573),
634	KQU(   98370418513455221), KQU( 6732663555696848598),
635	KQU(13248530959948529780), KQU( 3530441401230622826),
636	KQU(18188251992895660615), KQU( 1847918354186383756),
637	KQU( 1127392190402660921), KQU(11293734643143819463),
638	KQU( 3015506344578682982), KQU(13852645444071153329),
639	KQU( 2121359659091349142), KQU( 1294604376116677694),
640	KQU( 5616576231286352318), KQU( 7112502442954235625),
641	KQU(11676228199551561689), KQU(12925182803007305359),
642	KQU( 7852375518160493082), KQU( 1136513130539296154),
643	KQU( 5636923900916593195), KQU( 3221077517612607747),
644	KQU(17784790465798152513), KQU( 3554210049056995938),
645	KQU(17476839685878225874), KQU( 3206836372585575732),
646	KQU( 2765333945644823430), KQU(10080070903718799528),
647	KQU( 5412370818878286353), KQU( 9689685887726257728),
648	KQU( 8236117509123533998), KQU( 1951139137165040214),
649	KQU( 4492205209227980349), KQU(16541291230861602967),
650	KQU( 1424371548301437940), KQU( 9117562079669206794),
651	KQU(14374681563251691625), KQU(13873164030199921303),
652	KQU( 6680317946770936731), KQU(15586334026918276214),
653	KQU(10896213950976109802), KQU( 9506261949596413689),
654	KQU( 9903949574308040616), KQU( 6038397344557204470),
655	KQU(  174601465422373648), KQU(15946141191338238030),
656	KQU(17142225620992044937), KQU( 7552030283784477064),
657	KQU( 2947372384532947997), KQU(  510797021688197711),
658	KQU( 4962499439249363461), KQU(   23770320158385357),
659	KQU(  959774499105138124), KQU( 1468396011518788276),
660	KQU( 2015698006852312308), KQU( 4149400718489980136),
661	KQU( 5992916099522371188), KQU(10819182935265531076),
662	KQU(16189787999192351131), KQU(  342833961790261950),
663	KQU(12470830319550495336), KQU(18128495041912812501),
664	KQU( 1193600899723524337), KQU( 9056793666590079770),
665	KQU( 2154021227041669041), KQU( 4963570213951235735),
666	KQU( 4865075960209211409), KQU( 2097724599039942963),
667	KQU( 2024080278583179845), KQU(11527054549196576736),
668	KQU(10650256084182390252), KQU( 4808408648695766755),
669	KQU( 1642839215013788844), KQU(10607187948250398390),
670	KQU( 7076868166085913508), KQU(  730522571106887032),
671	KQU(12500579240208524895), KQU( 4484390097311355324),
672	KQU(15145801330700623870), KQU( 8055827661392944028),
673	KQU( 5865092976832712268), KQU(15159212508053625143),
674	KQU( 3560964582876483341), KQU( 4070052741344438280),
675	KQU( 6032585709886855634), KQU(15643262320904604873),
676	KQU( 2565119772293371111), KQU(  318314293065348260),
677	KQU(15047458749141511872), KQU( 7772788389811528730),
678	KQU( 7081187494343801976), KQU( 6465136009467253947),
679	KQU(10425940692543362069), KQU(  554608190318339115),
680	KQU(14796699860302125214), KQU( 1638153134431111443),
681	KQU(10336967447052276248), KQU( 8412308070396592958),
682	KQU( 4004557277152051226), KQU( 8143598997278774834),
683	KQU(16413323996508783221), KQU(13139418758033994949),
684	KQU( 9772709138335006667), KQU( 2818167159287157659),
685	KQU(17091740573832523669), KQU(14629199013130751608),
686	KQU(18268322711500338185), KQU( 8290963415675493063),
687	KQU( 8830864907452542588), KQU( 1614839084637494849),
688	KQU(14855358500870422231), KQU( 3472996748392519937),
689	KQU(15317151166268877716), KQU( 5825895018698400362),
690	KQU(16730208429367544129), KQU(10481156578141202800),
691	KQU( 4746166512382823750), KQU(12720876014472464998),
692	KQU( 8825177124486735972), KQU(13733447296837467838),
693	KQU( 6412293741681359625), KQU( 8313213138756135033),
694	KQU(11421481194803712517), KQU( 7997007691544174032),
695	KQU( 6812963847917605930), KQU( 9683091901227558641),
696	KQU(14703594165860324713), KQU( 1775476144519618309),
697	KQU( 2724283288516469519), KQU(  717642555185856868),
698	KQU( 8736402192215092346), KQU(11878800336431381021),
699	KQU( 4348816066017061293), KQU( 6115112756583631307),
700	KQU( 9176597239667142976), KQU(12615622714894259204),
701	KQU(10283406711301385987), KQU( 5111762509485379420),
702	KQU( 3118290051198688449), KQU( 7345123071632232145),
703	KQU( 9176423451688682359), KQU( 4843865456157868971),
704	KQU(12008036363752566088), KQU(12058837181919397720),
705	KQU( 2145073958457347366), KQU( 1526504881672818067),
706	KQU( 3488830105567134848), KQU(13208362960674805143),
707	KQU( 4077549672899572192), KQU( 7770995684693818365),
708	KQU( 1398532341546313593), KQU(12711859908703927840),
709	KQU( 1417561172594446813), KQU(17045191024194170604),
710	KQU( 4101933177604931713), KQU(14708428834203480320),
711	KQU(17447509264469407724), KQU(14314821973983434255),
712	KQU(17990472271061617265), KQU( 5087756685841673942),
713	KQU(12797820586893859939), KQU( 1778128952671092879),
714	KQU( 3535918530508665898), KQU( 9035729701042481301),
715	KQU(14808661568277079962), KQU(14587345077537747914),
716	KQU(11920080002323122708), KQU( 6426515805197278753),
717	KQU( 3295612216725984831), KQU(11040722532100876120),
718	KQU(12305952936387598754), KQU(16097391899742004253),
719	KQU( 4908537335606182208), KQU(12446674552196795504),
720	KQU(16010497855816895177), KQU( 9194378874788615551),
721	KQU( 3382957529567613384), KQU( 5154647600754974077),
722	KQU( 9801822865328396141), KQU( 9023662173919288143),
723	KQU(17623115353825147868), KQU( 8238115767443015816),
724	KQU(15811444159859002560), KQU( 9085612528904059661),
725	KQU( 6888601089398614254), KQU(  258252992894160189),
726	KQU( 6704363880792428622), KQU( 6114966032147235763),
727	KQU(11075393882690261875), KQU( 8797664238933620407),
728	KQU( 5901892006476726920), KQU( 5309780159285518958),
729	KQU(14940808387240817367), KQU(14642032021449656698),
730	KQU( 9808256672068504139), KQU( 3670135111380607658),
731	KQU(11211211097845960152), KQU( 1474304506716695808),
732	KQU(15843166204506876239), KQU( 7661051252471780561),
733	KQU(10170905502249418476), KQU( 7801416045582028589),
734	KQU( 2763981484737053050), KQU( 9491377905499253054),
735	KQU(16201395896336915095), KQU( 9256513756442782198),
736	KQU( 5411283157972456034), KQU( 5059433122288321676),
737	KQU( 4327408006721123357), KQU( 9278544078834433377),
738	KQU( 7601527110882281612), KQU(11848295896975505251),
739	KQU(12096998801094735560), KQU(14773480339823506413),
740	KQU(15586227433895802149), KQU(12786541257830242872),
741	KQU( 6904692985140503067), KQU( 5309011515263103959),
742	KQU(12105257191179371066), KQU(14654380212442225037),
743	KQU( 2556774974190695009), KQU( 4461297399927600261),
744	KQU(14888225660915118646), KQU(14915459341148291824),
745	KQU( 2738802166252327631), KQU( 6047155789239131512),
746	KQU(12920545353217010338), KQU(10697617257007840205),
747	KQU( 2751585253158203504), KQU(13252729159780047496),
748	KQU(14700326134672815469), KQU(14082527904374600529),
749	KQU(16852962273496542070), KQU(17446675504235853907),
750	KQU(15019600398527572311), KQU(12312781346344081551),
751	KQU(14524667935039810450), KQU( 5634005663377195738),
752	KQU(11375574739525000569), KQU( 2423665396433260040),
753	KQU( 5222836914796015410), KQU( 4397666386492647387),
754	KQU( 4619294441691707638), KQU(  665088602354770716),
755	KQU(13246495665281593610), KQU( 6564144270549729409),
756	KQU(10223216188145661688), KQU( 3961556907299230585),
757	KQU(11543262515492439914), KQU(16118031437285993790),
758	KQU( 7143417964520166465), KQU(13295053515909486772),
759	KQU(   40434666004899675), KQU(17127804194038347164),
760	KQU( 8599165966560586269), KQU( 8214016749011284903),
761	KQU(13725130352140465239), KQU( 5467254474431726291),
762	KQU( 7748584297438219877), KQU(16933551114829772472),
763	KQU( 2169618439506799400), KQU( 2169787627665113463),
764	KQU(17314493571267943764), KQU(18053575102911354912),
765	KQU(11928303275378476973), KQU(11593850925061715550),
766	KQU(17782269923473589362), KQU( 3280235307704747039),
767	KQU( 6145343578598685149), KQU(17080117031114086090),
768	KQU(18066839902983594755), KQU( 6517508430331020706),
769	KQU( 8092908893950411541), KQU(12558378233386153732),
770	KQU( 4476532167973132976), KQU(16081642430367025016),
771	KQU( 4233154094369139361), KQU( 8693630486693161027),
772	KQU(11244959343027742285), KQU(12273503967768513508),
773	KQU(14108978636385284876), KQU( 7242414665378826984),
774	KQU( 6561316938846562432), KQU( 8601038474994665795),
775	KQU(17532942353612365904), KQU(17940076637020912186),
776	KQU( 7340260368823171304), KQU( 7061807613916067905),
777	KQU(10561734935039519326), KQU(17990796503724650862),
778	KQU( 6208732943911827159), KQU(  359077562804090617),
779	KQU(14177751537784403113), KQU(10659599444915362902),
780	KQU(15081727220615085833), KQU(13417573895659757486),
781	KQU(15513842342017811524), KQU(11814141516204288231),
782	KQU( 1827312513875101814), KQU( 2804611699894603103),
783	KQU(17116500469975602763), KQU(12270191815211952087),
784	KQU(12256358467786024988), KQU(18435021722453971267),
785	KQU(  671330264390865618), KQU(  476504300460286050),
786	KQU(16465470901027093441), KQU( 4047724406247136402),
787	KQU( 1322305451411883346), KQU( 1388308688834322280),
788	KQU( 7303989085269758176), KQU( 9323792664765233642),
789	KQU( 4542762575316368936), KQU(17342696132794337618),
790	KQU( 4588025054768498379), KQU(13415475057390330804),
791	KQU(17880279491733405570), KQU(10610553400618620353),
792	KQU( 3180842072658960139), KQU(13002966655454270120),
793	KQU( 1665301181064982826), KQU( 7083673946791258979),
794	KQU(  190522247122496820), KQU(17388280237250677740),
795	KQU( 8430770379923642945), KQU(12987180971921668584),
796	KQU( 2311086108365390642), KQU( 2870984383579822345),
797	KQU(14014682609164653318), KQU(14467187293062251484),
798	KQU(  192186361147413298), KQU(15171951713531796524),
799	KQU( 9900305495015948728), KQU(17958004775615466344),
800	KQU(14346380954498606514), KQU(18040047357617407096),
801	KQU( 5035237584833424532), KQU(15089555460613972287),
802	KQU( 4131411873749729831), KQU( 1329013581168250330),
803	KQU(10095353333051193949), KQU(10749518561022462716),
804	KQU( 9050611429810755847), KQU(15022028840236655649),
805	KQU( 8775554279239748298), KQU(13105754025489230502),
806	KQU(15471300118574167585), KQU(   89864764002355628),
807	KQU( 8776416323420466637), KQU( 5280258630612040891),
808	KQU( 2719174488591862912), KQU( 7599309137399661994),
809	KQU(15012887256778039979), KQU(14062981725630928925),
810	KQU(12038536286991689603), KQU( 7089756544681775245),
811	KQU(10376661532744718039), KQU( 1265198725901533130),
812	KQU(13807996727081142408), KQU( 2935019626765036403),
813	KQU( 7651672460680700141), KQU( 3644093016200370795),
814	KQU( 2840982578090080674), KQU(17956262740157449201),
815	KQU(18267979450492880548), KQU(11799503659796848070),
816	KQU( 9942537025669672388), KQU(11886606816406990297),
817	KQU( 5488594946437447576), KQU( 7226714353282744302),
818	KQU( 3784851653123877043), KQU(  878018453244803041),
819	KQU(12110022586268616085), KQU(  734072179404675123),
820	KQU(11869573627998248542), KQU(  469150421297783998),
821	KQU(  260151124912803804), KQU(11639179410120968649),
822	KQU( 9318165193840846253), KQU(12795671722734758075),
823	KQU(15318410297267253933), KQU(  691524703570062620),
824	KQU( 5837129010576994601), KQU(15045963859726941052),
825	KQU( 5850056944932238169), KQU(12017434144750943807),
826	KQU( 7447139064928956574), KQU( 3101711812658245019),
827	KQU(16052940704474982954), KQU(18195745945986994042),
828	KQU( 8932252132785575659), KQU(13390817488106794834),
829	KQU(11582771836502517453), KQU( 4964411326683611686),
830	KQU( 2195093981702694011), KQU(14145229538389675669),
831	KQU(16459605532062271798), KQU(  866316924816482864),
832	KQU( 4593041209937286377), KQU( 8415491391910972138),
833	KQU( 4171236715600528969), KQU(16637569303336782889),
834	KQU( 2002011073439212680), KQU(17695124661097601411),
835	KQU( 4627687053598611702), KQU( 7895831936020190403),
836	KQU( 8455951300917267802), KQU( 2923861649108534854),
837	KQU( 8344557563927786255), KQU( 6408671940373352556),
838	KQU(12210227354536675772), KQU(14294804157294222295),
839	KQU(10103022425071085127), KQU(10092959489504123771),
840	KQU( 6554774405376736268), KQU(12629917718410641774),
841	KQU( 6260933257596067126), KQU( 2460827021439369673),
842	KQU( 2541962996717103668), KQU(  597377203127351475),
843	KQU( 5316984203117315309), KQU( 4811211393563241961),
844	KQU(13119698597255811641), KQU( 8048691512862388981),
845	KQU(10216818971194073842), KQU( 4612229970165291764),
846	KQU(10000980798419974770), KQU( 6877640812402540687),
847	KQU( 1488727563290436992), KQU( 2227774069895697318),
848	KQU(11237754507523316593), KQU(13478948605382290972),
849	KQU( 1963583846976858124), KQU( 5512309205269276457),
850	KQU( 3972770164717652347), KQU( 3841751276198975037),
851	KQU(10283343042181903117), KQU( 8564001259792872199),
852	KQU(16472187244722489221), KQU( 8953493499268945921),
853	KQU( 3518747340357279580), KQU( 4003157546223963073),
854	KQU( 3270305958289814590), KQU( 3966704458129482496),
855	KQU( 8122141865926661939), KQU(14627734748099506653),
856	KQU(13064426990862560568), KQU( 2414079187889870829),
857	KQU( 5378461209354225306), KQU(10841985740128255566),
858	KQU(  538582442885401738), KQU( 7535089183482905946),
859	KQU(16117559957598879095), KQU( 8477890721414539741),
860	KQU( 1459127491209533386), KQU(17035126360733620462),
861	KQU( 8517668552872379126), KQU(10292151468337355014),
862	KQU(17081267732745344157), KQU(13751455337946087178),
863	KQU(14026945459523832966), KQU( 6653278775061723516),
864	KQU(10619085543856390441), KQU( 2196343631481122885),
865	KQU(10045966074702826136), KQU(10082317330452718282),
866	KQU( 5920859259504831242), KQU( 9951879073426540617),
867	KQU( 7074696649151414158), KQU(15808193543879464318),
868	KQU( 7385247772746953374), KQU( 3192003544283864292),
869	KQU(18153684490917593847), KQU(12423498260668568905),
870	KQU(10957758099756378169), KQU(11488762179911016040),
871	KQU( 2099931186465333782), KQU(11180979581250294432),
872	KQU( 8098916250668367933), KQU( 3529200436790763465),
873	KQU(12988418908674681745), KQU( 6147567275954808580),
874	KQU( 3207503344604030989), KQU(10761592604898615360),
875	KQU(  229854861031893504), KQU( 8809853962667144291),
876	KQU(13957364469005693860), KQU( 7634287665224495886),
877	KQU(12353487366976556874), KQU( 1134423796317152034),
878	KQU( 2088992471334107068), KQU( 7393372127190799698),
879	KQU( 1845367839871058391), KQU(  207922563987322884),
880	KQU(11960870813159944976), KQU(12182120053317317363),
881	KQU(17307358132571709283), KQU(13871081155552824936),
882	KQU(18304446751741566262), KQU( 7178705220184302849),
883	KQU(10929605677758824425), KQU(16446976977835806844),
884	KQU(13723874412159769044), KQU( 6942854352100915216),
885	KQU( 1726308474365729390), KQU( 2150078766445323155),
886	KQU(15345558947919656626), KQU(12145453828874527201),
887	KQU( 2054448620739726849), KQU( 2740102003352628137),
888	KQU(11294462163577610655), KQU(  756164283387413743),
889	KQU(17841144758438810880), KQU(10802406021185415861),
890	KQU( 8716455530476737846), KQU( 6321788834517649606),
891	KQU(14681322910577468426), KQU(17330043563884336387),
892	KQU(12701802180050071614), KQU(14695105111079727151),
893	KQU( 5112098511654172830), KQU( 4957505496794139973),
894	KQU( 8270979451952045982), KQU(12307685939199120969),
895	KQU(12425799408953443032), KQU( 8376410143634796588),
896	KQU(16621778679680060464), KQU( 3580497854566660073),
897	KQU( 1122515747803382416), KQU(  857664980960597599),
898	KQU( 6343640119895925918), KQU(12878473260854462891),
899	KQU(10036813920765722626), KQU(14451335468363173812),
900	KQU( 5476809692401102807), KQU(16442255173514366342),
901	KQU(13060203194757167104), KQU(14354124071243177715),
902	KQU(15961249405696125227), KQU(13703893649690872584),
903	KQU(  363907326340340064), KQU( 6247455540491754842),
904	KQU(12242249332757832361), KQU(  156065475679796717),
905	KQU( 9351116235749732355), KQU( 4590350628677701405),
906	KQU( 1671195940982350389), KQU(13501398458898451905),
907	KQU( 6526341991225002255), KQU( 1689782913778157592),
908	KQU( 7439222350869010334), KQU(13975150263226478308),
909	KQU(11411961169932682710), KQU(17204271834833847277),
910	KQU(  541534742544435367), KQU( 6591191931218949684),
911	KQU( 2645454775478232486), KQU( 4322857481256485321),
912	KQU( 8477416487553065110), KQU(12902505428548435048),
913	KQU(  971445777981341415), KQU(14995104682744976712),
914	KQU( 4243341648807158063), KQU( 8695061252721927661),
915	KQU( 5028202003270177222), KQU( 2289257340915567840),
916	KQU(13870416345121866007), KQU(13994481698072092233),
917	KQU( 6912785400753196481), KQU( 2278309315841980139),
918	KQU( 4329765449648304839), KQU( 5963108095785485298),
919	KQU( 4880024847478722478), KQU(16015608779890240947),
920	KQU( 1866679034261393544), KQU(  914821179919731519),
921	KQU( 9643404035648760131), KQU( 2418114953615593915),
922	KQU(  944756836073702374), KQU(15186388048737296834),
923	KQU( 7723355336128442206), KQU( 7500747479679599691),
924	KQU(18013961306453293634), KQU( 2315274808095756456),
925	KQU(13655308255424029566), KQU(17203800273561677098),
926	KQU( 1382158694422087756), KQU( 5090390250309588976),
927	KQU(  517170818384213989), KQU( 1612709252627729621),
928	KQU( 1330118955572449606), KQU(  300922478056709885),
929	KQU(18115693291289091987), KQU(13491407109725238321),
930	KQU(15293714633593827320), KQU( 5151539373053314504),
931	KQU( 5951523243743139207), KQU(14459112015249527975),
932	KQU( 5456113959000700739), KQU( 3877918438464873016),
933	KQU(12534071654260163555), KQU(15871678376893555041),
934	KQU(11005484805712025549), KQU(16353066973143374252),
935	KQU( 4358331472063256685), KQU( 8268349332210859288),
936	KQU(12485161590939658075), KQU(13955993592854471343),
937	KQU( 5911446886848367039), KQU(14925834086813706974),
938	KQU( 6590362597857994805), KQU( 1280544923533661875),
939	KQU( 1637756018947988164), KQU( 4734090064512686329),
940	KQU(16693705263131485912), KQU( 6834882340494360958),
941	KQU( 8120732176159658505), KQU( 2244371958905329346),
942	KQU(10447499707729734021), KQU( 7318742361446942194),
943	KQU( 8032857516355555296), KQU(14023605983059313116),
944	KQU( 1032336061815461376), KQU( 9840995337876562612),
945	KQU( 9869256223029203587), KQU(12227975697177267636),
946	KQU(12728115115844186033), KQU( 7752058479783205470),
947	KQU(  729733219713393087), KQU(12954017801239007622)
948};
949static const uint64_t init_by_array_64_expected[] = {
950	KQU( 2100341266307895239), KQU( 8344256300489757943),
951	KQU(15687933285484243894), KQU( 8268620370277076319),
952	KQU(12371852309826545459), KQU( 8800491541730110238),
953	KQU(18113268950100835773), KQU( 2886823658884438119),
954	KQU( 3293667307248180724), KQU( 9307928143300172731),
955	KQU( 7688082017574293629), KQU(  900986224735166665),
956	KQU( 9977972710722265039), KQU( 6008205004994830552),
957	KQU(  546909104521689292), KQU( 7428471521869107594),
958	KQU(14777563419314721179), KQU(16116143076567350053),
959	KQU( 5322685342003142329), KQU( 4200427048445863473),
960	KQU( 4693092150132559146), KQU(13671425863759338582),
961	KQU( 6747117460737639916), KQU( 4732666080236551150),
962	KQU( 5912839950611941263), KQU( 3903717554504704909),
963	KQU( 2615667650256786818), KQU(10844129913887006352),
964	KQU(13786467861810997820), KQU(14267853002994021570),
965	KQU(13767807302847237439), KQU(16407963253707224617),
966	KQU( 4802498363698583497), KQU( 2523802839317209764),
967	KQU( 3822579397797475589), KQU( 8950320572212130610),
968	KQU( 3745623504978342534), KQU(16092609066068482806),
969	KQU( 9817016950274642398), KQU(10591660660323829098),
970	KQU(11751606650792815920), KQU( 5122873818577122211),
971	KQU(17209553764913936624), KQU( 6249057709284380343),
972	KQU(15088791264695071830), KQU(15344673071709851930),
973	KQU( 4345751415293646084), KQU( 2542865750703067928),
974	KQU(13520525127852368784), KQU(18294188662880997241),
975	KQU( 3871781938044881523), KQU( 2873487268122812184),
976	KQU(15099676759482679005), KQU(15442599127239350490),
977	KQU( 6311893274367710888), KQU( 3286118760484672933),
978	KQU( 4146067961333542189), KQU(13303942567897208770),
979	KQU( 8196013722255630418), KQU( 4437815439340979989),
980	KQU(15433791533450605135), KQU( 4254828956815687049),
981	KQU( 1310903207708286015), KQU(10529182764462398549),
982	KQU(14900231311660638810), KQU( 9727017277104609793),
983	KQU( 1821308310948199033), KQU(11628861435066772084),
984	KQU( 9469019138491546924), KQU( 3145812670532604988),
985	KQU( 9938468915045491919), KQU( 1562447430672662142),
986	KQU(13963995266697989134), KQU( 3356884357625028695),
987	KQU( 4499850304584309747), KQU( 8456825817023658122),
988	KQU(10859039922814285279), KQU( 8099512337972526555),
989	KQU(  348006375109672149), KQU(11919893998241688603),
990	KQU( 1104199577402948826), KQU(16689191854356060289),
991	KQU(10992552041730168078), KQU( 7243733172705465836),
992	KQU( 5668075606180319560), KQU(18182847037333286970),
993	KQU( 4290215357664631322), KQU( 4061414220791828613),
994	KQU(13006291061652989604), KQU( 7140491178917128798),
995	KQU(12703446217663283481), KQU( 5500220597564558267),
996	KQU(10330551509971296358), KQU(15958554768648714492),
997	KQU( 5174555954515360045), KQU( 1731318837687577735),
998	KQU( 3557700801048354857), KQU(13764012341928616198),
999	KQU(13115166194379119043), KQU( 7989321021560255519),
1000	KQU( 2103584280905877040), KQU( 9230788662155228488),
1001	KQU(16396629323325547654), KQU(  657926409811318051),
1002	KQU(15046700264391400727), KQU( 5120132858771880830),
1003	KQU( 7934160097989028561), KQU( 6963121488531976245),
1004	KQU(17412329602621742089), KQU(15144843053931774092),
1005	KQU(17204176651763054532), KQU(13166595387554065870),
1006	KQU( 8590377810513960213), KQU( 5834365135373991938),
1007	KQU( 7640913007182226243), KQU( 3479394703859418425),
1008	KQU(16402784452644521040), KQU( 4993979809687083980),
1009	KQU(13254522168097688865), KQU(15643659095244365219),
1010	KQU( 5881437660538424982), KQU(11174892200618987379),
1011	KQU(  254409966159711077), KQU(17158413043140549909),
1012	KQU( 3638048789290376272), KQU( 1376816930299489190),
1013	KQU( 4622462095217761923), KQU(15086407973010263515),
1014	KQU(13253971772784692238), KQU( 5270549043541649236),
1015	KQU(11182714186805411604), KQU(12283846437495577140),
1016	KQU( 5297647149908953219), KQU(10047451738316836654),
1017	KQU( 4938228100367874746), KQU(12328523025304077923),
1018	KQU( 3601049438595312361), KQU( 9313624118352733770),
1019	KQU(13322966086117661798), KQU(16660005705644029394),
1020	KQU(11337677526988872373), KQU(13869299102574417795),
1021	KQU(15642043183045645437), KQU( 3021755569085880019),
1022	KQU( 4979741767761188161), KQU(13679979092079279587),
1023	KQU( 3344685842861071743), KQU(13947960059899588104),
1024	KQU(  305806934293368007), KQU( 5749173929201650029),
1025	KQU(11123724852118844098), KQU(15128987688788879802),
1026	KQU(15251651211024665009), KQU( 7689925933816577776),
1027	KQU(16732804392695859449), KQU(17087345401014078468),
1028	KQU(14315108589159048871), KQU( 4820700266619778917),
1029	KQU(16709637539357958441), KQU( 4936227875177351374),
1030	KQU( 2137907697912987247), KQU(11628565601408395420),
1031	KQU( 2333250549241556786), KQU( 5711200379577778637),
1032	KQU( 5170680131529031729), KQU(12620392043061335164),
1033	KQU(   95363390101096078), KQU( 5487981914081709462),
1034	KQU( 1763109823981838620), KQU( 3395861271473224396),
1035	KQU( 1300496844282213595), KQU( 6894316212820232902),
1036	KQU(10673859651135576674), KQU( 5911839658857903252),
1037	KQU(17407110743387299102), KQU( 8257427154623140385),
1038	KQU(11389003026741800267), KQU( 4070043211095013717),
1039	KQU(11663806997145259025), KQU(15265598950648798210),
1040	KQU(  630585789434030934), KQU( 3524446529213587334),
1041	KQU( 7186424168495184211), KQU(10806585451386379021),
1042	KQU(11120017753500499273), KQU( 1586837651387701301),
1043	KQU(17530454400954415544), KQU( 9991670045077880430),
1044	KQU( 7550997268990730180), KQU( 8640249196597379304),
1045	KQU( 3522203892786893823), KQU(10401116549878854788),
1046	KQU(13690285544733124852), KQU( 8295785675455774586),
1047	KQU(15535716172155117603), KQU( 3112108583723722511),
1048	KQU(17633179955339271113), KQU(18154208056063759375),
1049	KQU( 1866409236285815666), KQU(13326075895396412882),
1050	KQU( 8756261842948020025), KQU( 6281852999868439131),
1051	KQU(15087653361275292858), KQU(10333923911152949397),
1052	KQU( 5265567645757408500), KQU(12728041843210352184),
1053	KQU( 6347959327507828759), KQU(  154112802625564758),
1054	KQU(18235228308679780218), KQU( 3253805274673352418),
1055	KQU( 4849171610689031197), KQU(17948529398340432518),
1056	KQU(13803510475637409167), KQU(13506570190409883095),
1057	KQU(15870801273282960805), KQU( 8451286481299170773),
1058	KQU( 9562190620034457541), KQU( 8518905387449138364),
1059	KQU(12681306401363385655), KQU( 3788073690559762558),
1060	KQU( 5256820289573487769), KQU( 2752021372314875467),
1061	KQU( 6354035166862520716), KQU( 4328956378309739069),
1062	KQU(  449087441228269600), KQU( 5533508742653090868),
1063	KQU( 1260389420404746988), KQU(18175394473289055097),
1064	KQU( 1535467109660399420), KQU( 8818894282874061442),
1065	KQU(12140873243824811213), KQU(15031386653823014946),
1066	KQU( 1286028221456149232), KQU( 6329608889367858784),
1067	KQU( 9419654354945132725), KQU( 6094576547061672379),
1068	KQU(17706217251847450255), KQU( 1733495073065878126),
1069	KQU(16918923754607552663), KQU( 8881949849954945044),
1070	KQU(12938977706896313891), KQU(14043628638299793407),
1071	KQU(18393874581723718233), KQU( 6886318534846892044),
1072	KQU(14577870878038334081), KQU(13541558383439414119),
1073	KQU(13570472158807588273), KQU(18300760537910283361),
1074	KQU(  818368572800609205), KQU( 1417000585112573219),
1075	KQU(12337533143867683655), KQU(12433180994702314480),
1076	KQU(  778190005829189083), KQU(13667356216206524711),
1077	KQU( 9866149895295225230), KQU(11043240490417111999),
1078	KQU( 1123933826541378598), KQU( 6469631933605123610),
1079	KQU(14508554074431980040), KQU(13918931242962026714),
1080	KQU( 2870785929342348285), KQU(14786362626740736974),
1081	KQU(13176680060902695786), KQU( 9591778613541679456),
1082	KQU( 9097662885117436706), KQU(  749262234240924947),
1083	KQU( 1944844067793307093), KQU( 4339214904577487742),
1084	KQU( 8009584152961946551), KQU(16073159501225501777),
1085	KQU( 3335870590499306217), KQU(17088312653151202847),
1086	KQU( 3108893142681931848), KQU(16636841767202792021),
1087	KQU(10423316431118400637), KQU( 8008357368674443506),
1088	KQU(11340015231914677875), KQU(17687896501594936090),
1089	KQU(15173627921763199958), KQU(  542569482243721959),
1090	KQU(15071714982769812975), KQU( 4466624872151386956),
1091	KQU( 1901780715602332461), KQU( 9822227742154351098),
1092	KQU( 1479332892928648780), KQU( 6981611948382474400),
1093	KQU( 7620824924456077376), KQU(14095973329429406782),
1094	KQU( 7902744005696185404), KQU(15830577219375036920),
1095	KQU(10287076667317764416), KQU(12334872764071724025),
1096	KQU( 4419302088133544331), KQU(14455842851266090520),
1097	KQU(12488077416504654222), KQU( 7953892017701886766),
1098	KQU( 6331484925529519007), KQU( 4902145853785030022),
1099	KQU(17010159216096443073), KQU(11945354668653886087),
1100	KQU(15112022728645230829), KQU(17363484484522986742),
1101	KQU( 4423497825896692887), KQU( 8155489510809067471),
1102	KQU(  258966605622576285), KQU( 5462958075742020534),
1103	KQU( 6763710214913276228), KQU( 2368935183451109054),
1104	KQU(14209506165246453811), KQU( 2646257040978514881),
1105	KQU( 3776001911922207672), KQU( 1419304601390147631),
1106	KQU(14987366598022458284), KQU( 3977770701065815721),
1107	KQU(  730820417451838898), KQU( 3982991703612885327),
1108	KQU( 2803544519671388477), KQU(17067667221114424649),
1109	KQU( 2922555119737867166), KQU( 1989477584121460932),
1110	KQU(15020387605892337354), KQU( 9293277796427533547),
1111	KQU(10722181424063557247), KQU(16704542332047511651),
1112	KQU( 5008286236142089514), KQU(16174732308747382540),
1113	KQU(17597019485798338402), KQU(13081745199110622093),
1114	KQU( 8850305883842258115), KQU(12723629125624589005),
1115	KQU( 8140566453402805978), KQU(15356684607680935061),
1116	KQU(14222190387342648650), KQU(11134610460665975178),
1117	KQU( 1259799058620984266), KQU(13281656268025610041),
1118	KQU(  298262561068153992), KQU(12277871700239212922),
1119	KQU(13911297774719779438), KQU(16556727962761474934),
1120	KQU(17903010316654728010), KQU( 9682617699648434744),
1121	KQU(14757681836838592850), KQU( 1327242446558524473),
1122	KQU(11126645098780572792), KQU( 1883602329313221774),
1123	KQU( 2543897783922776873), KQU(15029168513767772842),
1124	KQU(12710270651039129878), KQU(16118202956069604504),
1125	KQU(15010759372168680524), KQU( 2296827082251923948),
1126	KQU(10793729742623518101), KQU(13829764151845413046),
1127	KQU(17769301223184451213), KQU( 3118268169210783372),
1128	KQU(17626204544105123127), KQU( 7416718488974352644),
1129	KQU(10450751996212925994), KQU( 9352529519128770586),
1130	KQU(  259347569641110140), KQU( 8048588892269692697),
1131	KQU( 1774414152306494058), KQU(10669548347214355622),
1132	KQU(13061992253816795081), KQU(18432677803063861659),
1133	KQU( 8879191055593984333), KQU(12433753195199268041),
1134	KQU(14919392415439730602), KQU( 6612848378595332963),
1135	KQU( 6320986812036143628), KQU(10465592420226092859),
1136	KQU( 4196009278962570808), KQU( 3747816564473572224),
1137	KQU(17941203486133732898), KQU( 2350310037040505198),
1138	KQU( 5811779859134370113), KQU(10492109599506195126),
1139	KQU( 7699650690179541274), KQU( 1954338494306022961),
1140	KQU(14095816969027231152), KQU( 5841346919964852061),
1141	KQU(14945969510148214735), KQU( 3680200305887550992),
1142	KQU( 6218047466131695792), KQU( 8242165745175775096),
1143	KQU(11021371934053307357), KQU( 1265099502753169797),
1144	KQU( 4644347436111321718), KQU( 3609296916782832859),
1145	KQU( 8109807992218521571), KQU(18387884215648662020),
1146	KQU(14656324896296392902), KQU(17386819091238216751),
1147	KQU(17788300878582317152), KQU( 7919446259742399591),
1148	KQU( 4466613134576358004), KQU(12928181023667938509),
1149	KQU(13147446154454932030), KQU(16552129038252734620),
1150	KQU( 8395299403738822450), KQU(11313817655275361164),
1151	KQU(  434258809499511718), KQU( 2074882104954788676),
1152	KQU( 7929892178759395518), KQU( 9006461629105745388),
1153	KQU( 5176475650000323086), KQU(11128357033468341069),
1154	KQU(12026158851559118955), KQU(14699716249471156500),
1155	KQU(  448982497120206757), KQU( 4156475356685519900),
1156	KQU( 6063816103417215727), KQU(10073289387954971479),
1157	KQU( 8174466846138590962), KQU( 2675777452363449006),
1158	KQU( 9090685420572474281), KQU( 6659652652765562060),
1159	KQU(12923120304018106621), KQU(11117480560334526775),
1160	KQU(  937910473424587511), KQU( 1838692113502346645),
1161	KQU(11133914074648726180), KQU( 7922600945143884053),
1162	KQU(13435287702700959550), KQU( 5287964921251123332),
1163	KQU(11354875374575318947), KQU(17955724760748238133),
1164	KQU(13728617396297106512), KQU( 4107449660118101255),
1165	KQU( 1210269794886589623), KQU(11408687205733456282),
1166	KQU( 4538354710392677887), KQU(13566803319341319267),
1167	KQU(17870798107734050771), KQU( 3354318982568089135),
1168	KQU( 9034450839405133651), KQU(13087431795753424314),
1169	KQU(  950333102820688239), KQU( 1968360654535604116),
1170	KQU(16840551645563314995), KQU( 8867501803892924995),
1171	KQU(11395388644490626845), KQU( 1529815836300732204),
1172	KQU(13330848522996608842), KQU( 1813432878817504265),
1173	KQU( 2336867432693429560), KQU(15192805445973385902),
1174	KQU( 2528593071076407877), KQU(  128459777936689248),
1175	KQU( 9976345382867214866), KQU( 6208885766767996043),
1176	KQU(14982349522273141706), KQU( 3099654362410737822),
1177	KQU(13776700761947297661), KQU( 8806185470684925550),
1178	KQU( 8151717890410585321), KQU(  640860591588072925),
1179	KQU(14592096303937307465), KQU( 9056472419613564846),
1180	KQU(14861544647742266352), KQU(12703771500398470216),
1181	KQU( 3142372800384138465), KQU( 6201105606917248196),
1182	KQU(18337516409359270184), KQU(15042268695665115339),
1183	KQU(15188246541383283846), KQU(12800028693090114519),
1184	KQU( 5992859621101493472), KQU(18278043971816803521),
1185	KQU( 9002773075219424560), KQU( 7325707116943598353),
1186	KQU( 7930571931248040822), KQU( 5645275869617023448),
1187	KQU( 7266107455295958487), KQU( 4363664528273524411),
1188	KQU(14313875763787479809), KQU(17059695613553486802),
1189	KQU( 9247761425889940932), KQU(13704726459237593128),
1190	KQU( 2701312427328909832), KQU(17235532008287243115),
1191	KQU(14093147761491729538), KQU( 6247352273768386516),
1192	KQU( 8268710048153268415), KQU( 7985295214477182083),
1193	KQU(15624495190888896807), KQU( 3772753430045262788),
1194	KQU( 9133991620474991698), KQU( 5665791943316256028),
1195	KQU( 7551996832462193473), KQU(13163729206798953877),
1196	KQU( 9263532074153846374), KQU( 1015460703698618353),
1197	KQU(17929874696989519390), KQU(18257884721466153847),
1198	KQU(16271867543011222991), KQU( 3905971519021791941),
1199	KQU(16814488397137052085), KQU( 1321197685504621613),
1200	KQU( 2870359191894002181), KQU(14317282970323395450),
1201	KQU(13663920845511074366), KQU( 2052463995796539594),
1202	KQU(14126345686431444337), KQU( 1727572121947022534),
1203	KQU(17793552254485594241), KQU( 6738857418849205750),
1204	KQU( 1282987123157442952), KQU(16655480021581159251),
1205	KQU( 6784587032080183866), KQU(14726758805359965162),
1206	KQU( 7577995933961987349), KQU(12539609320311114036),
1207	KQU(10789773033385439494), KQU( 8517001497411158227),
1208	KQU(10075543932136339710), KQU(14838152340938811081),
1209	KQU( 9560840631794044194), KQU(17445736541454117475),
1210	KQU(10633026464336393186), KQU(15705729708242246293),
1211	KQU( 1117517596891411098), KQU( 4305657943415886942),
1212	KQU( 4948856840533979263), KQU(16071681989041789593),
1213	KQU(13723031429272486527), KQU( 7639567622306509462),
1214	KQU(12670424537483090390), KQU( 9715223453097197134),
1215	KQU( 5457173389992686394), KQU(  289857129276135145),
1216	KQU(17048610270521972512), KQU(  692768013309835485),
1217	KQU(14823232360546632057), KQU(18218002361317895936),
1218	KQU( 3281724260212650204), KQU(16453957266549513795),
1219	KQU( 8592711109774511881), KQU(  929825123473369579),
1220	KQU(15966784769764367791), KQU( 9627344291450607588),
1221	KQU(10849555504977813287), KQU( 9234566913936339275),
1222	KQU( 6413807690366911210), KQU(10862389016184219267),
1223	KQU(13842504799335374048), KQU( 1531994113376881174),
1224	KQU( 2081314867544364459), KQU(16430628791616959932),
1225	KQU( 8314714038654394368), KQU( 9155473892098431813),
1226	KQU(12577843786670475704), KQU( 4399161106452401017),
1227	KQU( 1668083091682623186), KQU( 1741383777203714216),
1228	KQU( 2162597285417794374), KQU(15841980159165218736),
1229	KQU( 1971354603551467079), KQU( 1206714764913205968),
1230	KQU( 4790860439591272330), KQU(14699375615594055799),
1231	KQU( 8374423871657449988), KQU(10950685736472937738),
1232	KQU(  697344331343267176), KQU(10084998763118059810),
1233	KQU(12897369539795983124), KQU(12351260292144383605),
1234	KQU( 1268810970176811234), KQU( 7406287800414582768),
1235	KQU(  516169557043807831), KQU( 5077568278710520380),
1236	KQU( 3828791738309039304), KQU( 7721974069946943610),
1237	KQU( 3534670260981096460), KQU( 4865792189600584891),
1238	KQU(16892578493734337298), KQU( 9161499464278042590),
1239	KQU(11976149624067055931), KQU(13219479887277343990),
1240	KQU(14161556738111500680), KQU(14670715255011223056),
1241	KQU( 4671205678403576558), KQU(12633022931454259781),
1242	KQU(14821376219869187646), KQU(  751181776484317028),
1243	KQU( 2192211308839047070), KQU(11787306362361245189),
1244	KQU(10672375120744095707), KQU( 4601972328345244467),
1245	KQU(15457217788831125879), KQU( 8464345256775460809),
1246	KQU(10191938789487159478), KQU( 6184348739615197613),
1247	KQU(11425436778806882100), KQU( 2739227089124319793),
1248	KQU(  461464518456000551), KQU( 4689850170029177442),
1249	KQU( 6120307814374078625), KQU(11153579230681708671),
1250	KQU( 7891721473905347926), KQU(10281646937824872400),
1251	KQU( 3026099648191332248), KQU( 8666750296953273818),
1252	KQU(14978499698844363232), KQU(13303395102890132065),
1253	KQU( 8182358205292864080), KQU(10560547713972971291),
1254	KQU(11981635489418959093), KQU( 3134621354935288409),
1255	KQU(11580681977404383968), KQU(14205530317404088650),
1256	KQU( 5997789011854923157), KQU(13659151593432238041),
1257	KQU(11664332114338865086), KQU( 7490351383220929386),
1258	KQU( 7189290499881530378), KQU(15039262734271020220),
1259	KQU( 2057217285976980055), KQU(  555570804905355739),
1260	KQU(11235311968348555110), KQU(13824557146269603217),
1261	KQU(16906788840653099693), KQU( 7222878245455661677),
1262	KQU( 5245139444332423756), KQU( 4723748462805674292),
1263	KQU(12216509815698568612), KQU(17402362976648951187),
1264	KQU(17389614836810366768), KQU( 4880936484146667711),
1265	KQU( 9085007839292639880), KQU(13837353458498535449),
1266	KQU(11914419854360366677), KQU(16595890135313864103),
1267	KQU( 6313969847197627222), KQU(18296909792163910431),
1268	KQU(10041780113382084042), KQU( 2499478551172884794),
1269	KQU(11057894246241189489), KQU( 9742243032389068555),
1270	KQU(12838934582673196228), KQU(13437023235248490367),
1271	KQU(13372420669446163240), KQU( 6752564244716909224),
1272	KQU( 7157333073400313737), KQU(12230281516370654308),
1273	KQU( 1182884552219419117), KQU( 2955125381312499218),
1274	KQU(10308827097079443249), KQU( 1337648572986534958),
1275	KQU(16378788590020343939), KQU(  108619126514420935),
1276	KQU( 3990981009621629188), KQU( 5460953070230946410),
1277	KQU( 9703328329366531883), KQU(13166631489188077236),
1278	KQU( 1104768831213675170), KQU( 3447930458553877908),
1279	KQU( 8067172487769945676), KQU( 5445802098190775347),
1280	KQU( 3244840981648973873), KQU(17314668322981950060),
1281	KQU( 5006812527827763807), KQU(18158695070225526260),
1282	KQU( 2824536478852417853), KQU(13974775809127519886),
1283	KQU( 9814362769074067392), KQU(17276205156374862128),
1284	KQU(11361680725379306967), KQU( 3422581970382012542),
1285	KQU(11003189603753241266), KQU(11194292945277862261),
1286	KQU( 6839623313908521348), KQU(11935326462707324634),
1287	KQU( 1611456788685878444), KQU(13112620989475558907),
1288	KQU(  517659108904450427), KQU(13558114318574407624),
1289	KQU(15699089742731633077), KQU( 4988979278862685458),
1290	KQU( 8111373583056521297), KQU( 3891258746615399627),
1291	KQU( 8137298251469718086), KQU(12748663295624701649),
1292	KQU( 4389835683495292062), KQU( 5775217872128831729),
1293	KQU( 9462091896405534927), KQU( 8498124108820263989),
1294	KQU( 8059131278842839525), KQU(10503167994254090892),
1295	KQU(11613153541070396656), KQU(18069248738504647790),
1296	KQU(  570657419109768508), KQU( 3950574167771159665),
1297	KQU( 5514655599604313077), KQU( 2908460854428484165),
1298	KQU(10777722615935663114), KQU(12007363304839279486),
1299	KQU( 9800646187569484767), KQU( 8795423564889864287),
1300	KQU(14257396680131028419), KQU( 6405465117315096498),
1301	KQU( 7939411072208774878), KQU(17577572378528990006),
1302	KQU(14785873806715994850), KQU(16770572680854747390),
1303	KQU(18127549474419396481), KQU(11637013449455757750),
1304	KQU(14371851933996761086), KQU( 3601181063650110280),
1305	KQU( 4126442845019316144), KQU(10198287239244320669),
1306	KQU(18000169628555379659), KQU(18392482400739978269),
1307	KQU( 6219919037686919957), KQU( 3610085377719446052),
1308	KQU( 2513925039981776336), KQU(16679413537926716955),
1309	KQU(12903302131714909434), KQU( 5581145789762985009),
1310	KQU(12325955044293303233), KQU(17216111180742141204),
1311	KQU( 6321919595276545740), KQU( 3507521147216174501),
1312	KQU( 9659194593319481840), KQU(11473976005975358326),
1313	KQU(14742730101435987026), KQU(  492845897709954780),
1314	KQU(16976371186162599676), KQU(17712703422837648655),
1315	KQU( 9881254778587061697), KQU( 8413223156302299551),
1316	KQU( 1563841828254089168), KQU( 9996032758786671975),
1317	KQU(  138877700583772667), KQU(13003043368574995989),
1318	KQU( 4390573668650456587), KQU( 8610287390568126755),
1319	KQU(15126904974266642199), KQU( 6703637238986057662),
1320	KQU( 2873075592956810157), KQU( 6035080933946049418),
1321	KQU(13382846581202353014), KQU( 7303971031814642463),
1322	KQU(18418024405307444267), KQU( 5847096731675404647),
1323	KQU( 4035880699639842500), KQU(11525348625112218478),
1324	KQU( 3041162365459574102), KQU( 2604734487727986558),
1325	KQU(15526341771636983145), KQU(14556052310697370254),
1326	KQU(12997787077930808155), KQU( 9601806501755554499),
1327	KQU(11349677952521423389), KQU(14956777807644899350),
1328	KQU(16559736957742852721), KQU(12360828274778140726),
1329	KQU( 6685373272009662513), KQU(16932258748055324130),
1330	KQU(15918051131954158508), KQU( 1692312913140790144),
1331	KQU(  546653826801637367), KQU( 5341587076045986652),
1332	KQU(14975057236342585662), KQU(12374976357340622412),
1333	KQU(10328833995181940552), KQU(12831807101710443149),
1334	KQU(10548514914382545716), KQU( 2217806727199715993),
1335	KQU(12627067369242845138), KQU( 4598965364035438158),
1336	KQU(  150923352751318171), KQU(14274109544442257283),
1337	KQU( 4696661475093863031), KQU( 1505764114384654516),
1338	KQU(10699185831891495147), KQU( 2392353847713620519),
1339	KQU( 3652870166711788383), KQU( 8640653276221911108),
1340	KQU( 3894077592275889704), KQU( 4918592872135964845),
1341	KQU(16379121273281400789), KQU(12058465483591683656),
1342	KQU(11250106829302924945), KQU( 1147537556296983005),
1343	KQU( 6376342756004613268), KQU(14967128191709280506),
1344	KQU(18007449949790627628), KQU( 9497178279316537841),
1345	KQU( 7920174844809394893), KQU(10037752595255719907),
1346	KQU(15875342784985217697), KQU(15311615921712850696),
1347	KQU( 9552902652110992950), KQU(14054979450099721140),
1348	KQU( 5998709773566417349), KQU(18027910339276320187),
1349	KQU( 8223099053868585554), KQU( 7842270354824999767),
1350	KQU( 4896315688770080292), KQU(12969320296569787895),
1351	KQU( 2674321489185759961), KQU( 4053615936864718439),
1352	KQU(11349775270588617578), KQU( 4743019256284553975),
1353	KQU( 5602100217469723769), KQU(14398995691411527813),
1354	KQU( 7412170493796825470), KQU(  836262406131744846),
1355	KQU( 8231086633845153022), KQU( 5161377920438552287),
1356	KQU( 8828731196169924949), KQU(16211142246465502680),
1357	KQU( 3307990879253687818), KQU( 5193405406899782022),
1358	KQU( 8510842117467566693), KQU( 6070955181022405365),
1359	KQU(14482950231361409799), KQU(12585159371331138077),
1360	KQU( 3511537678933588148), KQU( 2041849474531116417),
1361	KQU(10944936685095345792), KQU(18303116923079107729),
1362	KQU( 2720566371239725320), KQU( 4958672473562397622),
1363	KQU( 3032326668253243412), KQU(13689418691726908338),
1364	KQU( 1895205511728843996), KQU( 8146303515271990527),
1365	KQU(16507343500056113480), KQU(  473996939105902919),
1366	KQU( 9897686885246881481), KQU(14606433762712790575),
1367	KQU( 6732796251605566368), KQU( 1399778120855368916),
1368	KQU(  935023885182833777), KQU(16066282816186753477),
1369	KQU( 7291270991820612055), KQU(17530230393129853844),
1370	KQU(10223493623477451366), KQU(15841725630495676683),
1371	KQU(17379567246435515824), KQU( 8588251429375561971),
1372	KQU(18339511210887206423), KQU(17349587430725976100),
1373	KQU(12244876521394838088), KQU( 6382187714147161259),
1374	KQU(12335807181848950831), KQU(16948885622305460665),
1375	KQU(13755097796371520506), KQU(14806740373324947801),
1376	KQU( 4828699633859287703), KQU( 8209879281452301604),
1377	KQU(12435716669553736437), KQU(13970976859588452131),
1378	KQU( 6233960842566773148), KQU(12507096267900505759),
1379	KQU( 1198713114381279421), KQU(14989862731124149015),
1380	KQU(15932189508707978949), KQU( 2526406641432708722),
1381	KQU(   29187427817271982), KQU( 1499802773054556353),
1382	KQU(10816638187021897173), KQU( 5436139270839738132),
1383	KQU( 6659882287036010082), KQU( 2154048955317173697),
1384	KQU(10887317019333757642), KQU(16281091802634424955),
1385	KQU(10754549879915384901), KQU(10760611745769249815),
1386	KQU( 2161505946972504002), KQU( 5243132808986265107),
1387	KQU(10129852179873415416), KQU(  710339480008649081),
1388	KQU( 7802129453068808528), KQU(17967213567178907213),
1389	KQU(15730859124668605599), KQU(13058356168962376502),
1390	KQU( 3701224985413645909), KQU(14464065869149109264),
1391	KQU( 9959272418844311646), KQU(10157426099515958752),
1392	KQU(14013736814538268528), KQU(17797456992065653951),
1393	KQU(17418878140257344806), KQU(15457429073540561521),
1394	KQU( 2184426881360949378), KQU( 2062193041154712416),
1395	KQU( 8553463347406931661), KQU( 4913057625202871854),
1396	KQU( 2668943682126618425), KQU(17064444737891172288),
1397	KQU( 4997115903913298637), KQU(12019402608892327416),
1398	KQU(17603584559765897352), KQU(11367529582073647975),
1399	KQU( 8211476043518436050), KQU( 8676849804070323674),
1400	KQU(18431829230394475730), KQU(10490177861361247904),
1401	KQU( 9508720602025651349), KQU( 7409627448555722700),
1402	KQU( 5804047018862729008), KQU(11943858176893142594),
1403	KQU(11908095418933847092), KQU( 5415449345715887652),
1404	KQU( 1554022699166156407), KQU( 9073322106406017161),
1405	KQU( 7080630967969047082), KQU(18049736940860732943),
1406	KQU(12748714242594196794), KQU( 1226992415735156741),
1407	KQU(17900981019609531193), KQU(11720739744008710999),
1408	KQU( 3006400683394775434), KQU(11347974011751996028),
1409	KQU( 3316999628257954608), KQU( 8384484563557639101),
1410	KQU(18117794685961729767), KQU( 1900145025596618194),
1411	KQU(17459527840632892676), KQU( 5634784101865710994),
1412	KQU( 7918619300292897158), KQU( 3146577625026301350),
1413	KQU( 9955212856499068767), KQU( 1873995843681746975),
1414	KQU( 1561487759967972194), KQU( 8322718804375878474),
1415	KQU(11300284215327028366), KQU( 4667391032508998982),
1416	KQU( 9820104494306625580), KQU(17922397968599970610),
1417	KQU( 1784690461886786712), KQU(14940365084341346821),
1418	KQU( 5348719575594186181), KQU(10720419084507855261),
1419	KQU(14210394354145143274), KQU( 2426468692164000131),
1420	KQU(16271062114607059202), KQU(14851904092357070247),
1421	KQU( 6524493015693121897), KQU( 9825473835127138531),
1422	KQU(14222500616268569578), KQU(15521484052007487468),
1423	KQU(14462579404124614699), KQU(11012375590820665520),
1424	KQU(11625327350536084927), KQU(14452017765243785417),
1425	KQU( 9989342263518766305), KQU( 3640105471101803790),
1426	KQU( 4749866455897513242), KQU(13963064946736312044),
1427	KQU(10007416591973223791), KQU(18314132234717431115),
1428	KQU( 3286596588617483450), KQU( 7726163455370818765),
1429	KQU( 7575454721115379328), KQU( 5308331576437663422),
1430	KQU(18288821894903530934), KQU( 8028405805410554106),
1431	KQU(15744019832103296628), KQU(  149765559630932100),
1432	KQU( 6137705557200071977), KQU(14513416315434803615),
1433	KQU(11665702820128984473), KQU(  218926670505601386),
1434	KQU( 6868675028717769519), KQU(15282016569441512302),
1435	KQU( 5707000497782960236), KQU( 6671120586555079567),
1436	KQU( 2194098052618985448), KQU(16849577895477330978),
1437	KQU(12957148471017466283), KQU( 1997805535404859393),
1438	KQU( 1180721060263860490), KQU(13206391310193756958),
1439	KQU(12980208674461861797), KQU( 3825967775058875366),
1440	KQU(17543433670782042631), KQU( 1518339070120322730),
1441	KQU(16344584340890991669), KQU( 2611327165318529819),
1442	KQU(11265022723283422529), KQU( 4001552800373196817),
1443	KQU(14509595890079346161), KQU( 3528717165416234562),
1444	KQU(18153222571501914072), KQU( 9387182977209744425),
1445	KQU(10064342315985580021), KQU(11373678413215253977),
1446	KQU( 2308457853228798099), KQU( 9729042942839545302),
1447	KQU( 7833785471140127746), KQU( 6351049900319844436),
1448	KQU(14454610627133496067), KQU(12533175683634819111),
1449	KQU(15570163926716513029), KQU(13356980519185762498)
1450};
1451
1452TEST_BEGIN(test_gen_rand_32)
1453{
1454	uint32_t array32[BLOCK_SIZE] JEMALLOC_ATTR(aligned(16));
1455	uint32_t array32_2[BLOCK_SIZE] JEMALLOC_ATTR(aligned(16));
1456	int i;
1457	uint32_t r32;
1458	sfmt_t *ctx;
1459
1460	assert_d_le(get_min_array_size32(), BLOCK_SIZE,
1461	    "Array size too small");
1462	ctx = init_gen_rand(1234);
1463	fill_array32(ctx, array32, BLOCK_SIZE);
1464	fill_array32(ctx, array32_2, BLOCK_SIZE);
1465	fini_gen_rand(ctx);
1466
1467	ctx = init_gen_rand(1234);
1468	for (i = 0; i < BLOCK_SIZE; i++) {
1469		if (i < COUNT_1) {
1470			assert_u32_eq(array32[i], init_gen_rand_32_expected[i],
1471			    "Output mismatch for i=%d", i);
1472		}
1473		r32 = gen_rand32(ctx);
1474		assert_u32_eq(r32, array32[i],
1475		    "Mismatch at array32[%d]=%x, gen=%x", i, array32[i], r32);
1476	}
1477	for (i = 0; i < COUNT_2; i++) {
1478		r32 = gen_rand32(ctx);
1479		assert_u32_eq(r32, array32_2[i],
1480		    "Mismatch at array32_2[%d]=%x, gen=%x", i, array32_2[i],
1481		    r32);
1482	}
1483	fini_gen_rand(ctx);
1484}
1485TEST_END
1486
1487TEST_BEGIN(test_by_array_32)
1488{
1489	uint32_t array32[BLOCK_SIZE] JEMALLOC_ATTR(aligned(16));
1490	uint32_t array32_2[BLOCK_SIZE] JEMALLOC_ATTR(aligned(16));
1491	int i;
1492	uint32_t ini[4] = {0x1234, 0x5678, 0x9abc, 0xdef0};
1493	uint32_t r32;
1494	sfmt_t *ctx;
1495
1496	assert_d_le(get_min_array_size32(), BLOCK_SIZE,
1497	    "Array size too small");
1498	ctx = init_by_array(ini, 4);
1499	fill_array32(ctx, array32, BLOCK_SIZE);
1500	fill_array32(ctx, array32_2, BLOCK_SIZE);
1501	fini_gen_rand(ctx);
1502
1503	ctx = init_by_array(ini, 4);
1504	for (i = 0; i < BLOCK_SIZE; i++) {
1505		if (i < COUNT_1) {
1506			assert_u32_eq(array32[i], init_by_array_32_expected[i],
1507			    "Output mismatch for i=%d", i);
1508		}
1509		r32 = gen_rand32(ctx);
1510		assert_u32_eq(r32, array32[i],
1511		    "Mismatch at array32[%d]=%x, gen=%x", i, array32[i], r32);
1512	}
1513	for (i = 0; i < COUNT_2; i++) {
1514		r32 = gen_rand32(ctx);
1515		assert_u32_eq(r32, array32_2[i],
1516		    "Mismatch at array32_2[%d]=%x, gen=%x", i, array32_2[i],
1517		    r32);
1518	}
1519	fini_gen_rand(ctx);
1520}
1521TEST_END
1522
1523TEST_BEGIN(test_gen_rand_64)
1524{
1525	uint64_t array64[BLOCK_SIZE64] JEMALLOC_ATTR(aligned(16));
1526	uint64_t array64_2[BLOCK_SIZE64] JEMALLOC_ATTR(aligned(16));
1527	int i;
1528	uint64_t r;
1529	sfmt_t *ctx;
1530
1531	assert_d_le(get_min_array_size64(), BLOCK_SIZE64,
1532	    "Array size too small");
1533	ctx = init_gen_rand(4321);
1534	fill_array64(ctx, array64, BLOCK_SIZE64);
1535	fill_array64(ctx, array64_2, BLOCK_SIZE64);
1536	fini_gen_rand(ctx);
1537
1538	ctx = init_gen_rand(4321);
1539	for (i = 0; i < BLOCK_SIZE64; i++) {
1540		if (i < COUNT_1) {
1541			assert_u64_eq(array64[i], init_gen_rand_64_expected[i],
1542			    "Output mismatch for i=%d", i);
1543		}
1544		r = gen_rand64(ctx);
1545		assert_u64_eq(r, array64[i],
1546		    "Mismatch at array64[%d]=%"PRIx64", gen=%"PRIx64, i,
1547		    array64[i], r);
1548	}
1549	for (i = 0; i < COUNT_2; i++) {
1550		r = gen_rand64(ctx);
1551		assert_u64_eq(r, array64_2[i],
1552		    "Mismatch at array64_2[%d]=%"PRIx64" gen=%"PRIx64"", i,
1553		    array64_2[i], r);
1554	}
1555	fini_gen_rand(ctx);
1556}
1557TEST_END
1558
1559TEST_BEGIN(test_by_array_64)
1560{
1561	uint64_t array64[BLOCK_SIZE64] JEMALLOC_ATTR(aligned(16));
1562	uint64_t array64_2[BLOCK_SIZE64] JEMALLOC_ATTR(aligned(16));
1563	int i;
1564	uint64_t r;
1565	uint32_t ini[] = {5, 4, 3, 2, 1};
1566	sfmt_t *ctx;
1567
1568	assert_d_le(get_min_array_size64(), BLOCK_SIZE64,
1569	    "Array size too small");
1570	ctx = init_by_array(ini, 5);
1571	fill_array64(ctx, array64, BLOCK_SIZE64);
1572	fill_array64(ctx, array64_2, BLOCK_SIZE64);
1573	fini_gen_rand(ctx);
1574
1575	ctx = init_by_array(ini, 5);
1576	for (i = 0; i < BLOCK_SIZE64; i++) {
1577		if (i < COUNT_1) {
1578			assert_u64_eq(array64[i], init_by_array_64_expected[i],
1579			    "Output mismatch for i=%d", i);
1580		}
1581		r = gen_rand64(ctx);
1582		assert_u64_eq(r, array64[i],
1583		    "Mismatch at array64[%d]=%"PRIx64" gen=%"PRIx64, i,
1584		    array64[i], r);
1585	}
1586	for (i = 0; i < COUNT_2; i++) {
1587		r = gen_rand64(ctx);
1588		assert_u64_eq(r, array64_2[i],
1589		    "Mismatch at array64_2[%d]=%"PRIx64" gen=%"PRIx64, i,
1590		    array64_2[i], r);
1591	}
1592	fini_gen_rand(ctx);
1593}
1594TEST_END
1595
1596int
1597main(void)
1598{
1599
1600	return (test(
1601	    test_gen_rand_32,
1602	    test_by_array_32,
1603	    test_gen_rand_64,
1604	    test_by_array_64));
1605}
1606