@peerbit/riblt 0.0.1-5cf61cb

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/tests.rs ADDED
@@ -0,0 +1,2343 @@
1
+ use super::encoding::*;
2
+ use super::testing::*;
3
+ use std::collections::BTreeSet;
4
+
5
+ #[test]
6
+ fn diff() {
7
+ let alice: [TestU64; 10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
8
+ let bob: [TestU64; 10] = [1, 3, 4, 5, 6, 7, 8, 9, 10, 11];
9
+
10
+ let mut enc = Encoder::<TestU64>::new();
11
+ for x in alice {
12
+ enc.add_symbol(&x);
13
+ }
14
+
15
+ let mut dec = Decoder::<TestU64>::new();
16
+ for x in bob {
17
+ dec.add_symbol(&x);
18
+ }
19
+
20
+ let mut cost = 0;
21
+
22
+ loop {
23
+ let s = enc.produce_next_coded_symbol();
24
+ cost += 1;
25
+ dec.add_coded_symbol(&s);
26
+ assert!(!dec.try_decode().is_err());
27
+ if dec.decoded() {
28
+ break;
29
+ }
30
+ }
31
+
32
+ // 2 is exclusive to Alice
33
+ assert_eq!(dec.remote.symbols[0].symbol, 2);
34
+
35
+ // 11 is exclusive to Bob
36
+ assert_eq!(dec.local.symbols[0].symbol, 11);
37
+
38
+ assert_eq!(cost, 2);
39
+ }
40
+
41
+ #[test]
42
+ fn encode_and_decode() {
43
+ let mut enc = Encoder::<TestSymbol>::new();
44
+ let mut dec = Decoder::<TestSymbol>::new();
45
+
46
+ let mut local = BTreeSet::<u64>::new();
47
+ let mut remote = BTreeSet::<u64>::new();
48
+
49
+ let nlocal = 5000; // 50000;
50
+ let nremote = 5000; // 50000;
51
+ let ncommon = 10000; // 100000;
52
+
53
+ let mut next_id: u64 = 0;
54
+
55
+ for _ in 0..nlocal {
56
+ let s = new_test_symbol(next_id);
57
+ next_id += 1;
58
+ dec.add_symbol(&s);
59
+ local.insert(s.hash());
60
+ }
61
+ for _ in 0..nremote {
62
+ let s = new_test_symbol(next_id);
63
+ next_id += 1;
64
+ enc.add_symbol(&s);
65
+ remote.insert(s.hash());
66
+ }
67
+ for _ in 0..ncommon {
68
+ let s = new_test_symbol(next_id);
69
+ next_id += 1;
70
+ enc.add_symbol(&s);
71
+ dec.add_symbol(&s);
72
+ }
73
+
74
+ let mut ncw = 0;
75
+
76
+ loop {
77
+ dec.add_coded_symbol(&enc.produce_next_coded_symbol());
78
+ ncw += 1;
79
+ assert!(!dec.try_decode().is_err());
80
+ if dec.decoded() {
81
+ break;
82
+ }
83
+ }
84
+
85
+ for v in dec.remote.symbols.iter() {
86
+ remote.remove(&v.hash);
87
+ }
88
+
89
+ for v in dec.local.symbols.iter() {
90
+ local.remove(&v.hash);
91
+ }
92
+
93
+ assert_eq!(remote.len(), 0);
94
+ assert_eq!(local.len(), 0);
95
+ assert!(dec.decoded());
96
+
97
+ println!("{} codewords until fully decoded", ncw);
98
+ }
99
+
100
+ #[test]
101
+ fn encode_to_decoder() {
102
+ let alice: [TestU64; 10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
103
+ let bob: [TestU64; 10] = [1, 3, 4, 5, 6, 7, 8, 9, 10, 11];
104
+
105
+ let mut enc = Encoder::<TestU64>::new();
106
+ for x in alice {
107
+ enc.add_symbol(&x);
108
+ }
109
+
110
+ let mut enc2: Encoder<u64> = Encoder::<TestU64>::new();
111
+ for x in bob {
112
+ enc2.add_symbol(&x);
113
+ }
114
+
115
+ let mut dec = enc2.to_decoder();
116
+
117
+ let mut cost = 0;
118
+
119
+ loop {
120
+ let s = enc.produce_next_coded_symbol();
121
+ cost += 1;
122
+ dec.add_coded_symbol(&s);
123
+ assert!(!dec.try_decode().is_err());
124
+ if dec.decoded() {
125
+ break;
126
+ }
127
+ }
128
+
129
+ // 2 is exclusive to Alice
130
+ assert_eq!(dec.remote.symbols[0].symbol, 2);
131
+
132
+ // 11 is exclusive to Bob
133
+ assert_eq!(dec.local.symbols[0].symbol, 11);
134
+
135
+ assert_eq!(cost, 2);
136
+ }
137
+
138
+ #[test]
139
+ fn reset() {
140
+ let alice_0: [TestU64; 10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
141
+ let bob_0: [TestU64; 10] = [1, 3, 4, 5, 6, 7, 8, 9, 10, 11];
142
+ let alice_1: [TestU64; 10] = [1, 2, 3, 4, 5, 6, 7, 8, 10, 11];
143
+ let bob_1: [TestU64; 10] = [1, 2, 4, 5, 6, 7, 8, 9, 10, 11];
144
+
145
+ let mut enc = Encoder::<TestU64>::new();
146
+ for x in alice_0 {
147
+ enc.add_symbol(&x);
148
+ }
149
+
150
+ let mut dec = Decoder::<TestU64>::new();
151
+ for x in bob_0 {
152
+ dec.add_symbol(&x);
153
+ }
154
+
155
+ let mut cost = 0;
156
+
157
+ loop {
158
+ let s = enc.produce_next_coded_symbol();
159
+ cost += 1;
160
+ dec.add_coded_symbol(&s);
161
+ assert!(!dec.try_decode().is_err());
162
+ if dec.decoded() {
163
+ break;
164
+ }
165
+ }
166
+
167
+ enc.reset();
168
+ dec.reset();
169
+
170
+ for x in alice_1 {
171
+ enc.add_symbol(&x);
172
+ }
173
+
174
+ for x in bob_1 {
175
+ dec.add_symbol(&x);
176
+ }
177
+
178
+ cost = 0;
179
+
180
+ loop {
181
+ let s = enc.produce_next_coded_symbol();
182
+ cost += 1;
183
+ dec.add_coded_symbol(&s);
184
+ assert!(!dec.try_decode().is_err());
185
+ if dec.decoded() {
186
+ break;
187
+ }
188
+ }
189
+
190
+ // 3 is exclusive to Alice
191
+ assert_eq!(dec.remote.symbols[0].symbol, 3);
192
+
193
+ // 9 is exclusive to Bob
194
+ assert_eq!(dec.local.symbols[0].symbol, 9);
195
+
196
+ assert_eq!(cost, 2);
197
+ }
198
+
199
+ #[test]
200
+ fn get_symbols() {
201
+ let alice: [TestU64; 10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
202
+ let bob: [TestU64; 10] = [1, 3, 4, 5, 6, 7, 8, 9, 10, 11];
203
+
204
+ let mut enc = Encoder::<TestU64>::new();
205
+ for x in alice {
206
+ enc.add_symbol(&x);
207
+ }
208
+
209
+ let mut dec = Decoder::<TestU64>::new();
210
+ for x in bob {
211
+ dec.add_symbol(&x);
212
+ }
213
+
214
+ let mut cost = 0;
215
+
216
+ loop {
217
+ let s = enc.produce_next_coded_symbol();
218
+ cost += 1;
219
+ dec.add_coded_symbol(&s);
220
+ assert!(!dec.try_decode().is_err());
221
+ if dec.decoded() {
222
+ break;
223
+ }
224
+ }
225
+
226
+ let remote = dec.get_remote_symbols();
227
+ let local = dec.get_local_symbols();
228
+
229
+ // 2 is exclusive to Alice
230
+ assert_eq!(remote[0].symbol, 2);
231
+
232
+ // 11 is exclusive to Bob
233
+ assert_eq!(local[0].symbol, 11);
234
+
235
+ assert_eq!(cost, 2);
236
+ }
237
+
238
+ #[test]
239
+ fn test_remove_symbol() {
240
+ let mut encoder = Encoder::<TestU64>::new();
241
+
242
+ // Add symbols to the encoder
243
+ encoder.add_symbol(&1);
244
+ encoder.add_symbol(&2);
245
+ encoder.add_symbol(&3);
246
+
247
+ assert_eq!(encoder.symbols.len(), 3);
248
+
249
+ // Remove a symbol
250
+ encoder.remove_symbol(&2);
251
+
252
+ // Check that the symbol was removed
253
+ assert_eq!(encoder.symbols.len(), 2);
254
+ assert!(!encoder.symbols.iter().any(|s| s.symbol == 2));
255
+
256
+ // Check that mappings and queue are updated correctly
257
+ assert_eq!(encoder.mappings.len(), 2);
258
+ assert_eq!(encoder.queue.len(), 2);
259
+ assert!(encoder.queue.iter().all(|sm| sm.source_idx < 2));
260
+
261
+ // Ensure that the heap property is maintained
262
+ for i in 1..encoder.queue.len() {
263
+ let parent = (i - 1) / 2;
264
+ assert!(
265
+ encoder.queue[parent].coded_idx <= encoder.queue[i].coded_idx,
266
+ "Heap property violated at index {}",
267
+ i
268
+ );
269
+ }
270
+ }
271
+
272
+ #[test]
273
+ fn test_diff_after_removal_of_symbol() {
274
+ let alice: [TestU64; 5] = [1, 2, 3, 5, 10];
275
+ let bob: [TestU64; 4] = [1, 2, 3, 6];
276
+
277
+ let mut enc = Encoder::<TestU64>::new();
278
+ for x in alice {
279
+ enc.add_symbol(&x);
280
+ }
281
+
282
+ enc.remove_symbol(&10);
283
+
284
+ let mut dec = Decoder::<TestU64>::new();
285
+ for x in bob {
286
+ dec.add_symbol(&x);
287
+ }
288
+
289
+ let mut cost = 0;
290
+
291
+ loop {
292
+ let s = enc.produce_next_coded_symbol();
293
+ cost += 1;
294
+ dec.add_coded_symbol(&s);
295
+ assert!(!dec.try_decode().is_err());
296
+ if dec.decoded() {
297
+ break;
298
+ }
299
+ }
300
+
301
+ // 5 is exclusive to Alice
302
+ assert_eq!(dec.remote.symbols[0].symbol, 5);
303
+
304
+ // 6 is exclusive to Bob
305
+ assert_eq!(dec.local.symbols[0].symbol, 6);
306
+
307
+ assert_eq!(cost, 2);
308
+ }
309
+
310
+ #[test]
311
+ fn test_clone() {
312
+ let alice: [TestU64; 5] = [1, 2, 3, 5, 10];
313
+ let mut enc = Encoder::<TestU64>::new();
314
+ for x in alice {
315
+ enc.add_symbol(&x);
316
+ }
317
+
318
+ // produce some symbols and reuse and produce the same symbols and assert they are equal
319
+ let mut enc2 = enc.clone();
320
+
321
+ let mut produces: Vec<CodedSymbol<TestU64>> = Vec::new();
322
+ for _ in 0..10 {
323
+ produces.push(enc.produce_next_coded_symbol());
324
+ }
325
+
326
+ for i in 0..10 {
327
+ assert_eq!(enc2.produce_next_coded_symbol(), produces[i]);
328
+ }
329
+ }
330
+ const MAPPING_REF: [u64; 2000] = [
331
+ 2,
332
+ 3,
333
+ 9,
334
+ 10,
335
+ 11,
336
+ 16,
337
+ 27,
338
+ 31,
339
+ 42,
340
+ 133,
341
+ 258,
342
+ 271,
343
+ 1969,
344
+ 2167,
345
+ 4018,
346
+ 19352,
347
+ 25878,
348
+ 38498,
349
+ 40513,
350
+ 64416,
351
+ 169690,
352
+ 740928,
353
+ 1519972,
354
+ 1968074,
355
+ 8208040,
356
+ 10400231,
357
+ 11695869,
358
+ 12610398,
359
+ 13893610,
360
+ 17287422,
361
+ 18066631,
362
+ 23660562,
363
+ 25888307,
364
+ 179863602,
365
+ 215986671,
366
+ 801810653,
367
+ 3402781043,
368
+ 4764885828,
369
+ 5866803996,
370
+ 7543450409,
371
+ 12720236490,
372
+ 13661179802,
373
+ 13753445813,
374
+ 111830685287,
375
+ 195882855340,
376
+ 226531037293,
377
+ 242336935646,
378
+ 1129731321329,
379
+ 1294351746820,
380
+ 1599276494338,
381
+ 5057796363277,
382
+ 16408421055474,
383
+ 22599230754570,
384
+ 59952571173986,
385
+ 78564300477335,
386
+ 89699944202590,
387
+ 157610705439900,
388
+ 219719584416704,
389
+ 481011332100199,
390
+ 769537964478830,
391
+ 1951573105410798,
392
+ 10085780461085687,
393
+ 13787072445283817,
394
+ 37342710031612493,
395
+ 59480048735071153,
396
+ 121481616280401865,
397
+ 793200340131224137,
398
+ 2412173016519570249,
399
+ 3146877963700278857,
400
+ 3268001426615912441,
401
+ 5674548168104436217,
402
+ 5956047874350559353,
403
+ 8538589375516646521,
404
+ 9187948460596693497,
405
+ 9287078302212508649,
406
+ 11901191482218757609,
407
+ 3039525328105790953,
408
+ 3160019853479824921,
409
+ 3316894547750845017,
410
+ 3360199901558658041,
411
+ 3973211352801976185,
412
+ 4495634179432494649,
413
+ 13839094117823393337,
414
+ 1873544722954184249,
415
+ 1978397965294508569,
416
+ 4106526400364231705,
417
+ 4106526400364231704,
418
+ 5748900985946378264,
419
+ 6413241262779981208,
420
+ 7540893577959613720,
421
+ 14503551309577267480,
422
+ 15808630469550402584,
423
+ 1342473340942458392,
424
+ 1424762746350639176,
425
+ 1684460149527201672,
426
+ 2379581915029727240,
427
+ 3747569155815616776,
428
+ 5592924978515277576,
429
+ 6066607445344116232,
430
+ 6390483890218260936,
431
+ 7400848894829915464,
432
+ 9114065277016819016,
433
+ 16187285940290710856,
434
+ 7849920258579342664,
435
+ 11101256641551275848,
436
+ 16129462018875097928,
437
+ 16129462018875097927,
438
+ 4801353112721507143,
439
+ 6136779504944517447,
440
+ 7503218853735661639,
441
+ 2080860561266718791,
442
+ 10786716632668951623,
443
+ 10786716632668951622,
444
+ 16961429938863261766,
445
+ 10311279425160263750,
446
+ 104292808938934342,
447
+ 134112991484844162,
448
+ 198471139819754274,
449
+ 733115700081127394,
450
+ 2089443019692571106,
451
+ 3369894856054728418,
452
+ 6050017276115829474,
453
+ 11936690373413264098,
454
+ 15562840077570483938,
455
+ 5636000350790340322,
456
+ 6351779967804027490,
457
+ 12469315387929274978,
458
+ 12469315387929274977,
459
+ 14633785144808694369,
460
+ 2279805332619779681,
461
+ 2419514708606640513,
462
+ 4704777080346762369,
463
+ 5201870862512480833,
464
+ 7012842863031724097,
465
+ 14150149540635211841,
466
+ 1331373460529622081,
467
+ 2149758645815525441,
468
+ 2329291395182032929,
469
+ 2329291395182032928,
470
+ 4232619690558051872,
471
+ 6056262690198436128,
472
+ 6468462729948783456,
473
+ 11038122849812092768,
474
+ 2591110160050411360,
475
+ 7672237843530619744,
476
+ 14304804239604551520,
477
+ 14304804239604551519,
478
+ 15619874751055778399,
479
+ 17743347839792802143,
480
+ 6058358948741427551,
481
+ 9303564995229632863,
482
+ 17729416846251748703,
483
+ 5369005043210817887,
484
+ 8569050157856370015,
485
+ 8569050157856370014,
486
+ 8569050157856370013,
487
+ 3227349021934157149,
488
+ 3535287945783948573,
489
+ 3935946846676377821,
490
+ 4236074163382057309,
491
+ 9107024244014938461,
492
+ 10914459567294415965,
493
+ 11667108085865846109,
494
+ 3662179474506839389,
495
+ 7967130254775215965,
496
+ 8830960836245594589,
497
+ 14905851974320035293,
498
+ 1007073299401230813,
499
+ 2245994131707039453,
500
+ 4143338838841905629,
501
+ 4337517823382254813,
502
+ 4337517823382254812,
503
+ 10109133361272261852,
504
+ 10134678711284725404,
505
+ 10134678711284725403,
506
+ 10134678711284725402,
507
+ 8941302127777003162,
508
+ 17843741186085099162,
509
+ 5949065987573128858,
510
+ 10547605048042827418,
511
+ 13614866558375183514,
512
+ 10704794643328619674,
513
+ 10704794643328619673,
514
+ 11098375608905362777,
515
+ 774368807631029593,
516
+ 1060479282120162617,
517
+ 1156698037664071209,
518
+ 1590750824257224489,
519
+ 1960183947388709929,
520
+ 2204782844626302121,
521
+ 5010682958806542505,
522
+ 5010682958806542504,
523
+ 5996548184666151848,
524
+ 10756391040068727720,
525
+ 14041383793343730088,
526
+ 16597313514341048744,
527
+ 9345895310700212648,
528
+ 10847562036107868840,
529
+ 10875646772256257720,
530
+ 10875646772256257719,
531
+ 11013737712730298087,
532
+ 16494856621529915111,
533
+ 8990302363676042983,
534
+ 1212708886654643943,
535
+ 1546773102096956071,
536
+ 1855797033275182567,
537
+ 1867403762412013191,
538
+ 2121163876524052615,
539
+ 2189469989128491199,
540
+ 4048073549205111999,
541
+ 4696327277030687039,
542
+ 5109128328956650239,
543
+ 11032757470468873983,
544
+ 11340821017985174975,
545
+ 13045245911355948991,
546
+ 16294018844911885759,
547
+ 15012600996198518207,
548
+ 5667489610198021567,
549
+ 6987594811386372543,
550
+ 11555425923718443967,
551
+ 4397077840473162687,
552
+ 212688111898520511,
553
+ 511935402764606847,
554
+ 765931598683386463,
555
+ 935962892665704287,
556
+ 1074947402708844895,
557
+ 2843137294803817311,
558
+ 4071635093069174879,
559
+ 13450160332418609247,
560
+ 17591506076150091871,
561
+ 17591506076150091870,
562
+ 17591506076150091869,
563
+ 17591506076150091868,
564
+ 3996360260946153564,
565
+ 9251564056549053532,
566
+ 12080025123908720220,
567
+ 11451311144194158172,
568
+ 14287408862835552348,
569
+ 14287408862835552347,
570
+ 14287408862835552346,
571
+ 7697035038012051546,
572
+ 10490906337534715482,
573
+ 12092945331948120410,
574
+ 12092945331948120409,
575
+ 17639632411565625689,
576
+ 4968025126303783257,
577
+ 7583734645732994393,
578
+ 10382747139942565209,
579
+ 10382747139942565208,
580
+ 749351793097401688,
581
+ 3115043874914375000,
582
+ 3375666296643347192,
583
+ 3581616863776224760,
584
+ 4073229105489566392,
585
+ 7264348951097761976,
586
+ 7264348951097761975,
587
+ 12460208134977411255,
588
+ 12460208134977411254,
589
+ 14822130477695273654,
590
+ 14896883595007080502,
591
+ 13481528102242852918,
592
+ 4504929675373891638,
593
+ 9059438753399210550,
594
+ 15536702655252100662,
595
+ 18212473996666107446,
596
+ 9735007041578853942,
597
+ 16721439083358467638,
598
+ 2006208160468298806,
599
+ 4121422338237695030,
600
+ 4616653305766488054,
601
+ 8427675690005462006,
602
+ 9297686377550328182,
603
+ 9765582082340188982,
604
+ 11573330517875114294,
605
+ 1648438546803889462,
606
+ 1824050446740942806,
607
+ 3242486533589436886,
608
+ 3455833905520347318,
609
+ 5746040762568682678,
610
+ 16919766134631230646,
611
+ 5495077392503105718,
612
+ 6505409277154677814,
613
+ 6853867560213600822,
614
+ 6872156644204672306,
615
+ 7615281762359784882,
616
+ 8879680434793755570,
617
+ 9146209630066408498,
618
+ 14340780210831361074,
619
+ 3677427333757067314,
620
+ 5936714088789761586,
621
+ 5936714088789761585,
622
+ 6924509312226656049,
623
+ 9298149807732436273,
624
+ 11442751604756895281,
625
+ 13627510964669988913,
626
+ 3242600861773065265,
627
+ 4418716695301362481,
628
+ 6279770279865943089,
629
+ 7080614287168706225,
630
+ 8868132673244289457,
631
+ 13250878510997881777,
632
+ 11140319760833881009,
633
+ 1386651027510632369,
634
+ 4879455484125002161,
635
+ 9807258256661681585,
636
+ 15254328444464814513,
637
+ 16861185821523256241,
638
+ 720561401534259633,
639
+ 1213326202632017457,
640
+ 1324923267627093009,
641
+ 2642886930942882065,
642
+ 4351366928436156177,
643
+ 10001443333026609937,
644
+ 4117712398055246609,
645
+ 8041725503837959953,
646
+ 5690686515061557009,
647
+ 9267760599216976657,
648
+ 13145745567287923985,
649
+ 535121766751720721,
650
+ 1776278538722383889,
651
+ 2819231399375208849,
652
+ 3156258793919518993,
653
+ 3195505683648100521,
654
+ 3909151620718254633,
655
+ 4041707011506702649,
656
+ 4415924873336150137,
657
+ 14623990791718021241,
658
+ 15304369016570783865,
659
+ 15304369016570783864,
660
+ 15492985554779062456,
661
+ 591712209572007096,
662
+ 1141041567186543672,
663
+ 6426935400094639160,
664
+ 12198487325760820280,
665
+ 12198487325760820279,
666
+ 1985207128622509111,
667
+ 4108397071827430967,
668
+ 5285663325754501687,
669
+ 8567963281274080311,
670
+ 9690436044127668279,
671
+ 13822575389986857015,
672
+ 16319747630671061047,
673
+ 16319747630671061046,
674
+ 6838110274107079734,
675
+ 17493640444133237814,
676
+ 2434946842334960182,
677
+ 2748641586803816246,
678
+ 8664059778309442358,
679
+ 17310887894315394870,
680
+ 8061747692493136694,
681
+ 10325187897630181174,
682
+ 13068215639429351222,
683
+ 14393009318676563254,
684
+ 16151308358003295542,
685
+ 16151308358003295541,
686
+ 16151308358003295540,
687
+ 16151308358003295539,
688
+ 3279103478365257011,
689
+ 7932421138780178739,
690
+ 10239360785730409779,
691
+ 16269469339889926451,
692
+ 17301577628376316595,
693
+ 7663399801777203,
694
+ 10111713497201638,
695
+ 16793534378646062,
696
+ 37796564450121254,
697
+ 40510573942190703,
698
+ 61095404467931503,
699
+ 90664919420718003,
700
+ 164225949503925331,
701
+ 167703546435912332,
702
+ 450030985582817068,
703
+ 607029827812203628,
704
+ 1715165266276769132,
705
+ 1982206033663210028,
706
+ 3274496668076299820,
707
+ 14632154208406124076,
708
+ 15193245561180224684,
709
+ 15193245561180224683,
710
+ 15193245561180224682,
711
+ 15193245561180224681,
712
+ 14693257013194747049,
713
+ 14693257013194747048,
714
+ 1260451792652077224,
715
+ 1817314206087697320,
716
+ 4598541984669108136,
717
+ 5065123073334363048,
718
+ 5065123073334363047,
719
+ 7913466063836160423,
720
+ 10034590712668692135,
721
+ 11779663320141337767,
722
+ 1852993380154852519,
723
+ 2029240397134927495,
724
+ 2527066433590579655,
725
+ 2670066914385354647,
726
+ 2794783324967854263,
727
+ 6695454003378708151,
728
+ 7054920514771564791,
729
+ 7392279547809657207,
730
+ 8460454710182186999,
731
+ 12100326690382434295,
732
+ 15502190327429098487,
733
+ 15376601188307016695,
734
+ 18367304860456649719,
735
+ 438745625002594359,
736
+ 455737588787321151,
737
+ 607876801982513823,
738
+ 691584183040083247,
739
+ 3782714566037112623,
740
+ 5582586217547786543,
741
+ 6033908658628388591,
742
+ 6263042309660455247,
743
+ 8992676503636456271,
744
+ 11456094689090022223,
745
+ 12253094249166591439,
746
+ 5004884290622160335,
747
+ 4802888933591418319,
748
+ 11602584180111897039,
749
+ 2551254008312383951,
750
+ 2858000437557115151,
751
+ 2893323042672188095,
752
+ 3490721800283430335,
753
+ 3599211071732072191,
754
+ 4146049438355731583,
755
+ 7785116432328217215,
756
+ 13662863109004246655,
757
+ 7434103734628214399,
758
+ 7598277463587282431,
759
+ 13167997918261143039,
760
+ 13649810065555690495,
761
+ 16219671385903446015,
762
+ 7124076053489528831,
763
+ 8095954420648467711,
764
+ 9455768188905832959,
765
+ 16006891143521369599,
766
+ 18304487460635246591,
767
+ 5985568248488173567,
768
+ 6670492080163209343,
769
+ 13006163544356538495,
770
+ 558981499886182527,
771
+ 734203918081934655,
772
+ 1306311136489416575,
773
+ 2199080194124775423,
774
+ 2204014970168438464,
775
+ 2677532920992289792,
776
+ 7763619023790427136,
777
+ 8061537008911296832,
778
+ 7994533451102937408,
779
+ 15733937288311780672,
780
+ 3645579292257011008,
781
+ 7575506083351276352,
782
+ 10522321382105718080,
783
+ 11627267256141996480,
784
+ 15529471346967541696,
785
+ 13518346408563013568,
786
+ 13789150794918120160,
787
+ 18295921206246532832,
788
+ 18295921206246532831,
789
+ 18295921206246532830,
790
+ 18295921206246532829,
791
+ 2455860669762837213,
792
+ 4863652702128650973,
793
+ 12801632327299876573,
794
+ 1744041328380590813,
795
+ 6120073262166574813,
796
+ 6405439158612758749,
797
+ 6803574031023280605,
798
+ 7332859202147331613,
799
+ 16963546894591522333,
800
+ 9663176594168378909,
801
+ 17289597825083598365,
802
+ 10595846411042084381,
803
+ 11237742828835274141,
804
+ 13521168706418817693,
805
+ 13521168706418817692,
806
+ 13521168706418817691,
807
+ 3734849715481359003,
808
+ 7059636390507414171,
809
+ 8098477720558839963,
810
+ 15655798136345616539,
811
+ 9053556749004941467,
812
+ 16654286657261163675,
813
+ 2438928347775514779,
814
+ 3499568405059315099,
815
+ 3653023030263055067,
816
+ 5734097350188369115,
817
+ 1796150891847507163,
818
+ 5297480757649161435,
819
+ 6737428511491960283,
820
+ 6737428511491960282,
821
+ 7862932842544314202,
822
+ 7862932842544314201,
823
+ 12628502756558249817,
824
+ 14066101229828399961,
825
+ 6506676357252694873,
826
+ 13970725504127661913,
827
+ 16518868686146604889,
828
+ 3182138951096461145,
829
+ 3467098968746149241,
830
+ 5824296719264797561,
831
+ 6299069438895972473,
832
+ 10852046434976852601,
833
+ 12647288613099902073,
834
+ 12647288613099902072,
835
+ 12647288613099902071,
836
+ 1197601911237631095,
837
+ 2536000324662698103,
838
+ 3360806796937775095,
839
+ 4264479948225387511,
840
+ 5648548827899768823,
841
+ 12360501644630577143,
842
+ 12575105432591125687,
843
+ 15414839324730960567,
844
+ 16831236938747147191,
845
+ 17386299312283135543,
846
+ 5350865444586980919,
847
+ 5350865444586980918,
848
+ 5846325935525269238,
849
+ 8493997117802679030,
850
+ 8493997117802679029,
851
+ 15233343920734526197,
852
+ 15233343920734526196,
853
+ 15233343920734526195,
854
+ 10402336415933627123,
855
+ 13306747317797690099,
856
+ 172423886554456819,
857
+ 235093768354044755,
858
+ 274278928091726155,
859
+ 815555173724480971,
860
+ 1358224609319414219,
861
+ 4114146503939427275,
862
+ 4114146503939427274,
863
+ 4842798692646627274,
864
+ 6073989416414690762,
865
+ 6387218905996121674,
866
+ 17768348201205147210,
867
+ 213827373535185866,
868
+ 224999651994780120,
869
+ 371661416072733752,
870
+ 512788446130206536,
871
+ 637004821074715992,
872
+ 812400060704099960,
873
+ 1010280335095798584,
874
+ 2011734429044706360,
875
+ 2140189181934856648,
876
+ 2540138820600191880,
877
+ 3392225995897270792,
878
+ 5877175894797278216,
879
+ 6444215418135477128,
880
+ 9589006231051259272,
881
+ 14356492983432860040,
882
+ 2141030629822185864,
883
+ 10291095590779518344,
884
+ 10804897693298627784,
885
+ 14434227708324260040,
886
+ 17367217914520751304,
887
+ 13977268904173001928,
888
+ 13977268904173001927,
889
+ 14201142646666160295,
890
+ 471405179039873191,
891
+ 628042997769406695,
892
+ 637937620029070897,
893
+ 1346442351500603441,
894
+ 1897346492384765681,
895
+ 9569736632675697393,
896
+ 11907002184982130417,
897
+ 12603131827748757745,
898
+ 12603131827748757744,
899
+ 4203489835472029936,
900
+ 14909711131972129008,
901
+ 13703067797726363888,
902
+ 13806918162867601904,
903
+ 13806918162867601903,
904
+ 17326301439671113199,
905
+ 5855221972805893615,
906
+ 8135803613048781807,
907
+ 2978513161234545647,
908
+ 3191627864187428431,
909
+ 9956375716763635279,
910
+ 10121944667464956687,
911
+ 10564601358692830543,
912
+ 4864112268851582287,
913
+ 1358700452733969743,
914
+ 3122688545059995215,
915
+ 3184823747257893431,
916
+ 5121220522120640567,
917
+ 12551354916339080247,
918
+ 16087851325076568631,
919
+ 1567013784948739127,
920
+ 3331402000051755319,
921
+ 7108355168516743479,
922
+ 7257938556249012503,
923
+ 12395575137879764247,
924
+ 2412335946019374359,
925
+ 2527260729504634535,
926
+ 2676081941794603335,
927
+ 7509834828231417159,
928
+ 12967781164392852807,
929
+ 1122689003859337543,
930
+ 1738081118764021191,
931
+ 2471327875145313863,
932
+ 2485305357076994673,
933
+ 2599724040082483329,
934
+ 2797044173890111617,
935
+ 4123438405324609665,
936
+ 10722935475910631553,
937
+ 11539252334849213825,
938
+ 12982136989933200513,
939
+ 13063484018031778353,
940
+ 14675222137969350961,
941
+ 5509222644882821425,
942
+ 6097201728669887793,
943
+ 7561455278321717809,
944
+ 10749712198971170353,
945
+ 10749712198971170352,
946
+ 11118451738346123312,
947
+ 7070221022846707760,
948
+ 7850211155200323632,
949
+ 7850211155200323631,
950
+ 10895131596388989999,
951
+ 10895131596388989998,
952
+ 3138488928871128110,
953
+ 4628097130719688750,
954
+ 4705375842631349630,
955
+ 6004909730802699134,
956
+ 6643109853932156286,
957
+ 11767303352613623166,
958
+ 3821486401272016254,
959
+ 10931270539226161534,
960
+ 16933746660186269054,
961
+ 8230936049701139838,
962
+ 12737286266577481086,
963
+ 12737286266577481085,
964
+ 17012244533832036733,
965
+ 18180890801861117821,
966
+ 4929885343274308477,
967
+ 6744103390834400125,
968
+ 7591044803972387581,
969
+ 17676747883797326589,
970
+ 1710654960804591357,
971
+ 1826830537258005069,
972
+ 2851993802345766861,
973
+ 4014290189392070605,
974
+ 4606220398090404685,
975
+ 1527257684351138637,
976
+ 1845586286293585805,
977
+ 2523793153998591757,
978
+ 2577285662229223429,
979
+ 4381791019784655109,
980
+ 12284476459794040069,
981
+ 15622054220470734597,
982
+ 3993037773802959621,
983
+ 7001729604456251141,
984
+ 8972819200975527173,
985
+ 14045638883308540165,
986
+ 14045638883308540164,
987
+ 14106481026365820660,
988
+ 14106481026365820659,
989
+ 14106481026365820658,
990
+ 18198746188065431282,
991
+ 3897442175926695666,
992
+ 3954958411078334402,
993
+ 1714165145075705794,
994
+ 2589591962139182658,
995
+ 2682979438433656098,
996
+ 6034984240696378658,
997
+ 7395936397114999842,
998
+ 16473600213173004322,
999
+ 4687821345277505570,
1000
+ 7340934609458844706,
1001
+ 10505047417595489314,
1002
+ 16326696246595638306,
1003
+ 2479502544030752802,
1004
+ 7386151824240192546,
1005
+ 9539142366847393314,
1006
+ 1388848535703850530,
1007
+ 1953073389858627682,
1008
+ 3733296676614538594,
1009
+ 6527091105387786594,
1010
+ 6527091105387786593,
1011
+ 6527091105387786592,
1012
+ 6881586890081991520,
1013
+ 12464956017750928224,
1014
+ 677191353117629280,
1015
+ 718386929126216032,
1016
+ 1869622718624958688,
1017
+ 2054581349096977120,
1018
+ 2443112915582636128,
1019
+ 2839173060003418464,
1020
+ 5195927576969998688,
1021
+ 9826550571260129632,
1022
+ 12028162567179664736,
1023
+ 16572473553400646496,
1024
+ 2825960339134377824,
1025
+ 5149349389599241056,
1026
+ 10955254324236911456,
1027
+ 16188401955194988384,
1028
+ 2370942892202845024,
1029
+ 5846634392391080800,
1030
+ 8185994816344251744,
1031
+ 14023610316681234784,
1032
+ 4443301396598636896,
1033
+ 5930489040908629088,
1034
+ 10255336387203877984,
1035
+ 10255336387203877983,
1036
+ 11433565865794755423,
1037
+ 1170766804768340831,
1038
+ 1435283324628909023,
1039
+ 3953284687349114335,
1040
+ 4457245622288501727,
1041
+ 5469474268941294943,
1042
+ 10441150964351233375,
1043
+ 10441150964351233374,
1044
+ 11601251111242418014,
1045
+ 1763195542727753566,
1046
+ 1837728948154195678,
1047
+ 3623280471072208862,
1048
+ 4105534738515041118,
1049
+ 4241284085090525790,
1050
+ 10717726151308439134,
1051
+ 10717726151308439133,
1052
+ 4388233340257226333,
1053
+ 5626040806428601181,
1054
+ 6991682580491271517,
1055
+ 8935411939880060765,
1056
+ 14195493671570302813,
1057
+ 15864339428889189213,
1058
+ 15864339428889189212,
1059
+ 4071698720759076700,
1060
+ 5763105875874021980,
1061
+ 5763105875874021979,
1062
+ 12098150707851634267,
1063
+ 13043237370565116763,
1064
+ 3500436186422466395,
1065
+ 3506542149752768640,
1066
+ 7878312341747334784,
1067
+ 17035409291051351680,
1068
+ 6854293806235519616,
1069
+ 15999300030099154560,
1070
+ 7501375900319078016,
1071
+ 11743171231527586944,
1072
+ 12290431523090949248,
1073
+ 1234559374866811008,
1074
+ 1437766224176868480,
1075
+ 2453919035704952192,
1076
+ 2877263367353987584,
1077
+ 4595086108069975040,
1078
+ 5143798563027738944,
1079
+ 6030783298970488384,
1080
+ 18289787856074464832,
1081
+ 10040684728529526336,
1082
+ 12674337089460002880,
1083
+ 17234889232432624704,
1084
+ 16629229489473137728,
1085
+ 7712984413556028480,
1086
+ 7753663321175646488,
1087
+ 10531078925226205976,
1088
+ 14887937489276995864,
1089
+ 15503293062566559896,
1090
+ 12755487125347301528,
1091
+ 18248150475905938584,
1092
+ 5573294874704658584,
1093
+ 8073790294759450776,
1094
+ 9053494746822062744,
1095
+ 9053494746822062743,
1096
+ 12284951255820024983,
1097
+ 3712006074869777559,
1098
+ 4109618009464899415,
1099
+ 4323262633161249367,
1100
+ 7058203876470315095,
1101
+ 8290772181976291415,
1102
+ 8421869164889668647,
1103
+ 10661024789238288679,
1104
+ 436248196341287207,
1105
+ 450784978247787933,
1106
+ 1800543283741090717,
1107
+ 3099944133626130077,
1108
+ 5906692513761556125,
1109
+ 18334543399677120157,
1110
+ 1009855006753453469,
1111
+ 1598356742800940061,
1112
+ 2915969723578597149,
1113
+ 4313139855520024605,
1114
+ 10887788444399547421,
1115
+ 17049939406656320541,
1116
+ 16569748191391730717,
1117
+ 3498163336521603101,
1118
+ 17244879048921204765,
1119
+ 5712562001479069725,
1120
+ 7616053037155112477,
1121
+ 7616053037155112476,
1122
+ 10352391394980493852,
1123
+ 12451468793125596700,
1124
+ 2957476027545890332,
1125
+ 3097371398935375084,
1126
+ 3280589456226898444,
1127
+ 4608344988203708428,
1128
+ 5328517169964254732,
1129
+ 8371884177507782668,
1130
+ 11714007261664256524,
1131
+ 11714007261664256523,
1132
+ 12525986711352066955,
1133
+ 12525986711352066954,
1134
+ 14270455956347697290,
1135
+ 2670973179265179786,
1136
+ 2689591541810142914,
1137
+ 3746005967071017794,
1138
+ 4536832856672851906,
1139
+ 10544004865515061186,
1140
+ 706351010424615874,
1141
+ 1573571788235460546,
1142
+ 1581582820870426624,
1143
+ 4152940247817247744,
1144
+ 4655881756689642944,
1145
+ 5701926937485794240,
1146
+ 11026727211824601024,
1147
+ 1666168095103582144,
1148
+ 2071546857553993920,
1149
+ 2326026564669060960,
1150
+ 3755889887531971936,
1151
+ 3994454971245137984,
1152
+ 5094376675792070720,
1153
+ 6416051241726226240,
1154
+ 6973051309459127296,
1155
+ 10816889179287808512,
1156
+ 10816889179287808511,
1157
+ 14626133090305324031,
1158
+ 14626133090305324030,
1159
+ 15406527937074692990,
1160
+ 7287832884711306110,
1161
+ 14429135190850205566,
1162
+ 15833307679015403134,
1163
+ 14205279123860727422,
1164
+ 16874140183841068158,
1165
+ 17084441953362490078,
1166
+ 17084441953362490077,
1167
+ 17084441953362490076,
1168
+ 127889397896271580,
1169
+ 252450723139095900,
1170
+ 439966331021094044,
1171
+ 449847069835553148,
1172
+ 560163700073906268,
1173
+ 1103206687310252828,
1174
+ 2407368016850245660,
1175
+ 7431141481035033628,
1176
+ 9606885333568885020,
1177
+ 2534543663765920028,
1178
+ 3726098703991462428,
1179
+ 4181157371493861660,
1180
+ 6608480044305049372,
1181
+ 8191577378584003868,
1182
+ 1961290141505223964,
1183
+ 2916086701140409500,
1184
+ 4540217669290830492,
1185
+ 6053557941134170524,
1186
+ 6053557941134170523,
1187
+ 14544476210220695963,
1188
+ 16357457233179619739,
1189
+ 17517284623978993051,
1190
+ 17517284623978993050,
1191
+ 3016394599199373722,
1192
+ 3670588966335771546,
1193
+ 4924856422828138906,
1194
+ 6309613834694717594,
1195
+ 272184248183302298,
1196
+ 607330080953279642,
1197
+ 714922197231861546,
1198
+ 873698777898716106,
1199
+ 1219573271260265418,
1200
+ 1292531681867363882,
1201
+ 1594016567402486634,
1202
+ 2683576885721744618,
1203
+ 3751931850710722922,
1204
+ 521535283699659114,
1205
+ 708486852023139178,
1206
+ 1025742567306535914,
1207
+ 1446138811524226986,
1208
+ 2389699280010874026,
1209
+ 6923280280055377066,
1210
+ 8198842818068085418,
1211
+ 8198842818068085417,
1212
+ 12320291559544198313,
1213
+ 9400853668371817641,
1214
+ 14040587825164758185,
1215
+ 14040587825164758184,
1216
+ 15884176913516887208,
1217
+ 1899270425208165544,
1218
+ 4004338500207248040,
1219
+ 8979276254422019752,
1220
+ 10444890577497397928,
1221
+ 15606643062409333416,
1222
+ 8459523305353280168,
1223
+ 8862507401590009896,
1224
+ 10095970725061301544,
1225
+ 11229941160548655016,
1226
+ 12280920101255863592,
1227
+ 8081130273348791592,
1228
+ 9773011318298942760,
1229
+ 11341193956986566184,
1230
+ 1376969343288155688,
1231
+ 2881554194483245096,
1232
+ 3089740478265464552,
1233
+ 3327339550474649160,
1234
+ 3364397181626040856,
1235
+ 4893221168889581848,
1236
+ 3437775516054421784,
1237
+ 8896002838824390936,
1238
+ 2686469195368943896,
1239
+ 4669936156622788888,
1240
+ 6055702296815669016,
1241
+ 11724632063987535640,
1242
+ 13109529812107704856,
1243
+ 12433935199602995736,
1244
+ 15301325603370840600,
1245
+ 17475976749011699480,
1246
+ 17866445371019528536,
1247
+ 3625267521999371096,
1248
+ 4258706793516922072,
1249
+ 4765357880920806040,
1250
+ 5863817499257608088,
1251
+ 5863817499257608087,
1252
+ 17088763835666046871,
1253
+ 17088763835666046870,
1254
+ 17680901380690752278,
1255
+ 18292610953008499094,
1256
+ 11148215825253511574,
1257
+ 7816817600800979350,
1258
+ 9114247444007469206,
1259
+ 1511388835463411862,
1260
+ 2719218459272579990,
1261
+ 7844460822910522262,
1262
+ 12975515492048395158,
1263
+ 6927710224568970134,
1264
+ 3848479706511250326,
1265
+ 3969950389959337510,
1266
+ 4584901265357836070,
1267
+ 6283991776912298534,
1268
+ 11045952358039764518,
1269
+ 15855504234265897510,
1270
+ 4306872465958984230,
1271
+ 5201815689055328422,
1272
+ 6111920562831923878,
1273
+ 6568196694870762214,
1274
+ 8571158140569352678,
1275
+ 10445048960766348262,
1276
+ 13470277966276812262,
1277
+ 3786135201332197862,
1278
+ 9822189696817861094,
1279
+ 9822189696817861093,
1280
+ 11644156323941638373,
1281
+ 11754059577782094037,
1282
+ 11366906098552948949,
1283
+ 2118095597433926869,
1284
+ 5265636449667624661,
1285
+ 5603343442595632789,
1286
+ 7079599552202442133,
1287
+ 9946140429763868053,
1288
+ 9027435279280299413,
1289
+ 9027435279280299412,
1290
+ 9445610049022018004,
1291
+ 11910097446707630036,
1292
+ 11910097446707630035,
1293
+ 11910097446707630034,
1294
+ 255798921602212818,
1295
+ 582875590123583762,
1296
+ 654432092657539162,
1297
+ 941825204317154138,
1298
+ 969197382706799602,
1299
+ 2101956294464611570,
1300
+ 3016996606868097650,
1301
+ 3745172501298307442,
1302
+ 11296382027599154546,
1303
+ 2216566037180491122,
1304
+ 10587862906952171890,
1305
+ 10587862906952171889,
1306
+ 10657868832013220185,
1307
+ 15524148418710711641,
1308
+ 3392026838324267353,
1309
+ 16497004712743807321,
1310
+ 16497004712743807320,
1311
+ 6705634318082896216,
1312
+ 7841262213936617688,
1313
+ 11354720427057428696,
1314
+ 11794016347989165912,
1315
+ 12882298425639143128,
1316
+ 15065232187980461528,
1317
+ 7360973375854243288,
1318
+ 10331666052933145048,
1319
+ 331022285745113560,
1320
+ 412410177905431784,
1321
+ 654158848034943848,
1322
+ 1068648528843927976,
1323
+ 4619486751907519400,
1324
+ 5986393043440491176,
1325
+ 6163231393693450696,
1326
+ 6226638632947000752,
1327
+ 8182803978756988592,
1328
+ 8895079814176428080,
1329
+ 12521664342870848048,
1330
+ 13794982234146390320,
1331
+ 17375865019722643760,
1332
+ 6954619729724510512,
1333
+ 14430893314247995696,
1334
+ 16167225781188536880,
1335
+ 16167225781188536879,
1336
+ 18033100615745940271,
1337
+ 18033100615745940270,
1338
+ 5166133196801984302,
1339
+ 13332115378936656686,
1340
+ 15400649676237426734,
1341
+ 10997831161920880686,
1342
+ 10997831161920880685,
1343
+ 13900956262600556589,
1344
+ 4442348829623821357,
1345
+ 6127194445592804141,
1346
+ 6538002989186488813,
1347
+ 12386034965187148269,
1348
+ 997030431326847469,
1349
+ 1003306887430542907,
1350
+ 1690378565878190395,
1351
+ 3003020181478337083,
1352
+ 3074328476100917771,
1353
+ 3236902413453164907,
1354
+ 3971277471748861803,
1355
+ 4255240429905547467,
1356
+ 4519426003522297483,
1357
+ 5865413147941299851,
1358
+ 7319554201538699403,
1359
+ 8451400965643207819,
1360
+ 9834667420713259147,
1361
+ 11296956657983972491,
1362
+ 8599624391656256651,
1363
+ 9922778480456777867,
1364
+ 9922778480456777866,
1365
+ 13859994480388296842,
1366
+ 13859994480388296841,
1367
+ 14474714474045948169,
1368
+ 14474714474045948168,
1369
+ 308875542952938248,
1370
+ 404523171942102200,
1371
+ 410070381125591131,
1372
+ 425260101746810739,
1373
+ 600586393441650515,
1374
+ 801442085161952243,
1375
+ 914610083719041603,
1376
+ 1608627392804901059,
1377
+ 1932062379091445699,
1378
+ 3769647948093315267,
1379
+ 4679791407024666947,
1380
+ 6229040244644205123,
1381
+ 7633030891562655299,
1382
+ 10308588904585689155,
1383
+ 10308588904585689154,
1384
+ 11207595291438600898,
1385
+ 2769168709690757826,
1386
+ 4789340567267173826,
1387
+ 7104429299009222594,
1388
+ 7104429299009222593,
1389
+ 11542920603218105281,
1390
+ 8709531402246501313,
1391
+ 4241164543833056193,
1392
+ 4583181457551390913,
1393
+ 9036754188274833601,
1394
+ 11239752604911742913,
1395
+ 11239752604911742912,
1396
+ 12695432009250846400,
1397
+ 12821757634110207024,
1398
+ 501680895386929200,
1399
+ 843927800961977968,
1400
+ 925576475388633440,
1401
+ 1509171386611760736,
1402
+ 1544348339008032076,
1403
+ 1766732708154041516,
1404
+ 2782266194809203500,
1405
+ 4033111405577832492,
1406
+ 9502072876975814700,
1407
+ 12925150649490378284,
1408
+ 598115884705507884,
1409
+ 1156471006175156204,
1410
+ 1176427771173714956,
1411
+ 2202535343653263372,
1412
+ 2784182828086505996,
1413
+ 3038830279116726796,
1414
+ 5046909343961458188,
1415
+ 11609062262454383116,
1416
+ 14846082047594833420,
1417
+ 15952546044482276492,
1418
+ 7145632425167846540,
1419
+ 7629776477658622476,
1420
+ 11123678116183404556,
1421
+ 14954971249349444620,
1422
+ 684017940032738316,
1423
+ 913920805378072524,
1424
+ 1720904179991951436,
1425
+ 1778359420320291884,
1426
+ 1787356367637573271,
1427
+ 2670009146636139159,
1428
+ 3067346807336122839,
1429
+ 3922551525962438231,
1430
+ 14235489780412950103,
1431
+ 9501770271444121175,
1432
+ 10221580565669939415,
1433
+ 11861197078883820247,
1434
+ 2439222362156999383,
1435
+ 2748558996220749207,
1436
+ 5922781385036829079,
1437
+ 12469276121924187543,
1438
+ 16261091325936184215,
1439
+ 1065302461586130839,
1440
+ 1313194656961708183,
1441
+ 4258499049233723543,
1442
+ 6150849355889500567,
1443
+ 7774774181373209751,
1444
+ 8386447789819160343,
1445
+ 8390698769112166150,
1446
+ 11233626514830742790,
1447
+ 11566095727518764102,
1448
+ 11789919516503042982,
1449
+ 11789919516503042981,
1450
+ 2844853441099072421,
1451
+ 8430625674097104805,
1452
+ 8480202722222333421,
1453
+ 17732091128504853997,
1454
+ 17732091128504853996,
1455
+ 17732091128504853995,
1456
+ 4414796066977755627,
1457
+ 4414796066977755626,
1458
+ 7451487185131929066,
1459
+ 8555891019940854250,
1460
+ 11593992013280065002,
1461
+ 4502633820883023338,
1462
+ 12979650325278875114,
1463
+ 15954703408495532522,
1464
+ 3859618228383229418,
1465
+ 14311189686992346602,
1466
+ 4987730461245840874,
1467
+ 5198082454964545450,
1468
+ 5327507181074753274,
1469
+ 5327507181074753273,
1470
+ 5327507181074753272,
1471
+ 10468625485069993720,
1472
+ 17275100207696341752,
1473
+ 17275100207696341751,
1474
+ 17778797259624325751,
1475
+ 1997984705122499191,
1476
+ 2099971728119725447,
1477
+ 2224378042729169959,
1478
+ 4327612543524775975,
1479
+ 4812435553609650599,
1480
+ 5962745053204333479,
1481
+ 8325577189824028583,
1482
+ 9978972728687877287,
1483
+ 10077806047741341911,
1484
+ 12202317357952467415,
1485
+ 1352910984421435863,
1486
+ 2338734967841443031,
1487
+ 2483359055622301271,
1488
+ 5922378700196194391,
1489
+ 6328551558072674903,
1490
+ 10424031416437693015,
1491
+ 10698781916674329879,
1492
+ 17169162390675406103,
1493
+ 17368133612914365751,
1494
+ 3083368016455255863,
1495
+ 4832066269266587191,
1496
+ 7300872927079646775,
1497
+ 7300872927079646774,
1498
+ 14750905298401877558,
1499
+ 15049730970460232246,
1500
+ 15049730970460232245,
1501
+ 16661469099975841333,
1502
+ 16661469099975841332,
1503
+ 3403833985131825716,
1504
+ 3422529930114549580,
1505
+ 3482057606134175868,
1506
+ 4936449609935147132,
1507
+ 5391218451900543228,
1508
+ 8850335501755297532,
1509
+ 8850335501755297531,
1510
+ 14080581041774116603,
1511
+ 17640448369345624827,
1512
+ 3633710964280852219,
1513
+ 9088599404451745531,
1514
+ 12008797913545080571,
1515
+ 12868687079378866939,
1516
+ 14424365779403309563,
1517
+ 15499639983597769467,
1518
+ 15499639983597769466,
1519
+ 3136919987983454970,
1520
+ 3645489439360431290,
1521
+ 4529474371207286586,
1522
+ 4806640043543531546,
1523
+ 5411160074265142554,
1524
+ 7085377384168862234,
1525
+ 17802468599890317850,
1526
+ 2424684770854237210,
1527
+ 2907974234933496282,
1528
+ 10751197726656609754,
1529
+ 10751197726656609753,
1530
+ 14414888153423757785,
1531
+ 14636321645467660665,
1532
+ 1786355786501504377,
1533
+ 4127333380259304825,
1534
+ 4929941538268599417,
1535
+ 12414952944004203641,
1536
+ 13670081667276227705,
1537
+ 2120754810724071545,
1538
+ 3179329737692592377,
1539
+ 6620442040589215993,
1540
+ 8490623194097208313,
1541
+ 11695171555897624057,
1542
+ 13177275465083618297,
1543
+ 211546157117899769,
1544
+ 320749467525961337,
1545
+ 349213088045767085,
1546
+ 412131893202623101,
1547
+ 506856187678209373,
1548
+ 666784164608719357,
1549
+ 1303371303855810813,
1550
+ 1930378421758479229,
1551
+ 2621188798574144893,
1552
+ 7600594111377204605,
1553
+ 12674460081327185277,
1554
+ 15377802127551755133,
1555
+ 3006242324990722941,
1556
+ 5765794533254929789,
1557
+ 7335224966942379389,
1558
+ 9623910184685666685,
1559
+ 9889355523019821437,
1560
+ 14758752567485514109,
1561
+ 14758752567485514108,
1562
+ 4019865820151266684,
1563
+ 11601797397321334140,
1564
+ 1869227528538967420,
1565
+ 1881779672627538978,
1566
+ 3151804677483153442,
1567
+ 4133104632852513186,
1568
+ 5673195104985093794,
1569
+ 5734861036930332370,
1570
+ 7222044071019309778,
1571
+ 13459016231996628690,
1572
+ 13507261253857721130,
1573
+ 15706222877530619434,
1574
+ 1346331933656094250,
1575
+ 2637946847932604458,
1576
+ 3543506397364355754,
1577
+ 12055956501713318570,
1578
+ 16891105159317728938,
1579
+ 17246851038874396330,
1580
+ 7482836825459697322,
1581
+ 9465180803964927402,
1582
+ 10007800834391580970,
1583
+ 10007800834391580969,
1584
+ 1581693141309634857,
1585
+ 2166897738768590121,
1586
+ 2743733508801417513,
1587
+ 3808062288019684905,
1588
+ 7165397493723556905,
1589
+ 7196100967729997273,
1590
+ 13705246706122409433,
1591
+ 15739647594445283033,
1592
+ 15739647594445283032,
1593
+ 15739647594445283031,
1594
+ 15739647594445283030,
1595
+ 2714196810552409814,
1596
+ 2932290006255658006,
1597
+ 4772786156303073302,
1598
+ 6390622992451065110,
1599
+ 7068190313846733846,
1600
+ 8587742380791638806,
1601
+ 8587742380791638805,
1602
+ 10326175651737335061,
1603
+ 14325120451967594261,
1604
+ 16225511881989943317,
1605
+ 16622105063286023765,
1606
+ 2593052609205260373,
1607
+ 2997012664878212437,
1608
+ 3393813252265404053,
1609
+ 6427403231910434965,
1610
+ 5168247330128691349,
1611
+ 12047491644632076437,
1612
+ 1670969891992164501,
1613
+ 3960144567613356437,
1614
+ 10107562045706182037,
1615
+ 15359490314407223701,
1616
+ 644200674478206357,
1617
+ 741246148779854245,
1618
+ 1163957745478030181,
1619
+ 6408972696640758629,
1620
+ 8133844190775216741,
1621
+ 8133844190775216740,
1622
+ 12081498339891932260,
1623
+ 18343369839292402788,
1624
+ 232489412116415396,
1625
+ 978374700451243428,
1626
+ 1927710544952613540,
1627
+ 3303174642789874340,
1628
+ 9693435142129229476,
1629
+ 8832448830115059364,
1630
+ 17368039572107397796,
1631
+ 10102480269991199396,
1632
+ 5551937437376123556,
1633
+ 8960430093689752228,
1634
+ 10646289463540592036,
1635
+ 10860742166713500580,
1636
+ 12077160696708896676,
1637
+ 12744119942175153060,
1638
+ 14907604740084203172,
1639
+ 8649887888469272228,
1640
+ 16617867066405959332,
1641
+ 5323522536854555300,
1642
+ 7127381856165292196,
1643
+ 8111022323637701284,
1644
+ 9279382060067231652,
1645
+ 1859151779839936420,
1646
+ 2305484865548678500,
1647
+ 2356392258033422404,
1648
+ 2577927251842197668,
1649
+ 6275799879767040164,
1650
+ 6924685622465520932,
1651
+ 17430591832560516388,
1652
+ 2247737942245957924,
1653
+ 2663982786741361316,
1654
+ 4380330254404428452,
1655
+ 4758128829898996452,
1656
+ 10053967586463790820,
1657
+ 10492127106585750308,
1658
+ 11421197087346901924,
1659
+ 13928905398154182052,
1660
+ 6320151068089011620,
1661
+ 8494088921686834852,
1662
+ 10492404496671416996,
1663
+ 11770454605043346340,
1664
+ 11770454605043346339,
1665
+ 15223109380615005603,
1666
+ 15223109380615005602,
1667
+ 9288930292358163874,
1668
+ 9288930292358163873,
1669
+ 11726653682520058785,
1670
+ 7321875519128032161,
1671
+ 7321875519128032160,
1672
+ 13301696272522470304,
1673
+ 10095356829886759840,
1674
+ 11590790975408607136,
1675
+ 11590790975408607135,
1676
+ 10251447202807459743,
1677
+ 17428114707010782111,
1678
+ 3232228983672833951,
1679
+ 8770673548489468831,
1680
+ 807747085469232031,
1681
+ 4735243734526799263,
1682
+ 7562856761840869279,
1683
+ 9743729014510387871,
1684
+ 14558973271077953183,
1685
+ 401258500005249183,
1686
+ 524250169130960847,
1687
+ 1555012228561607631,
1688
+ 4000986154528494031,
1689
+ 6358303210209832911,
1690
+ 5298727189516636111,
1691
+ 5361963089431269567,
1692
+ 5361963089431269566,
1693
+ 6629695073173940670,
1694
+ 3435743172048714174,
1695
+ 5689623086085965246,
1696
+ 6029950830251935422,
1697
+ 9424306115056016574,
1698
+ 16448660604637728958,
1699
+ 4941556264197980350,
1700
+ 6524007462261048766,
1701
+ 7638470506911088190,
1702
+ 7638470506911088189,
1703
+ 7638470506911088188,
1704
+ 8856308810634172732,
1705
+ 14330603763862833468,
1706
+ 7043708083563106620,
1707
+ 8932319076854850108,
1708
+ 9301924881839394876,
1709
+ 11138001737289404988,
1710
+ 921640518520305212,
1711
+ 1794724617224308412,
1712
+ 4152066157713517756,
1713
+ 10953503744565702844,
1714
+ 10953503744565702843,
1715
+ 11820032308391020987,
1716
+ 14655286063716152763,
1717
+ 17794332976522127291,
1718
+ 14146006795330742203,
1719
+ 15747354331172679867,
1720
+ 15685435999577026747,
1721
+ 18016708702998273211,
1722
+ 10585519808871668923,
1723
+ 12482290391525052859,
1724
+ 11955677820789885371,
1725
+ 17174672636861415867,
1726
+ 15029372885326199227,
1727
+ 1222465468443808187,
1728
+ 8702421068484227515,
1729
+ 11387021710996459451,
1730
+ 13700551950374941115,
1731
+ 8387941606501577147,
1732
+ 8875606637956156795,
1733
+ 13371549380212185979,
1734
+ 14002991779568213371,
1735
+ 3568478738044616059,
1736
+ 9070287937134341499,
1737
+ 15632100548063213947,
1738
+ 15632100548063213946,
1739
+ 442866334230488442,
1740
+ 558554158313330442,
1741
+ 1302996691653858698,
1742
+ 3546747871275822986,
1743
+ 3680926818587527898,
1744
+ 5306784414155800282,
1745
+ 14199949967880532698,
1746
+ 14199949967880532697,
1747
+ 1404791177162242777,
1748
+ 2235507341550873433,
1749
+ 6268617819429951833,
1750
+ 9401884506653902169,
1751
+ 2034999793394283865,
1752
+ 2252181457612260633,
1753
+ 2778060460671599705,
1754
+ 6042849745129092185,
1755
+ 13565119951965832281,
1756
+ 14754465551753225561,
1757
+ 14754465551753225560,
1758
+ 13681967506433008984,
1759
+ 17665070055383803224,
1760
+ 4879272269194343768,
1761
+ 6136684528084950872,
1762
+ 8538443186898749272,
1763
+ 8538443186898749271,
1764
+ 10768029892441278551,
1765
+ 11482115893184207063,
1766
+ 14265006200089748695,
1767
+ 14452664656623861463,
1768
+ 17287533201914998487,
1769
+ 1371745446464836311,
1770
+ 2133558637981044183,
1771
+ 2153681521472870951,
1772
+ 2503513951808293735,
1773
+ 2917882133442156391,
1774
+ 9867069420785436519,
1775
+ 958781497084577639,
1776
+ 1201104507161837767,
1777
+ 2898466368431051975,
1778
+ 4221334129439839431,
1779
+ 4707085239991906247,
1780
+ 8618506178202607559,
1781
+ 4422695886937511879,
1782
+ 7519849872633012167,
1783
+ 13280866895139761095,
1784
+ 13280866895139761094,
1785
+ 14252825993772534470,
1786
+ 15699213879152489670,
1787
+ 259818969537988294,
1788
+ 511640037076557734,
1789
+ 1226614568936444198,
1790
+ 2046068174445526182,
1791
+ 3052704686056933926,
1792
+ 3378583527545082022,
1793
+ 5063977342503669414,
1794
+ 8073745120997007526,
1795
+ 8565313973200271910,
1796
+ 10247639060068986662,
1797
+ 11146502187011488934,
1798
+ 10843419173568486566,
1799
+ 13831780086668959910,
1800
+ 15140847448621253798,
1801
+ 17114858490777360294,
1802
+ 17291232970866818438,
1803
+ 17291232970866818437,
1804
+ 17291232970866818436,
1805
+ 84567754716009604,
1806
+ 494098864300076484,
1807
+ 590127124379434468,
1808
+ 3659946587763744228,
1809
+ 4020206153039663012,
1810
+ 4615495522167791780,
1811
+ 6440205470323309220,
1812
+ 7605276889695630756,
1813
+ 9327918279838982564,
1814
+ 10516949827751674020,
1815
+ 10516949827751674019,
1816
+ 6838102259936397475,
1817
+ 7141596446158566819,
1818
+ 13866019963326972323,
1819
+ 14059243927043663683,
1820
+ 16348380432772085315,
1821
+ 16348380432772085314,
1822
+ 16348380432772085313,
1823
+ 6379674255943484993,
1824
+ 12807658199701023297,
1825
+ 12807658199701023296,
1826
+ 12807658199701023295,
1827
+ 12807658199701023294,
1828
+ 7062373452694514238,
1829
+ 12205080988497083966,
1830
+ 14480587047806553918,
1831
+ 14738908233938336414,
1832
+ 14738908233938336413,
1833
+ 17319702710730351773,
1834
+ 581855396173792669,
1835
+ 695972944588200077,
1836
+ 1387453093228731405,
1837
+ 1987138076185600909,
1838
+ 12729853818227628941,
1839
+ 14695227127176358541,
1840
+ 16409664451348105357,
1841
+ 1873210416656525453,
1842
+ 3433410203089390477,
1843
+ 4337437976290478861,
1844
+ 7370363075372461325,
1845
+ 7593314921649340365,
1846
+ 7593314921649340364,
1847
+ 10287212949426003404,
1848
+ 15507012771307402700,
1849
+ 15958276500454567692,
1850
+ 4688861721972093708,
1851
+ 4881664833011587244,
1852
+ 10772108742587263148,
1853
+ 12122071793340881068,
1854
+ 4624346157141487788,
1855
+ 5173397283181926764,
1856
+ 6280408896845763948,
1857
+ 6280408896845763947,
1858
+ 8627670315674580843,
1859
+ 8627670315674580842,
1860
+ 9075015608831656106,
1861
+ 4879145629315989674,
1862
+ 5470177807681659562,
1863
+ 5550615217731229178,
1864
+ 6284954147790471034,
1865
+ 10090854299603017082,
1866
+ 16022121977386978682,
1867
+ 10157003382316303738,
1868
+ 16980148826027841914,
1869
+ 3720994189353975162,
1870
+ 6707816169288890234,
1871
+ 16078575165736353658,
1872
+ 10867882734548393850,
1873
+ 11934292695110172410,
1874
+ 12648990085327884282,
1875
+ 7466455601212620794,
1876
+ 9078219704935058682,
1877
+ 15344071957755628794,
1878
+ 17671255303162470138,
1879
+ 6374870092487508730,
1880
+ 12311035521920403194,
1881
+ 12805364828266044922,
1882
+ 18242178189049358842,
1883
+ 18242178189049358841,
1884
+ 18242178189049358840,
1885
+ 18242178189049358839,
1886
+ 1124327567097281527,
1887
+ 2207147541150420215,
1888
+ 3741186621196412407,
1889
+ 3815043427441784055,
1890
+ 3855459055723799791,
1891
+ 4840550141405099631,
1892
+ 7197647170333111407,
1893
+ 8677875041157155183,
1894
+ 9122531585467108783,
1895
+ 5221595673768396207,
1896
+ 6594378754293576879,
1897
+ 7253768281383678767,
1898
+ 13021953075503924015,
1899
+ 15900454656763540271,
1900
+ 17356042144280264495,
1901
+ 18004247052927964975,
1902
+ 4257688612621039407,
1903
+ 4489876300225366639,
1904
+ 5160557940591182191,
1905
+ 9740413772972283759,
1906
+ 9740413772972283758,
1907
+ 13386784365896071534,
1908
+ 8632156008570515822,
1909
+ 9304088102779316078,
1910
+ 17430163026129986414,
1911
+ 17430163026129986413,
1912
+ 4595306224968714093,
1913
+ 5798327345475387245,
1914
+ 6648538621662849773,
1915
+ 12261321498280723181,
1916
+ 5508452710882376429,
1917
+ 8423421480748001005,
1918
+ 11039789597233989357,
1919
+ 12499993227407187693,
1920
+ 13391457797731906157,
1921
+ 16509448350931092589,
1922
+ 478833824647426157,
1923
+ 718015444867204781,
1924
+ 737542288563961269,
1925
+ 1700086806348677301,
1926
+ 2347978654546164533,
1927
+ 2579610440953417909,
1928
+ 3974945285386880949,
1929
+ 15107213213016868789,
1930
+ 149851701645731765,
1931
+ 215813321248023917,
1932
+ 246470759156772937,
1933
+ 343795938278501081,
1934
+ 371257717828579285,
1935
+ 403074429616759721,
1936
+ 1078946744346352425,
1937
+ 1512238714692172713,
1938
+ 2125876902257547177,
1939
+ 2715321478029492649,
1940
+ 3512508678610949929,
1941
+ 3514389518647856275,
1942
+ 9456511133309198483,
1943
+ 13153633325500286099,
1944
+ 18235477270701114515,
1945
+ 7073402308713625747,
1946
+ 12703993286564534419,
1947
+ 13319365118764914707,
1948
+ 18360084410494849043,
1949
+ 18360084410494849042,
1950
+ 7807800011072812050,
1951
+ 12315637604711111186,
1952
+ 12635791962427379154,
1953
+ 1602387724814269906,
1954
+ 1719845537303410018,
1955
+ 4107722057880799586,
1956
+ 9044027502225527138,
1957
+ 12810022681072149346,
1958
+ 6163467844557138786,
1959
+ 7657064255563407458,
1960
+ 18357925597176610914,
1961
+ 14815116201221431394,
1962
+ 1304898406574300258,
1963
+ 1919427839577249890,
1964
+ 3283469148025780322,
1965
+ 11655222440183109730,
1966
+ 5728065491134275682,
1967
+ 7217777316056643426,
1968
+ 12656760341255337826,
1969
+ 7843558366485413730,
1970
+ 8242662580150457250,
1971
+ 11986166157202762658,
1972
+ 1291706733552774050,
1973
+ 4172210926780488610,
1974
+ 6681825956635170722,
1975
+ 7540832353365891362,
1976
+ 8383600753398905250,
1977
+ 8519493645581589874,
1978
+ 9808501073647890290,
1979
+ 12469537751359050610,
1980
+ 12834667454489574514,
1981
+ 12834667454489574513,
1982
+ 4942705830984414321,
1983
+ 5642113917208456561,
1984
+ 8242505876032958321,
1985
+ 8503330049093268561,
1986
+ 8584486142693059729,
1987
+ 8584486142693059728,
1988
+ 11127932761356047504,
1989
+ 15119290196144686736,
1990
+ 6855513181771169424,
1991
+ 6855513181771169423,
1992
+ 10960823355906153103,
1993
+ 14860350724431727759,
1994
+ 11429338504085468303,
1995
+ 11429338504085468302,
1996
+ 13791733421747052174,
1997
+ 16716635464672646798,
1998
+ 2399815970303436430,
1999
+ 7120672792328101518,
2000
+ 8267059781891539854,
2001
+ 8386609570171070638,
2002
+ 9700364998640324526,
2003
+ 6354079465464573870,
2004
+ 6929635712325204206,
2005
+ 1735533337817268462,
2006
+ 8555831323013353710,
2007
+ 9062745020961657326,
2008
+ 10112075018622933614,
2009
+ 4342785169459827310,
2010
+ 5002188901785258478,
2011
+ 5698396090230750958,
2012
+ 10601339481650139886,
2013
+ 10601339481650139885,
2014
+ 12099505708495607277,
2015
+ 1454765363633301997,
2016
+ 1674577906236206573,
2017
+ 2192090564544927277,
2018
+ 3877067180281275437,
2019
+ 18185385993681859629,
2020
+ 18185385993681859628,
2021
+ 8408334277107132460,
2022
+ 9144615287624441900,
2023
+ 12232465038946418732,
2024
+ 9273447683742535724,
2025
+ 10228546324403593900,
2026
+ 11083256510429689772,
2027
+ 18334768575713005484,
2028
+ 7251026204274046892,
2029
+ 8484906119836330924,
2030
+ 9210411474436193708,
2031
+ 12521294371941167532,
2032
+ 12521294371941167531,
2033
+ 610004857444905387,
2034
+ 913191495210999723,
2035
+ 1030272043811550747,
2036
+ 1110236932160471803,
2037
+ 1999645308739240315,
2038
+ 2086573428118404683,
2039
+ 5843347887524072011,
2040
+ 9243584807752930379,
2041
+ 5253729860862665803,
2042
+ 5895785554990510155,
2043
+ 5945276465452839731,
2044
+ 7810173142717594675,
2045
+ 8334823575502698419,
2046
+ 11129257463275462067,
2047
+ 17056751797513252275,
2048
+ 6868942910473446835,
2049
+ 8877663658463558835,
2050
+ 8877663658463558834,
2051
+ 10652687822555051954,
2052
+ 12007590165892691378,
2053
+ 15840171347272206770,
2054
+ 15840171347272206769,
2055
+ 15840171347272206768,
2056
+ 2276554202225405360,
2057
+ 3178271644043407024,
2058
+ 4232280875750859440,
2059
+ 4321245930697321408,
2060
+ 17289467543257770944,
2061
+ 1764930096972730304,
2062
+ 2381172034405432640,
2063
+ 2455777229121811648,
2064
+ 4947511763546844864,
2065
+ 6222279714182143424,
2066
+ 8294028695873774016,
2067
+ 8353994993758897808,
2068
+ 8591965286868291856,
2069
+ 14579527372061752592,
2070
+ 14579527372061752591,
2071
+ 16357124301157118991,
2072
+ 4251893070815504399,
2073
+ 4485162970698688303,
2074
+ 4917041968843694319,
2075
+ 7306947182534098671,
2076
+ 8613308793411774703,
2077
+ 8613308793411774702,
2078
+ 17036904177263666414,
2079
+ 2800582427354497774,
2080
+ 3509775508072424430,
2081
+ 4969801852504232942,
2082
+ 5598975449871570030,
2083
+ 8902647067988073070,
2084
+ 10636369429694444142,
2085
+ 10636369429694444141,
2086
+ 11096051293948462957,
2087
+ 16634642709528783725,
2088
+ 6309850189102255981,
2089
+ 10304687641695390573,
2090
+ 12332839039226269805,
2091
+ 1541175507479416941,
2092
+ 3581567296998624877,
2093
+ 6823304254315797613,
2094
+ 7959700875596860269,
2095
+ 16333204252639423341,
2096
+ 9732985721335116653,
2097
+ 14634493685928651629,
2098
+ 14634493685928651628,
2099
+ 993087284848275308,
2100
+ 1052442086119711892,
2101
+ 1257368203592663412,
2102
+ 1345538642524794484,
2103
+ 2174028316317399028,
2104
+ 2646045148123416884,
2105
+ 2781990910824851204,
2106
+ 3749112370258388868,
2107
+ 5017401491699856516,
2108
+ 5299852675429381028,
2109
+ 6222830143629134884,
2110
+ 7071367287056310948,
2111
+ 7071367287056310947,
2112
+ 10874837926877909667,
2113
+ 14657123343645860515,
2114
+ 14657123343645860514,
2115
+ 15955016321180192674,
2116
+ 2658971102809510818,
2117
+ 4026596097454930082,
2118
+ 4559023457166986978,
2119
+ 14946636852028704482,
2120
+ 17225779003482939618,
2121
+ 7161163407777309922,
2122
+ 8353682879190542050,
2123
+ 8353682879190542049,
2124
+ 8353682879190542048,
2125
+ 9940712480064018912,
2126
+ 11479367098290396640,
2127
+ 15058563452332707296,
2128
+ 15429348797611683872,
2129
+ 10296550067847241760,
2130
+ 13251758678795606560,
2131
+ 853733735716700704,
2132
+ 1918344670327310752,
2133
+ 3564054056043504800,
2134
+ 3817590970594028384,
2135
+ 4405349867917873888,
2136
+ 13679578553297138400,
2137
+ 17377660510317205728,
2138
+ 2735899076803714784,
2139
+ 3091079997032393888,
2140
+ 4467682783310698912,
2141
+ 4467682783310698911,
2142
+ 4636778876404072287,
2143
+ 11209752763783374687,
2144
+ 14747242783137576287,
2145
+ 7871910813479572831,
2146
+ 9199789787130009951,
2147
+ 14939702503488289119,
2148
+ 18004343438988200287,
2149
+ 6150332406255846751,
2150
+ 6461455146060506975,
2151
+ 10611581083436961119,
2152
+ 14447067821038211423,
2153
+ 14447067821038211422,
2154
+ 7417783215667159390,
2155
+ 9489682585806688094,
2156
+ 12295443428572403038,
2157
+ 8452515910179614046,
2158
+ 8452515910179614045,
2159
+ 8452515910179614044,
2160
+ 11103636693569337180,
2161
+ 16125316559694421852,
2162
+ 325984463423881564,
2163
+ 663572886879408860,
2164
+ 2204221409364112092,
2165
+ 2883618248031593564,
2166
+ 3535517432033449692,
2167
+ 3583752879821638884,
2168
+ 5087769015721161188,
2169
+ 5216908205732824292,
2170
+ 5267822082021660372,
2171
+ 5267822082021660371,
2172
+ 5973556082137549779,
2173
+ 10127135586151408083,
2174
+ 15132238521457916371,
2175
+ 636216646173196243,
2176
+ 1416222438070155219,
2177
+ 1480606782568549883,
2178
+ 2485172544837393403,
2179
+ 2913126202474447611,
2180
+ 3708071420352327675,
2181
+ 7170218502226462203,
2182
+ 11670554480557308411,
2183
+ 11896977379484717051,
2184
+ 2083558176980763643,
2185
+ 5200211012084422139,
2186
+ 6722687888964775419,
2187
+ 263860744537800187,
2188
+ 356626634200162043,
2189
+ 374995728060726799,
2190
+ 562626396649581455,
2191
+ 668090710731765631,
2192
+ 1314920694865210367,
2193
+ 1565971694795356799,
2194
+ 1626801138371177143,
2195
+ 3050399631543600311,
2196
+ 3252588417982718999,
2197
+ 3943649882267154711,
2198
+ 5690223247184898327,
2199
+ 10500972580993406231,
2200
+ 16587979528985333015,
2201
+ 16587979528985333014,
2202
+ 8435841878647835926,
2203
+ 8842759330760244694,
2204
+ 6900278005880804822,
2205
+ 6913177521579022276,
2206
+ 17403930227288176580,
2207
+ 1582598453877586372,
2208
+ 1767622453382162468,
2209
+ 4561632501269398052,
2210
+ 12074023931716663844,
2211
+ 13462712387529293604,
2212
+ 3390174784045954852,
2213
+ 4432628136775169316,
2214
+ 4942173446888271140,
2215
+ 6840248833121737252,
2216
+ 8471563730871628580,
2217
+ 8584088084519716836,
2218
+ 13055320889882013156,
2219
+ 17488325539115324388,
2220
+ 17488325539115324387,
2221
+ 193141193810237155,
2222
+ 217073021245487651,
2223
+ 246357510466964667,
2224
+ 375761730363109387,
2225
+ 1691334113702703627,
2226
+ 3134845592284406795,
2227
+ 3940496189983812107,
2228
+ 4086215182968352939,
2229
+ 4325590533965633931,
2230
+ 7343354270724715915,
2231
+ 7973055256243169163,
2232
+ 8318138276740459659,
2233
+ 8604211150130435019,
2234
+ 11442842369059280331,
2235
+ 12359841103181922507,
2236
+ 3490773153013303499,
2237
+ 5528336751933505227,
2238
+ 6540783476039867467,
2239
+ 6540783476039867466,
2240
+ 7804674356539685450,
2241
+ 11895908996407579722,
2242
+ 12826223092255614154,
2243
+ 13382695616004497738,
2244
+ 14815700757333594186,
2245
+ 16439951890618587722,
2246
+ 16439951890618587721,
2247
+ 11693579203267162697,
2248
+ 7218948442838297161,
2249
+ 16022324428703904329,
2250
+ 16022324428703904328,
2251
+ 16022324428703904327,
2252
+ 2779978180900834887,
2253
+ 2887174734074284759,
2254
+ 3197367898534435991,
2255
+ 4962165147331154583,
2256
+ 8063214183669008535,
2257
+ 9395576161783525527,
2258
+ 9395576161783525526,
2259
+ 10393682632565385238,
2260
+ 15604714973635722262,
2261
+ 16867294769871843862,
2262
+ 3000940605405179926,
2263
+ 3936818220251076118,
2264
+ 6620908367456711702,
2265
+ 7301930289720303126,
2266
+ 10229665190399330838,
2267
+ 10229665190399330837,
2268
+ 12549601405140259861,
2269
+ 10040344842128778261,
2270
+ 13159132507357842453,
2271
+ 321189401840807957,
2272
+ 333910489905004547,
2273
+ 339550278152555729,
2274
+ 389902709000592145,
2275
+ 407146608122730327,
2276
+ 3135218545626629463,
2277
+ 3270900916826941895,
2278
+ 7096255531431399367,
2279
+ 10420104930240492487,
2280
+ 12135436139587214791,
2281
+ 12135436139587214790,
2282
+ 6823062890375009734,
2283
+ 7613107709739409606,
2284
+ 7892697010757912838,
2285
+ 7892697010757912837,
2286
+ 8550469289887318533,
2287
+ 16907485337985849861,
2288
+ 16907485337985849860,
2289
+ 73749600326477828,
2290
+ 129358754018433956,
2291
+ 135210429371105938,
2292
+ 154749653951984478,
2293
+ 502664213482999262,
2294
+ 539434336070337334,
2295
+ 4535220881640194870,
2296
+ 4535220881640194869,
2297
+ 10527845868963820341,
2298
+ 2758850809430377269,
2299
+ 3206016028606945589,
2300
+ 5841644046833004853,
2301
+ 14380517732157750581,
2302
+ 17302280880833042229,
2303
+ 2812794098610766133,
2304
+ 4938000534506490165,
2305
+ 6908876623200493621,
2306
+ 9786215493805186101,
2307
+ 14203569168050332213,
2308
+ 2148423167720436277,
2309
+ 2694516932039285493,
2310
+ 4825779066626087413,
2311
+ 7688339857985808373,
2312
+ 7688339857985808372,
2313
+ 12122724923918984180,
2314
+ 12455148497246117812,
2315
+ 12455148497246117811,
2316
+ 6921502123845785523,
2317
+ 7036243606352893939,
2318
+ 7036243606352893938,
2319
+ 10018792792569501170,
2320
+ 10475539572065165554,
2321
+ 10489419441236018372,
2322
+ 11793475133879807172,
2323
+ 13428423999554646212,
2324
+ 14292726630349214148,
2325
+ 2159664365246519748,
2326
+ 4282783759924356548,
2327
+ 8024508970010077124,
2328
+ 11977766724815483844,
2329
+ 13893156378369939140,
2330
+ 13893156378369939139,
2331
+ ];
2332
+
2333
+ #[test]
2334
+ fn mapping() {
2335
+ let mut m = RandomMapping {
2336
+ prng: 1234567891,
2337
+ last_idx: 0,
2338
+ };
2339
+
2340
+ for i in 0..2000 {
2341
+ assert_eq!(m.next_index(), MAPPING_REF[i]);
2342
+ }
2343
+ }