1pub fn mat_number(z: u32, a: u32) -> Option<u32> {
20 ENDF_MAT_TABLE
22 .binary_search_by(|&(tz, ta, _)| (tz, ta).cmp(&(z, a)))
23 .ok()
24 .map(|idx| ENDF_MAT_TABLE[idx].2)
25}
26
27pub fn isotope_from_mat(mat: u32) -> Option<(u32, u32)> {
37 ENDF_MAT_TABLE
39 .iter()
40 .find(|&&(_, _, m)| m == mat)
41 .map(|&(z, a, _)| (z, a))
42}
43
44pub fn known_isotopes(z: u32) -> Vec<u32> {
59 let start = ENDF_MAT_TABLE.partition_point(|&(tz, _, _)| tz < z);
60 ENDF_MAT_TABLE[start..]
61 .iter()
62 .take_while(|&&(tz, _, _)| tz == z)
63 .map(|&(_, a, _)| a)
64 .collect()
65}
66
67pub fn has_endf_evaluation(z: u32, a: u32) -> bool {
75 mat_number(z, a).is_some()
76}
77
78pub fn known_isotopes_tendl(z: u32) -> Vec<u32> {
90 let start = TENDL_2023_MAT_TABLE.partition_point(|&(tz, _, _)| tz < z);
91 TENDL_2023_MAT_TABLE[start..]
92 .iter()
93 .take_while(|&&(tz, _, _)| tz == z)
94 .map(|&(_, a, _)| a)
95 .collect()
96}
97
98pub fn has_endf_evaluation_tendl(z: u32, a: u32) -> bool {
106 mat_number_tendl(z, a).is_some()
107}
108
109pub fn known_isotopes_cendl(z: u32) -> Vec<u32> {
126 let start = CENDL_3_2_MAT_TABLE.partition_point(|&(tz, _, _)| tz < z);
127 CENDL_3_2_MAT_TABLE[start..]
128 .iter()
129 .take_while(|&&(tz, _, _)| tz == z)
130 .map(|&(_, a, _)| a)
131 .collect()
132}
133
134pub fn has_endf_evaluation_cendl(z: u32, a: u32) -> bool {
142 mat_number_cendl(z, a).is_some()
143}
144
145#[rustfmt::skip]
149static ENDF_MAT_TABLE: &[(u32, u32, u32)] = &[
150 (0, 1, 25),
151 (1, 1, 125),
152 (1, 2, 128),
153 (1, 3, 131),
154 (2, 3, 225),
155 (2, 4, 228),
156 (3, 6, 325),
157 (3, 7, 328),
158 (4, 7, 419),
159 (4, 9, 425),
160 (5, 10, 525),
161 (5, 11, 528),
162 (6, 12, 625),
163 (6, 13, 628),
164 (7, 14, 725),
165 (7, 15, 728),
166 (8, 16, 825),
167 (8, 17, 828),
168 (8, 18, 831),
169 (9, 19, 925),
170 (10, 20, 1025),
171 (10, 21, 1028),
172 (10, 22, 1031),
173 (11, 22, 1122),
174 (11, 23, 1125),
175 (12, 24, 1225),
176 (12, 25, 1228),
177 (12, 26, 1231),
178 (13, 27, 1325),
179 (14, 28, 1425),
180 (14, 29, 1428),
181 (14, 30, 1431),
182 (14, 31, 1434),
183 (14, 32, 1437),
184 (15, 31, 1525),
185 (16, 32, 1625),
186 (16, 33, 1628),
187 (16, 34, 1631),
188 (16, 35, 1634),
189 (16, 36, 1637),
190 (17, 35, 1725),
191 (17, 36, 1728),
192 (17, 37, 1731),
193 (18, 36, 1825),
194 (18, 37, 1828),
195 (18, 38, 1831),
196 (18, 39, 1834),
197 (18, 40, 1837),
198 (18, 41, 1840),
199 (19, 39, 1925),
200 (19, 40, 1928),
201 (19, 41, 1931),
202 (20, 40, 2025),
203 (20, 41, 2028),
204 (20, 42, 2031),
205 (20, 43, 2034),
206 (20, 44, 2037),
207 (20, 45, 2040),
208 (20, 46, 2043),
209 (20, 47, 2046),
210 (20, 48, 2049),
211 (21, 45, 2125),
212 (22, 46, 2225),
213 (22, 47, 2228),
214 (22, 48, 2231),
215 (22, 49, 2234),
216 (22, 50, 2237),
217 (23, 49, 2322),
218 (23, 50, 2325),
219 (23, 51, 2328),
220 (24, 50, 2425),
221 (24, 51, 2428),
222 (24, 52, 2431),
223 (24, 53, 2434),
224 (24, 54, 2437),
225 (25, 54, 2522),
226 (25, 55, 2525),
227 (26, 54, 2625),
228 (26, 55, 2628),
229 (26, 56, 2631),
230 (26, 57, 2634),
231 (26, 58, 2637),
232 (27, 58, 2722),
233 (27, 59, 2725),
234 (28, 58, 2825),
235 (28, 59, 2828),
236 (28, 60, 2831),
237 (28, 61, 2834),
238 (28, 62, 2837),
239 (28, 63, 2840),
240 (28, 64, 2843),
241 (29, 63, 2925),
242 (29, 64, 2928),
243 (29, 65, 2931),
244 (30, 64, 3025),
245 (30, 65, 3028),
246 (30, 66, 3031),
247 (30, 67, 3034),
248 (30, 68, 3037),
249 (30, 69, 3040),
250 (30, 70, 3043),
251 (31, 69, 3125),
252 (31, 70, 3128),
253 (31, 71, 3131),
254 (32, 70, 3225),
255 (32, 71, 3228),
256 (32, 72, 3231),
257 (32, 73, 3234),
258 (32, 74, 3237),
259 (32, 75, 3240),
260 (32, 76, 3243),
261 (33, 73, 3319),
262 (33, 74, 3322),
263 (33, 75, 3325),
264 (34, 74, 3425),
265 (34, 75, 3428),
266 (34, 76, 3431),
267 (34, 77, 3434),
268 (34, 78, 3437),
269 (34, 79, 3440),
270 (34, 80, 3443),
271 (34, 81, 3446),
272 (34, 82, 3449),
273 (35, 79, 3525),
274 (35, 80, 3528),
275 (35, 81, 3531),
276 (36, 78, 3625),
277 (36, 79, 3628),
278 (36, 80, 3631),
279 (36, 81, 3634),
280 (36, 82, 3637),
281 (36, 83, 3640),
282 (36, 84, 3643),
283 (36, 85, 3646),
284 (36, 86, 3649),
285 (37, 85, 3725),
286 (37, 86, 3728),
287 (37, 87, 3731),
288 (38, 84, 3825),
289 (38, 85, 3828),
290 (38, 86, 3831),
291 (38, 87, 3834),
292 (38, 88, 3837),
293 (38, 89, 3840),
294 (38, 90, 3843),
295 (39, 89, 3925),
296 (39, 90, 3928),
297 (39, 91, 3931),
298 (40, 90, 4025),
299 (40, 91, 4028),
300 (40, 92, 4031),
301 (40, 93, 4034),
302 (40, 94, 4037),
303 (40, 95, 4040),
304 (40, 96, 4043),
305 (41, 93, 4125),
306 (41, 94, 4128),
307 (41, 95, 4131),
308 (42, 92, 4225),
309 (42, 93, 4228),
310 (42, 94, 4231),
311 (42, 95, 4234),
312 (42, 96, 4237),
313 (42, 97, 4240),
314 (42, 98, 4243),
315 (42, 99, 4246),
316 (42, 100, 4249),
317 (43, 98, 4322),
318 (43, 99, 4325),
319 (44, 96, 4425),
320 (44, 97, 4428),
321 (44, 98, 4431),
322 (44, 99, 4434),
323 (44, 100, 4437),
324 (44, 101, 4440),
325 (44, 102, 4443),
326 (44, 103, 4446),
327 (44, 104, 4449),
328 (44, 105, 4452),
329 (44, 106, 4455),
330 (45, 103, 4525),
331 (45, 104, 4528),
332 (45, 105, 4531),
333 (46, 102, 4625),
334 (46, 103, 4628),
335 (46, 104, 4631),
336 (46, 105, 4634),
337 (46, 106, 4637),
338 (46, 107, 4640),
339 (46, 108, 4643),
340 (46, 109, 4646),
341 (46, 110, 4649),
342 (47, 107, 4725),
343 (47, 108, 4728),
344 (47, 109, 4731),
345 (47, 111, 4737),
346 (47, 112, 4740),
347 (47, 113, 4743),
348 (47, 114, 4746),
349 (47, 115, 4749),
350 (47, 116, 4752),
351 (47, 117, 4755),
352 (48, 106, 4825),
353 (48, 107, 4828),
354 (48, 108, 4831),
355 (48, 109, 4834),
356 (48, 110, 4837),
357 (48, 111, 4840),
358 (48, 112, 4843),
359 (48, 113, 4846),
360 (48, 114, 4849),
361 (48, 116, 4855),
362 (49, 113, 4925),
363 (49, 114, 4928),
364 (49, 115, 4931),
365 (50, 112, 5025),
366 (50, 113, 5028),
367 (50, 114, 5031),
368 (50, 115, 5034),
369 (50, 116, 5037),
370 (50, 117, 5040),
371 (50, 118, 5043),
372 (50, 119, 5046),
373 (50, 120, 5049),
374 (50, 122, 5055),
375 (50, 123, 5058),
376 (50, 124, 5061),
377 (50, 125, 5064),
378 (50, 126, 5067),
379 (51, 121, 5125),
380 (51, 122, 5128),
381 (51, 123, 5131),
382 (51, 124, 5134),
383 (51, 125, 5137),
384 (51, 126, 5140),
385 (52, 120, 5225),
386 (52, 121, 5228),
387 (52, 122, 5231),
388 (52, 123, 5234),
389 (52, 124, 5237),
390 (52, 125, 5240),
391 (52, 126, 5243),
392 (52, 128, 5249),
393 (52, 130, 5255),
394 (52, 131, 5258),
395 (52, 132, 5261),
396 (53, 127, 5325),
397 (53, 128, 5328),
398 (53, 129, 5331),
399 (53, 130, 5334),
400 (53, 131, 5337),
401 (53, 132, 5340),
402 (53, 133, 5343),
403 (53, 134, 5346),
404 (53, 135, 5349),
405 (54, 123, 5422),
406 (54, 124, 5425),
407 (54, 125, 5428),
408 (54, 126, 5431),
409 (54, 127, 5434),
410 (54, 128, 5437),
411 (54, 129, 5440),
412 (54, 130, 5443),
413 (54, 131, 5446),
414 (54, 132, 5449),
415 (54, 133, 5452),
416 (54, 134, 5455),
417 (54, 135, 5458),
418 (54, 136, 5461),
419 (55, 133, 5525),
420 (55, 134, 5528),
421 (55, 135, 5531),
422 (55, 136, 5534),
423 (55, 137, 5537),
424 (56, 130, 5625),
425 (56, 131, 5628),
426 (56, 132, 5631),
427 (56, 133, 5634),
428 (56, 134, 5637),
429 (56, 135, 5640),
430 (56, 136, 5643),
431 (56, 137, 5646),
432 (56, 138, 5649),
433 (56, 139, 5652),
434 (56, 140, 5655),
435 (57, 138, 5725),
436 (57, 139, 5728),
437 (57, 140, 5731),
438 (58, 136, 5825),
439 (58, 137, 5828),
440 (58, 138, 5831),
441 (58, 139, 5834),
442 (58, 140, 5837),
443 (58, 141, 5840),
444 (58, 142, 5843),
445 (58, 143, 5846),
446 (58, 144, 5849),
447 (59, 141, 5925),
448 (59, 142, 5928),
449 (59, 143, 5931),
450 (60, 142, 6025),
451 (60, 143, 6028),
452 (60, 144, 6031),
453 (60, 145, 6034),
454 (60, 146, 6037),
455 (60, 147, 6040),
456 (60, 148, 6043),
457 (60, 149, 6046),
458 (60, 150, 6049),
459 (61, 143, 6137),
460 (61, 144, 6140),
461 (61, 145, 6143),
462 (61, 146, 6146),
463 (61, 147, 6149),
464 (61, 148, 6152),
465 (61, 149, 6155),
466 (61, 150, 6158),
467 (61, 151, 6161),
468 (62, 144, 6225),
469 (62, 145, 6228),
470 (62, 146, 6231),
471 (62, 147, 6234),
472 (62, 148, 6237),
473 (62, 149, 6240),
474 (62, 150, 6243),
475 (62, 151, 6246),
476 (62, 152, 6249),
477 (62, 153, 6252),
478 (62, 154, 6255),
479 (63, 151, 6325),
480 (63, 152, 6328),
481 (63, 153, 6331),
482 (63, 154, 6334),
483 (63, 155, 6337),
484 (63, 156, 6340),
485 (63, 157, 6343),
486 (64, 152, 6425),
487 (64, 153, 6428),
488 (64, 154, 6431),
489 (64, 155, 6434),
490 (64, 156, 6437),
491 (64, 157, 6440),
492 (64, 158, 6443),
493 (64, 159, 6446),
494 (64, 160, 6449),
495 (65, 158, 6522),
496 (65, 159, 6525),
497 (65, 160, 6528),
498 (65, 161, 6531),
499 (66, 154, 6619),
500 (66, 155, 6622),
501 (66, 156, 6625),
502 (66, 157, 6628),
503 (66, 158, 6631),
504 (66, 159, 6634),
505 (66, 160, 6637),
506 (66, 161, 6640),
507 (66, 162, 6643),
508 (66, 163, 6646),
509 (66, 164, 6649),
510 (67, 165, 6725),
511 (68, 162, 6825),
512 (68, 163, 6828),
513 (68, 164, 6831),
514 (68, 165, 6834),
515 (68, 166, 6837),
516 (68, 167, 6840),
517 (68, 168, 6843),
518 (68, 169, 6846),
519 (68, 170, 6849),
520 (69, 168, 6922),
521 (69, 169, 6925),
522 (69, 170, 6928),
523 (69, 171, 6931),
524 (70, 168, 7025),
525 (70, 169, 7028),
526 (70, 170, 7031),
527 (70, 171, 7034),
528 (70, 172, 7037),
529 (70, 173, 7040),
530 (70, 174, 7043),
531 (70, 175, 7046),
532 (70, 176, 7049),
533 (71, 175, 7125),
534 (71, 176, 7128),
535 (72, 174, 7225),
536 (72, 175, 7228),
537 (72, 176, 7231),
538 (72, 177, 7234),
539 (72, 178, 7237),
540 (72, 179, 7240),
541 (72, 180, 7243),
542 (72, 181, 7246),
543 (72, 182, 7249),
544 (73, 180, 7325),
545 (73, 181, 7328),
546 (73, 182, 7331),
547 (74, 180, 7425),
548 (74, 181, 7428),
549 (74, 182, 7431),
550 (74, 183, 7434),
551 (74, 184, 7437),
552 (74, 185, 7440),
553 (74, 186, 7443),
554 (75, 185, 7525),
555 (75, 187, 7531),
556 (76, 184, 7625),
557 (76, 185, 7628),
558 (76, 186, 7631),
559 (76, 187, 7634),
560 (76, 188, 7637),
561 (76, 189, 7640),
562 (76, 190, 7643),
563 (76, 191, 7646),
564 (76, 192, 7649),
565 (77, 191, 7725),
566 (77, 192, 7728),
567 (77, 193, 7731),
568 (78, 190, 7825),
569 (78, 191, 7828),
570 (78, 192, 7831),
571 (78, 193, 7834),
572 (78, 194, 7837),
573 (78, 195, 7840),
574 (78, 196, 7843),
575 (78, 197, 7846),
576 (78, 198, 7849),
577 (79, 197, 7925),
578 (80, 196, 8025),
579 (80, 197, 8028),
580 (80, 198, 8031),
581 (80, 199, 8034),
582 (80, 200, 8037),
583 (80, 201, 8040),
584 (80, 202, 8043),
585 (80, 203, 8046),
586 (80, 204, 8049),
587 (81, 203, 8125),
588 (81, 204, 8128),
589 (81, 205, 8131),
590 (82, 204, 8225),
591 (82, 205, 8228),
592 (82, 206, 8231),
593 (82, 207, 8234),
594 (82, 208, 8237),
595 (83, 209, 8325),
596 (84, 208, 8431),
597 (84, 209, 8434),
598 (84, 210, 8437),
599 (88, 223, 8825),
600 (88, 224, 8828),
601 (88, 225, 8831),
602 (88, 226, 8834),
603 (89, 225, 8925),
604 (89, 226, 8928),
605 (89, 227, 8931),
606 (90, 227, 9025),
607 (90, 228, 9028),
608 (90, 229, 9031),
609 (90, 230, 9034),
610 (90, 231, 9037),
611 (90, 232, 9040),
612 (90, 233, 9043),
613 (90, 234, 9046),
614 (91, 229, 9125),
615 (91, 230, 9128),
616 (91, 231, 9131),
617 (91, 232, 9134),
618 (91, 233, 9137),
619 (92, 230, 9213),
620 (92, 231, 9216),
621 (92, 232, 9219),
622 (92, 233, 9222),
623 (92, 234, 9225),
624 (92, 235, 9228),
625 (92, 236, 9231),
626 (92, 237, 9234),
627 (92, 238, 9237),
628 (92, 239, 9240),
629 (92, 240, 9243),
630 (92, 241, 9246),
631 (93, 234, 9337),
632 (93, 235, 9340),
633 (93, 236, 9343),
634 (93, 237, 9346),
635 (93, 238, 9349),
636 (93, 239, 9352),
637 (94, 236, 9428),
638 (94, 237, 9431),
639 (94, 238, 9434),
640 (94, 239, 9437),
641 (94, 240, 9440),
642 (94, 241, 9443),
643 (94, 242, 9446),
644 (94, 243, 9449),
645 (94, 244, 9452),
646 (94, 245, 9455),
647 (94, 246, 9458),
648 (95, 240, 9540),
649 (95, 241, 9543),
650 (95, 242, 9546),
651 (95, 243, 9549),
652 (95, 244, 9552),
653 (96, 240, 9625),
654 (96, 241, 9628),
655 (96, 242, 9631),
656 (96, 243, 9634),
657 (96, 244, 9637),
658 (96, 245, 9640),
659 (96, 246, 9643),
660 (96, 247, 9646),
661 (96, 248, 9649),
662 (96, 249, 9652),
663 (96, 250, 9655),
664 (97, 245, 9740),
665 (97, 246, 9743),
666 (97, 247, 9746),
667 (97, 248, 9749),
668 (97, 249, 9752),
669 (97, 250, 9755),
670 (98, 246, 9843),
671 (98, 247, 9846),
672 (98, 248, 9849),
673 (98, 249, 9852),
674 (98, 250, 9855),
675 (98, 251, 9858),
676 (98, 252, 9861),
677 (98, 253, 9864),
678 (98, 254, 9867),
679 (99, 251, 9911),
680 (99, 252, 9912),
681 (99, 253, 9913),
682 (99, 254, 9914),
683 (99, 255, 9916),
684 (100, 255, 9936),
685];
686
687pub fn mat_number_tendl(z: u32, a: u32) -> Option<u32> {
705 TENDL_2023_MAT_TABLE
706 .binary_search_by(|&(tz, ta, _)| (tz, ta).cmp(&(z, a)))
707 .ok()
708 .map(|idx| TENDL_2023_MAT_TABLE[idx].2)
709}
710
711pub fn mat_number_cendl(z: u32, a: u32) -> Option<u32> {
728 CENDL_3_2_MAT_TABLE
729 .binary_search_by(|&(tz, ta, _)| (tz, ta).cmp(&(z, a)))
730 .ok()
731 .map(|idx| CENDL_3_2_MAT_TABLE[idx].2)
732}
733
734#[rustfmt::skip]
740static TENDL_2023_MAT_TABLE: &[(u32, u32, u32)] = &[
741 (1, 1, 125),
742 (1, 2, 128),
743 (1, 3, 131),
744 (2, 3, 225),
745 (2, 4, 228),
746 (3, 6, 325),
747 (3, 7, 328),
748 (4, 7, 419),
749 (4, 9, 425),
750 (4, 10, 428),
751 (4, 11, 431),
752 (5, 10, 525),
753 (5, 11, 528),
754 (6, 10, 619),
755 (6, 11, 622),
756 (6, 12, 625),
757 (6, 13, 628),
758 (6, 14, 631),
759 (6, 15, 634),
760 (7, 13, 722),
761 (7, 14, 725),
762 (7, 15, 728),
763 (7, 16, 731),
764 (7, 17, 734),
765 (8, 14, 819),
766 (8, 15, 822),
767 (8, 16, 825),
768 (8, 17, 828),
769 (8, 18, 831),
770 (8, 19, 834),
771 (8, 20, 837),
772 (8, 21, 840),
773 (8, 22, 843),
774 (9, 17, 919),
775 (9, 18, 922),
776 (9, 19, 925),
777 (9, 20, 928),
778 (9, 21, 931),
779 (9, 22, 934),
780 (9, 23, 937),
781 (10, 18, 1019),
782 (10, 19, 1022),
783 (10, 20, 1025),
784 (10, 21, 1028),
785 (10, 22, 1031),
786 (10, 23, 1034),
787 (10, 24, 1037),
788 (11, 21, 1119),
789 (11, 22, 1122),
790 (11, 23, 1125),
791 (11, 24, 1128),
792 (11, 25, 1131),
793 (11, 26, 1134),
794 (12, 22, 1219),
795 (12, 23, 1222),
796 (12, 24, 1225),
797 (12, 25, 1228),
798 (12, 26, 1231),
799 (12, 27, 1234),
800 (12, 28, 1237),
801 (12, 29, 1240),
802 (13, 24, 1316),
803 (13, 25, 1319),
804 (13, 26, 1322),
805 (13, 27, 1325),
806 (13, 28, 1328),
807 (13, 29, 1331),
808 (13, 30, 1334),
809 (14, 26, 1419),
810 (14, 27, 1422),
811 (14, 28, 1425),
812 (14, 29, 1428),
813 (14, 30, 1431),
814 (14, 31, 1434),
815 (14, 32, 1437),
816 (14, 33, 1440),
817 (14, 34, 1443),
818 (15, 29, 1519),
819 (15, 30, 1522),
820 (15, 31, 1525),
821 (15, 32, 1528),
822 (15, 33, 1531),
823 (15, 34, 1534),
824 (15, 35, 1537),
825 (15, 36, 1540),
826 (15, 37, 1543),
827 (16, 30, 1619),
828 (16, 31, 1622),
829 (16, 32, 1625),
830 (16, 33, 1628),
831 (16, 34, 1631),
832 (16, 35, 1634),
833 (16, 36, 1637),
834 (16, 37, 1640),
835 (16, 38, 1643),
836 (16, 39, 1646),
837 (16, 40, 1649),
838 (16, 41, 1652),
839 (16, 42, 1655),
840 (17, 33, 1719),
841 (17, 34, 1722),
842 (17, 35, 1725),
843 (17, 36, 1728),
844 (17, 37, 1731),
845 (17, 38, 1734),
846 (17, 39, 1737),
847 (17, 40, 1740),
848 (17, 41, 1743),
849 (17, 42, 1746),
850 (17, 43, 1749),
851 (18, 35, 1822),
852 (18, 36, 1825),
853 (18, 37, 1828),
854 (18, 38, 1831),
855 (18, 39, 1834),
856 (18, 40, 1837),
857 (18, 41, 1840),
858 (18, 42, 1843),
859 (18, 43, 1846),
860 (18, 44, 1849),
861 (18, 45, 1852),
862 (18, 46, 1855),
863 (18, 47, 1858),
864 (19, 37, 1919),
865 (19, 38, 1922),
866 (19, 39, 1925),
867 (19, 40, 1928),
868 (19, 41, 1931),
869 (19, 42, 1934),
870 (19, 43, 1937),
871 (19, 44, 1940),
872 (19, 45, 1943),
873 (19, 46, 1946),
874 (19, 47, 1949),
875 (19, 48, 1952),
876 (19, 49, 1955),
877 (20, 40, 2025),
878 (20, 41, 2028),
879 (20, 42, 2031),
880 (20, 43, 2034),
881 (20, 44, 2037),
882 (20, 45, 2040),
883 (20, 46, 2043),
884 (20, 47, 2046),
885 (20, 48, 2049),
886 (20, 49, 2052),
887 (20, 50, 2055),
888 (20, 51, 2058),
889 (20, 52, 2061),
890 (21, 43, 2119),
891 (21, 44, 2122),
892 (21, 45, 2125),
893 (21, 46, 2128),
894 (21, 47, 2131),
895 (21, 48, 2134),
896 (21, 49, 2137),
897 (21, 50, 2140),
898 (21, 51, 2143),
899 (21, 52, 2146),
900 (21, 53, 2149),
901 (22, 44, 2219),
902 (22, 45, 2222),
903 (22, 46, 2225),
904 (22, 47, 2228),
905 (22, 48, 2231),
906 (22, 49, 2234),
907 (22, 50, 2237),
908 (22, 51, 2240),
909 (22, 52, 2243),
910 (22, 53, 2246),
911 (22, 54, 2249),
912 (22, 55, 2252),
913 (23, 47, 2316),
914 (23, 48, 2319),
915 (23, 49, 2322),
916 (23, 50, 2325),
917 (23, 51, 2328),
918 (23, 52, 2331),
919 (23, 53, 2334),
920 (23, 54, 2337),
921 (23, 55, 2340),
922 (24, 48, 2419),
923 (24, 49, 2422),
924 (24, 50, 2425),
925 (24, 51, 2428),
926 (24, 52, 2431),
927 (24, 53, 2434),
928 (24, 54, 2437),
929 (24, 55, 2440),
930 (24, 56, 2443),
931 (24, 57, 2446),
932 (24, 58, 2449),
933 (24, 59, 2452),
934 (25, 51, 2513),
935 (25, 52, 2516),
936 (25, 53, 2519),
937 (25, 54, 2522),
938 (25, 55, 2525),
939 (25, 56, 2528),
940 (25, 57, 2531),
941 (25, 58, 2534),
942 (25, 59, 2537),
943 (26, 52, 2619),
944 (26, 53, 2622),
945 (26, 54, 2625),
946 (26, 55, 2628),
947 (26, 56, 2631),
948 (26, 57, 2634),
949 (26, 58, 2637),
950 (26, 59, 2640),
951 (26, 60, 2643),
952 (26, 61, 2646),
953 (26, 62, 2649),
954 (26, 63, 2652),
955 (26, 64, 2655),
956 (27, 55, 2713),
957 (27, 56, 2716),
958 (27, 57, 2719),
959 (27, 58, 2722),
960 (27, 59, 2725),
961 (27, 60, 2728),
962 (27, 61, 2731),
963 (27, 62, 2734),
964 (27, 63, 2737),
965 (27, 65, 2743),
966 (28, 56, 2819),
967 (28, 57, 2822),
968 (28, 58, 2825),
969 (28, 59, 2828),
970 (28, 60, 2831),
971 (28, 61, 2834),
972 (28, 62, 2837),
973 (28, 63, 2840),
974 (28, 64, 2843),
975 (28, 65, 2846),
976 (28, 66, 2849),
977 (28, 67, 2852),
978 (28, 68, 2855),
979 (28, 69, 2858),
980 (28, 70, 2861),
981 (28, 71, 2864),
982 (28, 72, 2867),
983 (29, 58, 2910),
984 (29, 59, 2913),
985 (29, 60, 2916),
986 (29, 61, 2919),
987 (29, 62, 2922),
988 (29, 63, 2925),
989 (29, 64, 2928),
990 (29, 65, 2931),
991 (29, 66, 2934),
992 (29, 67, 2937),
993 (29, 68, 2940),
994 (29, 69, 2943),
995 (29, 70, 2946),
996 (29, 71, 2949),
997 (29, 72, 2952),
998 (29, 73, 2955),
999 (29, 74, 2958),
1000 (29, 75, 2961),
1001 (30, 60, 3013),
1002 (30, 61, 3016),
1003 (30, 62, 3019),
1004 (30, 63, 3022),
1005 (30, 64, 3025),
1006 (30, 65, 3028),
1007 (30, 66, 3031),
1008 (30, 67, 3034),
1009 (30, 68, 3037),
1010 (30, 69, 3040),
1011 (30, 70, 3043),
1012 (30, 71, 3046),
1013 (30, 72, 3049),
1014 (30, 73, 3052),
1015 (30, 74, 3055),
1016 (30, 75, 3058),
1017 (30, 76, 3061),
1018 (30, 77, 3064),
1019 (30, 78, 3067),
1020 (31, 63, 3107),
1021 (31, 64, 3110),
1022 (31, 65, 3113),
1023 (31, 66, 3116),
1024 (31, 67, 3119),
1025 (31, 68, 3122),
1026 (31, 69, 3125),
1027 (31, 70, 3128),
1028 (31, 71, 3131),
1029 (31, 72, 3134),
1030 (31, 73, 3137),
1031 (31, 74, 3140),
1032 (31, 75, 3143),
1033 (31, 76, 3146),
1034 (31, 77, 3149),
1035 (31, 78, 3152),
1036 (31, 79, 3155),
1037 (31, 80, 3158),
1038 (31, 81, 3161),
1039 (32, 64, 3207),
1040 (32, 65, 3210),
1041 (32, 66, 3213),
1042 (32, 67, 3216),
1043 (32, 68, 3219),
1044 (32, 69, 3222),
1045 (32, 70, 3225),
1046 (32, 71, 3228),
1047 (32, 72, 3231),
1048 (32, 73, 3234),
1049 (32, 74, 3237),
1050 (32, 75, 3240),
1051 (32, 76, 3243),
1052 (32, 77, 3246),
1053 (32, 78, 3249),
1054 (32, 79, 3252),
1055 (32, 80, 3255),
1056 (32, 81, 3258),
1057 (32, 82, 3261),
1058 (32, 83, 3264),
1059 (33, 67, 3301),
1060 (33, 68, 3304),
1061 (33, 69, 3307),
1062 (33, 70, 3310),
1063 (33, 71, 3313),
1064 (33, 72, 3316),
1065 (33, 73, 3319),
1066 (33, 74, 3322),
1067 (33, 75, 3325),
1068 (33, 76, 3328),
1069 (33, 77, 3331),
1070 (33, 78, 3334),
1071 (33, 79, 3337),
1072 (33, 80, 3340),
1073 (33, 81, 3343),
1074 (33, 82, 3346),
1075 (33, 83, 3349),
1076 (33, 84, 3352),
1077 (33, 85, 3355),
1078 (34, 68, 3407),
1079 (34, 69, 3410),
1080 (34, 70, 3413),
1081 (34, 71, 3416),
1082 (34, 72, 3419),
1083 (34, 73, 3422),
1084 (34, 74, 3425),
1085 (34, 75, 3428),
1086 (34, 76, 3431),
1087 (34, 77, 3434),
1088 (34, 78, 3437),
1089 (34, 79, 3440),
1090 (34, 80, 3443),
1091 (34, 81, 3446),
1092 (34, 82, 3449),
1093 (34, 83, 3452),
1094 (34, 84, 3455),
1095 (34, 85, 3458),
1096 (34, 86, 3461),
1097 (34, 87, 3464),
1098 (34, 88, 3467),
1099 (35, 71, 3501),
1100 (35, 72, 3504),
1101 (35, 73, 3507),
1102 (35, 74, 3510),
1103 (35, 75, 3513),
1104 (35, 76, 3516),
1105 (35, 77, 3519),
1106 (35, 78, 3522),
1107 (35, 79, 3525),
1108 (35, 80, 3528),
1109 (35, 81, 3531),
1110 (35, 82, 3534),
1111 (35, 83, 3537),
1112 (35, 84, 3540),
1113 (35, 85, 3543),
1114 (35, 86, 3546),
1115 (35, 87, 3549),
1116 (35, 88, 3552),
1117 (35, 89, 3555),
1118 (35, 90, 3558),
1119 (36, 72, 3607),
1120 (36, 73, 3610),
1121 (36, 74, 3613),
1122 (36, 75, 3616),
1123 (36, 76, 3619),
1124 (36, 77, 3622),
1125 (36, 78, 3625),
1126 (36, 79, 3628),
1127 (36, 80, 3631),
1128 (36, 81, 3634),
1129 (36, 82, 3637),
1130 (36, 83, 3640),
1131 (36, 84, 3643),
1132 (36, 85, 3646),
1133 (36, 86, 3649),
1134 (36, 87, 3652),
1135 (36, 88, 3655),
1136 (36, 89, 3658),
1137 (36, 90, 3661),
1138 (36, 91, 3664),
1139 (36, 92, 3667),
1140 (36, 93, 3670),
1141 (37, 75, 3695),
1142 (37, 76, 3698),
1143 (37, 77, 3701),
1144 (37, 78, 3704),
1145 (37, 79, 3707),
1146 (37, 80, 3710),
1147 (37, 81, 3713),
1148 (37, 82, 3716),
1149 (37, 83, 3719),
1150 (37, 84, 3722),
1151 (37, 85, 3725),
1152 (37, 86, 3728),
1153 (37, 87, 3731),
1154 (37, 88, 3734),
1155 (37, 89, 3737),
1156 (37, 90, 3740),
1157 (37, 91, 3743),
1158 (37, 92, 3746),
1159 (37, 93, 3749),
1160 (37, 94, 3752),
1161 (38, 76, 3801),
1162 (38, 77, 3804),
1163 (38, 78, 3807),
1164 (38, 79, 3810),
1165 (38, 80, 3813),
1166 (38, 81, 3816),
1167 (38, 82, 3819),
1168 (38, 83, 3822),
1169 (38, 84, 3825),
1170 (38, 85, 3828),
1171 (38, 86, 3831),
1172 (38, 87, 3834),
1173 (38, 88, 3837),
1174 (38, 89, 3840),
1175 (38, 90, 3843),
1176 (38, 91, 3846),
1177 (38, 92, 3849),
1178 (38, 93, 3852),
1179 (38, 94, 3855),
1180 (38, 95, 3858),
1181 (38, 96, 3861),
1182 (39, 79, 3895),
1183 (39, 80, 3898),
1184 (39, 81, 3901),
1185 (39, 82, 3904),
1186 (39, 83, 3907),
1187 (39, 84, 3910),
1188 (39, 85, 3913),
1189 (39, 86, 3916),
1190 (39, 87, 3919),
1191 (39, 88, 3922),
1192 (39, 89, 3925),
1193 (39, 90, 3928),
1194 (39, 91, 3931),
1195 (39, 92, 3934),
1196 (39, 93, 3937),
1197 (39, 94, 3940),
1198 (39, 95, 3943),
1199 (39, 96, 3946),
1200 (39, 97, 3949),
1201 (39, 99, 3955),
1202 (40, 80, 3995),
1203 (40, 81, 3998),
1204 (40, 82, 4001),
1205 (40, 83, 4004),
1206 (40, 84, 4007),
1207 (40, 85, 4010),
1208 (40, 86, 4013),
1209 (40, 87, 4016),
1210 (40, 88, 4019),
1211 (40, 89, 4022),
1212 (40, 90, 4025),
1213 (40, 91, 4028),
1214 (40, 92, 4031),
1215 (40, 93, 4034),
1216 (40, 94, 4037),
1217 (40, 95, 4040),
1218 (40, 96, 4043),
1219 (40, 97, 4046),
1220 (40, 98, 4049),
1221 (40, 99, 4052),
1222 (40, 100, 4055),
1223 (40, 101, 4058),
1224 (40, 102, 4061),
1225 (40, 103, 4064),
1226 (41, 83, 4095),
1227 (41, 84, 4098),
1228 (41, 85, 4101),
1229 (41, 86, 4104),
1230 (41, 87, 4107),
1231 (41, 88, 4110),
1232 (41, 89, 4113),
1233 (41, 90, 4116),
1234 (41, 91, 4119),
1235 (41, 92, 4122),
1236 (41, 93, 4125),
1237 (41, 94, 4128),
1238 (41, 95, 4131),
1239 (41, 96, 4134),
1240 (41, 97, 4137),
1241 (41, 98, 4140),
1242 (41, 99, 4143),
1243 (41, 100, 4146),
1244 (41, 101, 4149),
1245 (41, 102, 4152),
1246 (41, 103, 4155),
1247 (41, 105, 4161),
1248 (42, 84, 4201),
1249 (42, 85, 4204),
1250 (42, 86, 4207),
1251 (42, 87, 4210),
1252 (42, 88, 4213),
1253 (42, 89, 4216),
1254 (42, 90, 4219),
1255 (42, 91, 4222),
1256 (42, 92, 4225),
1257 (42, 93, 4228),
1258 (42, 94, 4231),
1259 (42, 95, 4234),
1260 (42, 96, 4237),
1261 (42, 97, 4240),
1262 (42, 98, 4243),
1263 (42, 99, 4246),
1264 (42, 100, 4249),
1265 (42, 101, 4252),
1266 (42, 102, 4255),
1267 (42, 103, 4258),
1268 (42, 104, 4261),
1269 (42, 105, 4264),
1270 (42, 106, 4267),
1271 (42, 107, 4270),
1272 (42, 108, 4273),
1273 (43, 87, 4289),
1274 (43, 88, 4292),
1275 (43, 89, 4295),
1276 (43, 90, 4298),
1277 (43, 91, 4301),
1278 (43, 92, 4304),
1279 (43, 93, 4307),
1280 (43, 94, 4310),
1281 (43, 95, 4313),
1282 (43, 96, 4316),
1283 (43, 97, 4319),
1284 (43, 98, 4322),
1285 (43, 99, 4325),
1286 (43, 100, 4328),
1287 (43, 101, 4331),
1288 (43, 102, 4334),
1289 (43, 103, 4337),
1290 (43, 104, 4340),
1291 (43, 105, 4343),
1292 (43, 106, 4346),
1293 (43, 107, 4349),
1294 (43, 108, 4352),
1295 (44, 88, 4401),
1296 (44, 89, 4404),
1297 (44, 90, 4407),
1298 (44, 91, 4410),
1299 (44, 92, 4413),
1300 (44, 93, 4416),
1301 (44, 94, 4419),
1302 (44, 95, 4422),
1303 (44, 96, 4425),
1304 (44, 97, 4428),
1305 (44, 98, 4431),
1306 (44, 99, 4434),
1307 (44, 100, 4437),
1308 (44, 101, 4440),
1309 (44, 102, 4443),
1310 (44, 103, 4446),
1311 (44, 104, 4449),
1312 (44, 105, 4452),
1313 (44, 106, 4455),
1314 (44, 107, 4458),
1315 (44, 108, 4461),
1316 (44, 109, 4464),
1317 (44, 110, 4467),
1318 (44, 111, 4470),
1319 (44, 112, 4473),
1320 (45, 91, 4489),
1321 (45, 92, 4492),
1322 (45, 93, 4495),
1323 (45, 94, 4498),
1324 (45, 95, 4501),
1325 (45, 96, 4504),
1326 (45, 97, 4507),
1327 (45, 98, 4510),
1328 (45, 99, 4513),
1329 (45, 100, 4516),
1330 (45, 101, 4519),
1331 (45, 102, 4522),
1332 (45, 103, 4525),
1333 (45, 104, 4528),
1334 (45, 105, 4531),
1335 (45, 106, 4534),
1336 (45, 107, 4537),
1337 (45, 108, 4540),
1338 (45, 109, 4543),
1339 (45, 110, 4546),
1340 (45, 111, 4549),
1341 (45, 112, 4552),
1342 (45, 113, 4555),
1343 (45, 114, 4558),
1344 (45, 115, 4561),
1345 (46, 92, 4595),
1346 (46, 93, 4598),
1347 (46, 94, 4601),
1348 (46, 95, 4604),
1349 (46, 96, 4607),
1350 (46, 97, 4610),
1351 (46, 98, 4613),
1352 (46, 99, 4616),
1353 (46, 100, 4619),
1354 (46, 101, 4622),
1355 (46, 102, 4625),
1356 (46, 103, 4628),
1357 (46, 104, 4631),
1358 (46, 105, 4634),
1359 (46, 106, 4637),
1360 (46, 107, 4640),
1361 (46, 108, 4643),
1362 (46, 109, 4646),
1363 (46, 110, 4649),
1364 (46, 111, 4652),
1365 (46, 112, 4655),
1366 (46, 113, 4658),
1367 (46, 114, 4661),
1368 (46, 115, 4664),
1369 (46, 116, 4667),
1370 (46, 117, 4670),
1371 (46, 118, 4673),
1372 (47, 95, 4689),
1373 (47, 96, 4692),
1374 (47, 97, 4695),
1375 (47, 98, 4698),
1376 (47, 99, 4701),
1377 (47, 100, 4704),
1378 (47, 101, 4707),
1379 (47, 102, 4710),
1380 (47, 103, 4713),
1381 (47, 104, 4716),
1382 (47, 105, 4719),
1383 (47, 106, 4722),
1384 (47, 107, 4725),
1385 (47, 108, 4728),
1386 (47, 109, 4731),
1387 (47, 110, 4734),
1388 (47, 111, 4737),
1389 (47, 112, 4740),
1390 (47, 113, 4743),
1391 (47, 114, 4746),
1392 (47, 115, 4749),
1393 (47, 116, 4752),
1394 (47, 117, 4755),
1395 (47, 118, 4758),
1396 (47, 119, 4761),
1397 (47, 120, 4764),
1398 (48, 96, 4795),
1399 (48, 97, 4798),
1400 (48, 98, 4801),
1401 (48, 99, 4804),
1402 (48, 100, 4807),
1403 (48, 101, 4810),
1404 (48, 102, 4813),
1405 (48, 103, 4816),
1406 (48, 104, 4819),
1407 (48, 105, 4822),
1408 (48, 106, 4825),
1409 (48, 107, 4828),
1410 (48, 108, 4831),
1411 (48, 109, 4834),
1412 (48, 110, 4837),
1413 (48, 111, 4840),
1414 (48, 112, 4843),
1415 (48, 113, 4846),
1416 (48, 114, 4849),
1417 (48, 115, 4852),
1418 (48, 116, 4855),
1419 (48, 117, 4858),
1420 (48, 118, 4861),
1421 (48, 119, 4864),
1422 (48, 120, 4867),
1423 (48, 121, 4870),
1424 (48, 122, 4873),
1425 (48, 123, 4876),
1426 (48, 124, 4879),
1427 (49, 99, 4883),
1428 (49, 100, 4886),
1429 (49, 101, 4889),
1430 (49, 102, 4892),
1431 (49, 103, 4895),
1432 (49, 104, 4898),
1433 (49, 105, 4901),
1434 (49, 106, 4904),
1435 (49, 107, 4907),
1436 (49, 108, 4910),
1437 (49, 109, 4913),
1438 (49, 110, 4916),
1439 (49, 111, 4919),
1440 (49, 112, 4922),
1441 (49, 113, 4925),
1442 (49, 114, 4928),
1443 (49, 115, 4931),
1444 (49, 116, 4934),
1445 (49, 117, 4937),
1446 (49, 118, 4940),
1447 (49, 119, 4943),
1448 (49, 120, 4946),
1449 (49, 121, 4949),
1450 (49, 122, 4952),
1451 (49, 123, 4955),
1452 (49, 124, 4958),
1453 (49, 125, 4961),
1454 (49, 126, 4964),
1455 (49, 127, 4967),
1456 (50, 100, 4989),
1457 (50, 101, 4992),
1458 (50, 102, 4995),
1459 (50, 103, 4998),
1460 (50, 104, 5001),
1461 (50, 105, 5004),
1462 (50, 106, 5007),
1463 (50, 107, 5010),
1464 (50, 108, 5013),
1465 (50, 109, 5016),
1466 (50, 110, 5019),
1467 (50, 111, 5022),
1468 (50, 112, 5025),
1469 (50, 113, 5028),
1470 (50, 114, 5031),
1471 (50, 115, 5034),
1472 (50, 116, 5037),
1473 (50, 117, 5040),
1474 (50, 118, 5043),
1475 (50, 119, 5046),
1476 (50, 120, 5049),
1477 (50, 121, 5052),
1478 (50, 122, 5055),
1479 (50, 123, 5058),
1480 (50, 124, 5061),
1481 (50, 125, 5064),
1482 (50, 126, 5067),
1483 (50, 127, 5070),
1484 (50, 128, 5073),
1485 (50, 129, 5076),
1486 (50, 130, 5079),
1487 (50, 131, 5082),
1488 (50, 132, 5085),
1489 (50, 133, 5088),
1490 (51, 105, 315),
1491 (51, 107, 316),
1492 (51, 108, 5086),
1493 (51, 109, 5089),
1494 (51, 110, 5092),
1495 (51, 111, 5095),
1496 (51, 112, 5098),
1497 (51, 113, 5101),
1498 (51, 114, 5104),
1499 (51, 115, 5107),
1500 (51, 116, 5110),
1501 (51, 117, 5113),
1502 (51, 118, 5116),
1503 (51, 119, 5119),
1504 (51, 120, 5122),
1505 (51, 121, 5125),
1506 (51, 122, 5128),
1507 (51, 123, 5131),
1508 (51, 124, 5134),
1509 (51, 125, 5137),
1510 (51, 126, 5140),
1511 (51, 127, 5143),
1512 (51, 128, 5146),
1513 (51, 129, 5149),
1514 (51, 130, 5152),
1515 (51, 131, 5155),
1516 (51, 132, 5158),
1517 (51, 133, 5161),
1518 (51, 135, 5167),
1519 (52, 108, 5189),
1520 (52, 109, 5192),
1521 (52, 110, 5195),
1522 (52, 111, 5198),
1523 (52, 112, 5201),
1524 (52, 113, 5204),
1525 (52, 114, 5207),
1526 (52, 115, 5210),
1527 (52, 116, 5213),
1528 (52, 117, 5216),
1529 (52, 118, 5219),
1530 (52, 119, 5222),
1531 (52, 120, 5225),
1532 (52, 121, 5228),
1533 (52, 122, 5231),
1534 (52, 123, 5234),
1535 (52, 124, 5237),
1536 (52, 125, 5240),
1537 (52, 126, 5243),
1538 (52, 127, 5246),
1539 (52, 128, 5249),
1540 (52, 129, 5252),
1541 (52, 130, 5255),
1542 (52, 131, 5258),
1543 (52, 132, 5261),
1544 (52, 133, 5264),
1545 (52, 134, 5267),
1546 (52, 135, 5270),
1547 (52, 136, 5273),
1548 (52, 137, 5276),
1549 (52, 138, 5279),
1550 (53, 111, 5277),
1551 (53, 112, 5280),
1552 (53, 113, 5283),
1553 (53, 114, 5286),
1554 (53, 115, 5289),
1555 (53, 116, 5292),
1556 (53, 117, 5295),
1557 (53, 118, 5298),
1558 (53, 119, 5301),
1559 (53, 120, 5304),
1560 (53, 121, 5307),
1561 (53, 122, 5310),
1562 (53, 123, 5313),
1563 (53, 124, 5316),
1564 (53, 125, 5319),
1565 (53, 126, 5322),
1566 (53, 127, 5325),
1567 (53, 128, 5328),
1568 (53, 129, 5331),
1569 (53, 130, 5334),
1570 (53, 131, 5337),
1571 (53, 132, 5340),
1572 (53, 133, 5343),
1573 (53, 134, 5346),
1574 (53, 135, 5349),
1575 (53, 136, 5352),
1576 (53, 137, 5355),
1577 (53, 138, 5358),
1578 (53, 139, 5361),
1579 (54, 112, 5389),
1580 (54, 113, 5392),
1581 (54, 114, 5395),
1582 (54, 115, 5398),
1583 (54, 116, 5401),
1584 (54, 117, 5404),
1585 (54, 118, 5407),
1586 (54, 119, 5410),
1587 (54, 120, 5413),
1588 (54, 121, 5416),
1589 (54, 122, 5419),
1590 (54, 123, 5422),
1591 (54, 124, 5425),
1592 (54, 125, 5428),
1593 (54, 126, 5431),
1594 (54, 127, 5434),
1595 (54, 128, 5437),
1596 (54, 129, 5440),
1597 (54, 130, 5443),
1598 (54, 131, 5446),
1599 (54, 132, 5449),
1600 (54, 133, 5452),
1601 (54, 134, 5455),
1602 (54, 135, 5458),
1603 (54, 136, 5461),
1604 (54, 137, 5464),
1605 (54, 138, 5467),
1606 (54, 139, 5470),
1607 (54, 140, 5473),
1608 (54, 141, 5476),
1609 (54, 142, 5479),
1610 (55, 115, 5471),
1611 (55, 117, 5477),
1612 (55, 118, 5480),
1613 (55, 119, 5483),
1614 (55, 120, 5486),
1615 (55, 121, 5489),
1616 (55, 122, 5492),
1617 (55, 123, 5495),
1618 (55, 124, 5498),
1619 (55, 125, 5501),
1620 (55, 126, 5504),
1621 (55, 127, 5507),
1622 (55, 128, 5510),
1623 (55, 129, 5513),
1624 (55, 130, 5516),
1625 (55, 131, 5519),
1626 (55, 132, 5522),
1627 (55, 133, 5525),
1628 (55, 134, 5528),
1629 (55, 135, 5531),
1630 (55, 136, 5534),
1631 (55, 137, 5537),
1632 (55, 138, 5540),
1633 (55, 139, 5543),
1634 (55, 140, 5546),
1635 (55, 141, 5549),
1636 (55, 142, 5552),
1637 (55, 143, 5555),
1638 (56, 116, 5583),
1639 (56, 117, 5586),
1640 (56, 118, 5589),
1641 (56, 119, 5592),
1642 (56, 120, 5595),
1643 (56, 121, 5598),
1644 (56, 122, 5601),
1645 (56, 123, 5604),
1646 (56, 124, 5607),
1647 (56, 125, 5610),
1648 (56, 126, 5613),
1649 (56, 127, 5616),
1650 (56, 128, 5619),
1651 (56, 129, 5622),
1652 (56, 130, 5625),
1653 (56, 131, 5628),
1654 (56, 132, 5631),
1655 (56, 133, 5634),
1656 (56, 134, 5637),
1657 (56, 135, 5640),
1658 (56, 136, 5643),
1659 (56, 137, 5646),
1660 (56, 138, 5649),
1661 (56, 139, 5652),
1662 (56, 140, 5655),
1663 (56, 141, 5658),
1664 (56, 142, 5661),
1665 (56, 143, 5664),
1666 (56, 144, 5667),
1667 (56, 145, 5670),
1668 (56, 146, 5673),
1669 (57, 119, 5668),
1670 (57, 120, 5671),
1671 (57, 121, 5674),
1672 (57, 122, 5677),
1673 (57, 123, 5680),
1674 (57, 124, 5683),
1675 (57, 125, 5686),
1676 (57, 126, 5689),
1677 (57, 127, 5692),
1678 (57, 128, 5695),
1679 (57, 129, 5698),
1680 (57, 130, 5701),
1681 (57, 131, 5704),
1682 (57, 132, 5707),
1683 (57, 133, 5710),
1684 (57, 134, 5713),
1685 (57, 135, 5716),
1686 (57, 136, 5719),
1687 (57, 137, 5722),
1688 (57, 138, 5725),
1689 (57, 139, 5728),
1690 (57, 140, 5731),
1691 (57, 141, 5734),
1692 (57, 142, 5737),
1693 (57, 143, 5740),
1694 (57, 144, 5743),
1695 (57, 145, 5746),
1696 (57, 146, 5749),
1697 (57, 147, 5752),
1698 (57, 148, 5755),
1699 (57, 149, 5758),
1700 (58, 121, 5780),
1701 (58, 122, 5783),
1702 (58, 123, 5786),
1703 (58, 124, 5789),
1704 (58, 125, 5792),
1705 (58, 126, 5795),
1706 (58, 127, 5798),
1707 (58, 128, 5801),
1708 (58, 129, 5804),
1709 (58, 130, 5807),
1710 (58, 131, 5810),
1711 (58, 132, 5813),
1712 (58, 133, 5816),
1713 (58, 134, 5819),
1714 (58, 135, 5822),
1715 (58, 136, 5825),
1716 (58, 137, 5828),
1717 (58, 138, 5831),
1718 (58, 139, 5834),
1719 (58, 140, 5837),
1720 (58, 141, 5840),
1721 (58, 142, 5843),
1722 (58, 143, 5846),
1723 (58, 144, 5849),
1724 (58, 145, 5852),
1725 (58, 146, 5855),
1726 (58, 147, 5858),
1727 (58, 148, 5861),
1728 (58, 149, 5864),
1729 (58, 150, 5867),
1730 (58, 151, 5870),
1731 (58, 152, 5873),
1732 (59, 124, 5874),
1733 (59, 125, 5877),
1734 (59, 126, 5880),
1735 (59, 127, 5883),
1736 (59, 128, 5886),
1737 (59, 129, 5889),
1738 (59, 130, 5892),
1739 (59, 131, 5895),
1740 (59, 132, 5898),
1741 (59, 133, 5901),
1742 (59, 134, 5904),
1743 (59, 135, 5907),
1744 (59, 136, 5910),
1745 (59, 137, 5913),
1746 (59, 138, 5916),
1747 (59, 139, 5919),
1748 (59, 140, 5922),
1749 (59, 141, 5925),
1750 (59, 142, 5928),
1751 (59, 143, 5931),
1752 (59, 144, 5934),
1753 (59, 145, 5937),
1754 (59, 146, 5940),
1755 (59, 147, 5943),
1756 (59, 148, 5946),
1757 (59, 149, 5949),
1758 (59, 150, 5952),
1759 (59, 151, 5955),
1760 (59, 152, 5958),
1761 (59, 153, 5961),
1762 (59, 154, 5964),
1763 (59, 155, 5967),
1764 (60, 126, 5977),
1765 (60, 127, 5980),
1766 (60, 128, 5983),
1767 (60, 129, 5986),
1768 (60, 130, 5989),
1769 (60, 131, 5992),
1770 (60, 132, 5995),
1771 (60, 133, 5998),
1772 (60, 134, 6001),
1773 (60, 135, 6004),
1774 (60, 136, 6007),
1775 (60, 137, 6010),
1776 (60, 138, 6013),
1777 (60, 139, 6016),
1778 (60, 140, 6019),
1779 (60, 141, 6022),
1780 (60, 142, 6025),
1781 (60, 143, 6028),
1782 (60, 144, 6031),
1783 (60, 145, 6034),
1784 (60, 146, 6037),
1785 (60, 147, 6040),
1786 (60, 148, 6043),
1787 (60, 149, 6046),
1788 (60, 150, 6049),
1789 (60, 151, 6052),
1790 (60, 152, 6055),
1791 (60, 153, 6058),
1792 (60, 154, 6061),
1793 (60, 155, 6064),
1794 (60, 156, 6067),
1795 (60, 157, 6070),
1796 (61, 127, 6089),
1797 (61, 128, 6092),
1798 (61, 129, 6095),
1799 (61, 130, 6098),
1800 (61, 131, 6101),
1801 (61, 132, 6104),
1802 (61, 133, 6107),
1803 (61, 134, 6110),
1804 (61, 135, 6113),
1805 (61, 136, 6116),
1806 (61, 137, 6119),
1807 (61, 138, 6122),
1808 (61, 139, 6125),
1809 (61, 140, 6128),
1810 (61, 141, 6131),
1811 (61, 142, 6134),
1812 (61, 143, 6137),
1813 (61, 144, 6140),
1814 (61, 145, 6143),
1815 (61, 146, 6146),
1816 (61, 147, 6149),
1817 (61, 148, 6152),
1818 (61, 149, 6155),
1819 (61, 150, 6158),
1820 (61, 151, 6161),
1821 (61, 152, 6164),
1822 (61, 153, 6167),
1823 (61, 154, 6170),
1824 (61, 155, 6173),
1825 (61, 156, 6176),
1826 (61, 157, 6179),
1827 (61, 158, 6182),
1828 (61, 159, 6185),
1829 (61, 161, 6191),
1830 (62, 130, 6183),
1831 (62, 131, 6186),
1832 (62, 132, 6189),
1833 (62, 133, 6192),
1834 (62, 134, 6195),
1835 (62, 135, 6198),
1836 (62, 136, 6201),
1837 (62, 137, 6204),
1838 (62, 138, 6207),
1839 (62, 139, 6210),
1840 (62, 140, 6213),
1841 (62, 141, 6216),
1842 (62, 142, 6219),
1843 (62, 143, 6222),
1844 (62, 144, 6225),
1845 (62, 145, 6228),
1846 (62, 146, 6231),
1847 (62, 147, 6234),
1848 (62, 148, 6237),
1849 (62, 149, 6240),
1850 (62, 150, 6243),
1851 (62, 151, 6246),
1852 (62, 152, 6249),
1853 (62, 153, 6252),
1854 (62, 154, 6255),
1855 (62, 155, 6258),
1856 (62, 156, 6261),
1857 (62, 157, 6264),
1858 (62, 158, 6267),
1859 (62, 159, 6270),
1860 (62, 160, 6273),
1861 (62, 161, 6276),
1862 (62, 162, 6279),
1863 (62, 163, 6282),
1864 (62, 164, 6285),
1865 (63, 135, 6277),
1866 (63, 136, 6280),
1867 (63, 137, 6283),
1868 (63, 138, 6286),
1869 (63, 139, 6289),
1870 (63, 140, 6292),
1871 (63, 141, 6295),
1872 (63, 142, 6298),
1873 (63, 143, 6301),
1874 (63, 144, 6304),
1875 (63, 145, 6307),
1876 (63, 146, 6310),
1877 (63, 147, 6313),
1878 (63, 148, 6316),
1879 (63, 149, 6319),
1880 (63, 150, 6322),
1881 (63, 151, 6325),
1882 (63, 152, 6328),
1883 (63, 153, 6331),
1884 (63, 154, 6334),
1885 (63, 155, 6337),
1886 (63, 156, 6340),
1887 (63, 157, 6343),
1888 (63, 158, 6346),
1889 (63, 159, 6349),
1890 (63, 160, 6352),
1891 (63, 161, 6355),
1892 (63, 162, 6358),
1893 (63, 163, 6361),
1894 (63, 164, 6364),
1895 (63, 165, 6367),
1896 (63, 166, 6370),
1897 (63, 167, 6373),
1898 (64, 135, 6374),
1899 (64, 136, 6377),
1900 (64, 137, 6380),
1901 (64, 138, 6383),
1902 (64, 139, 6386),
1903 (64, 140, 6389),
1904 (64, 141, 6392),
1905 (64, 142, 6395),
1906 (64, 143, 6398),
1907 (64, 144, 6401),
1908 (64, 145, 6404),
1909 (64, 146, 6407),
1910 (64, 147, 6410),
1911 (64, 148, 6413),
1912 (64, 149, 6416),
1913 (64, 150, 6419),
1914 (64, 151, 6422),
1915 (64, 152, 6425),
1916 (64, 153, 6428),
1917 (64, 154, 6431),
1918 (64, 155, 6434),
1919 (64, 156, 6437),
1920 (64, 157, 6440),
1921 (64, 158, 6443),
1922 (64, 159, 6446),
1923 (64, 160, 6449),
1924 (64, 161, 6452),
1925 (64, 162, 6455),
1926 (64, 163, 6458),
1927 (64, 164, 6461),
1928 (64, 165, 6464),
1929 (64, 166, 6467),
1930 (64, 167, 6470),
1931 (64, 168, 6473),
1932 (65, 139, 6465),
1933 (65, 140, 6468),
1934 (65, 141, 6471),
1935 (65, 143, 6477),
1936 (65, 144, 6480),
1937 (65, 145, 6483),
1938 (65, 146, 6486),
1939 (65, 147, 6489),
1940 (65, 148, 6492),
1941 (65, 149, 6495),
1942 (65, 150, 6498),
1943 (65, 151, 6501),
1944 (65, 152, 6504),
1945 (65, 153, 6507),
1946 (65, 154, 6510),
1947 (65, 155, 6513),
1948 (65, 156, 6516),
1949 (65, 157, 6519),
1950 (65, 158, 6522),
1951 (65, 159, 6525),
1952 (65, 160, 6528),
1953 (65, 161, 6531),
1954 (65, 162, 6534),
1955 (65, 163, 6537),
1956 (65, 164, 6540),
1957 (65, 165, 6543),
1958 (65, 166, 6546),
1959 (65, 167, 6549),
1960 (65, 168, 6552),
1961 (65, 169, 6555),
1962 (65, 171, 6561),
1963 (66, 142, 6583),
1964 (66, 143, 6586),
1965 (66, 144, 6589),
1966 (66, 145, 6592),
1967 (66, 146, 6595),
1968 (66, 147, 6598),
1969 (66, 148, 6601),
1970 (66, 149, 6604),
1971 (66, 150, 6607),
1972 (66, 151, 6610),
1973 (66, 152, 6613),
1974 (66, 153, 6616),
1975 (66, 154, 6619),
1976 (66, 155, 6622),
1977 (66, 156, 6625),
1978 (66, 157, 6628),
1979 (66, 158, 6631),
1980 (66, 159, 6634),
1981 (66, 160, 6637),
1982 (66, 161, 6640),
1983 (66, 162, 6643),
1984 (66, 163, 6646),
1985 (66, 164, 6649),
1986 (66, 165, 6652),
1987 (66, 166, 6655),
1988 (66, 167, 6658),
1989 (66, 168, 6661),
1990 (66, 169, 6664),
1991 (66, 170, 6667),
1992 (66, 171, 6670),
1993 (66, 172, 6673),
1994 (66, 173, 6676),
1995 (66, 174, 6679),
1996 (67, 145, 6665),
1997 (67, 146, 6668),
1998 (67, 147, 6671),
1999 (67, 148, 6674),
2000 (67, 149, 6677),
2001 (67, 150, 6680),
2002 (67, 151, 6683),
2003 (67, 152, 6686),
2004 (67, 153, 6689),
2005 (67, 154, 6692),
2006 (67, 155, 6695),
2007 (67, 156, 6698),
2008 (67, 157, 6701),
2009 (67, 158, 6704),
2010 (67, 159, 6707),
2011 (67, 160, 6710),
2012 (67, 161, 6713),
2013 (67, 162, 6716),
2014 (67, 163, 6719),
2015 (67, 164, 6722),
2016 (67, 165, 6725),
2017 (67, 166, 6728),
2018 (67, 167, 6731),
2019 (67, 168, 6734),
2020 (67, 169, 6737),
2021 (67, 170, 6740),
2022 (67, 171, 6743),
2023 (67, 172, 6746),
2024 (67, 173, 6749),
2025 (67, 174, 6752),
2026 (67, 175, 6755),
2027 (67, 176, 6758),
2028 (67, 177, 6761),
2029 (68, 146, 6777),
2030 (68, 147, 6780),
2031 (68, 148, 6783),
2032 (68, 149, 6786),
2033 (68, 150, 6789),
2034 (68, 151, 6792),
2035 (68, 152, 6795),
2036 (68, 153, 6798),
2037 (68, 154, 6801),
2038 (68, 155, 6804),
2039 (68, 156, 6807),
2040 (68, 157, 6810),
2041 (68, 158, 6813),
2042 (68, 159, 6816),
2043 (68, 160, 6819),
2044 (68, 161, 6822),
2045 (68, 162, 6825),
2046 (68, 163, 6828),
2047 (68, 164, 6831),
2048 (68, 165, 6834),
2049 (68, 166, 6837),
2050 (68, 167, 6840),
2051 (68, 168, 6843),
2052 (68, 169, 6846),
2053 (68, 170, 6849),
2054 (68, 171, 6852),
2055 (68, 172, 6855),
2056 (68, 173, 6858),
2057 (68, 174, 6861),
2058 (68, 175, 6864),
2059 (68, 176, 6867),
2060 (68, 177, 6870),
2061 (68, 178, 6873),
2062 (68, 179, 6876),
2063 (68, 180, 6879),
2064 (69, 150, 6868),
2065 (69, 151, 6871),
2066 (69, 152, 6874),
2067 (69, 153, 6877),
2068 (69, 154, 6880),
2069 (69, 155, 6883),
2070 (69, 156, 6886),
2071 (69, 157, 6889),
2072 (69, 158, 6892),
2073 (69, 159, 6895),
2074 (69, 160, 6898),
2075 (69, 161, 6901),
2076 (69, 162, 6904),
2077 (69, 163, 6907),
2078 (69, 164, 6910),
2079 (69, 165, 6913),
2080 (69, 166, 6916),
2081 (69, 167, 6919),
2082 (69, 168, 6922),
2083 (69, 169, 6925),
2084 (69, 170, 6928),
2085 (69, 171, 6931),
2086 (69, 172, 6934),
2087 (69, 173, 6937),
2088 (69, 174, 6940),
2089 (69, 175, 6943),
2090 (69, 176, 6946),
2091 (69, 177, 6949),
2092 (69, 178, 6952),
2093 (69, 179, 6955),
2094 (69, 180, 6958),
2095 (69, 181, 6961),
2096 (70, 151, 6974),
2097 (70, 152, 6977),
2098 (70, 153, 6980),
2099 (70, 155, 6986),
2100 (70, 156, 6989),
2101 (70, 157, 6992),
2102 (70, 158, 6995),
2103 (70, 159, 6998),
2104 (70, 160, 7001),
2105 (70, 161, 7004),
2106 (70, 162, 7007),
2107 (70, 163, 7010),
2108 (70, 164, 7013),
2109 (70, 165, 7016),
2110 (70, 166, 7019),
2111 (70, 167, 7022),
2112 (70, 168, 7025),
2113 (70, 169, 7028),
2114 (70, 170, 7031),
2115 (70, 171, 7034),
2116 (70, 172, 7037),
2117 (70, 173, 7040),
2118 (70, 174, 7043),
2119 (70, 175, 7046),
2120 (70, 176, 7049),
2121 (70, 177, 7052),
2122 (70, 178, 7055),
2123 (70, 179, 7058),
2124 (70, 180, 7061),
2125 (70, 181, 7064),
2126 (70, 182, 7067),
2127 (70, 183, 7070),
2128 (70, 184, 7073),
2129 (70, 185, 7076),
2130 (71, 154, 7062),
2131 (71, 157, 7071),
2132 (71, 158, 7074),
2133 (71, 159, 7077),
2134 (71, 160, 7080),
2135 (71, 161, 7083),
2136 (71, 162, 7086),
2137 (71, 163, 7089),
2138 (71, 164, 7092),
2139 (71, 165, 7095),
2140 (71, 166, 7098),
2141 (71, 167, 7101),
2142 (71, 168, 7104),
2143 (71, 169, 7107),
2144 (71, 170, 7110),
2145 (71, 171, 7113),
2146 (71, 172, 7116),
2147 (71, 173, 7119),
2148 (71, 174, 7122),
2149 (71, 175, 7125),
2150 (71, 176, 7128),
2151 (71, 177, 7131),
2152 (71, 178, 7134),
2153 (71, 179, 7137),
2154 (71, 180, 7140),
2155 (71, 181, 7143),
2156 (71, 182, 7146),
2157 (71, 183, 7149),
2158 (71, 184, 7152),
2159 (71, 185, 7155),
2160 (71, 186, 7158),
2161 (71, 187, 7161),
2162 (71, 188, 7164),
2163 (72, 154, 7165),
2164 (72, 158, 7177),
2165 (72, 159, 7180),
2166 (72, 160, 7183),
2167 (72, 161, 7186),
2168 (72, 162, 7189),
2169 (72, 163, 7192),
2170 (72, 164, 7195),
2171 (72, 165, 7198),
2172 (72, 166, 7201),
2173 (72, 167, 7204),
2174 (72, 168, 7207),
2175 (72, 169, 7210),
2176 (72, 170, 7213),
2177 (72, 171, 7216),
2178 (72, 172, 7219),
2179 (72, 173, 7222),
2180 (72, 174, 7225),
2181 (72, 175, 7228),
2182 (72, 176, 7231),
2183 (72, 177, 7234),
2184 (72, 178, 7237),
2185 (72, 179, 7240),
2186 (72, 180, 7243),
2187 (72, 181, 7246),
2188 (72, 182, 7249),
2189 (72, 183, 7252),
2190 (72, 184, 7255),
2191 (72, 185, 7258),
2192 (72, 186, 7261),
2193 (72, 187, 7264),
2194 (72, 188, 7267),
2195 (73, 159, 7262),
2196 (73, 160, 7265),
2197 (73, 161, 7268),
2198 (73, 162, 7271),
2199 (73, 163, 7274),
2200 (73, 164, 7277),
2201 (73, 165, 7280),
2202 (73, 166, 7283),
2203 (73, 167, 7286),
2204 (73, 168, 7289),
2205 (73, 169, 7292),
2206 (73, 170, 7295),
2207 (73, 171, 7298),
2208 (73, 172, 7301),
2209 (73, 173, 7304),
2210 (73, 174, 7307),
2211 (73, 175, 7310),
2212 (73, 176, 7313),
2213 (73, 177, 7316),
2214 (73, 178, 7319),
2215 (73, 179, 7322),
2216 (73, 180, 7325),
2217 (73, 181, 7328),
2218 (73, 182, 7331),
2219 (73, 183, 7334),
2220 (73, 184, 7337),
2221 (73, 185, 7340),
2222 (73, 186, 7343),
2223 (73, 187, 7346),
2224 (73, 188, 7349),
2225 (73, 189, 7352),
2226 (73, 190, 7355),
2227 (73, 192, 7361),
2228 (73, 194, 7367),
2229 (74, 162, 7371),
2230 (74, 163, 7374),
2231 (74, 164, 7377),
2232 (74, 165, 7380),
2233 (74, 166, 7383),
2234 (74, 167, 7386),
2235 (74, 168, 7389),
2236 (74, 169, 7392),
2237 (74, 170, 7395),
2238 (74, 171, 7398),
2239 (74, 172, 7401),
2240 (74, 173, 7404),
2241 (74, 174, 7407),
2242 (74, 175, 7410),
2243 (74, 176, 7413),
2244 (74, 177, 7416),
2245 (74, 178, 7419),
2246 (74, 179, 7422),
2247 (74, 180, 7425),
2248 (74, 181, 7428),
2249 (74, 182, 7431),
2250 (74, 183, 7434),
2251 (74, 184, 7437),
2252 (74, 185, 7440),
2253 (74, 186, 7443),
2254 (74, 187, 7446),
2255 (74, 188, 7449),
2256 (74, 189, 7452),
2257 (74, 190, 7455),
2258 (74, 191, 7458),
2259 (74, 192, 7461),
2260 (74, 193, 7464),
2261 (74, 194, 7467),
2262 (74, 195, 7470),
2263 (74, 196, 7473),
2264 (74, 197, 7476),
2265 (75, 165, 7465),
2266 (75, 166, 7468),
2267 (75, 167, 7471),
2268 (75, 168, 7474),
2269 (75, 169, 7477),
2270 (75, 170, 7480),
2271 (75, 171, 7483),
2272 (75, 172, 7486),
2273 (75, 173, 7489),
2274 (75, 174, 7492),
2275 (75, 175, 7495),
2276 (75, 176, 7498),
2277 (75, 177, 7501),
2278 (75, 178, 7504),
2279 (75, 179, 7507),
2280 (75, 180, 7510),
2281 (75, 181, 7513),
2282 (75, 182, 7516),
2283 (75, 183, 7519),
2284 (75, 184, 7522),
2285 (75, 185, 7525),
2286 (75, 186, 7528),
2287 (75, 187, 7531),
2288 (75, 188, 7534),
2289 (75, 189, 7537),
2290 (75, 190, 7540),
2291 (75, 191, 7543),
2292 (75, 192, 7546),
2293 (75, 193, 7549),
2294 (75, 194, 7552),
2295 (75, 195, 7555),
2296 (75, 196, 7558),
2297 (75, 198, 7564),
2298 (76, 168, 7577),
2299 (76, 169, 7580),
2300 (76, 170, 7583),
2301 (76, 171, 7586),
2302 (76, 172, 7589),
2303 (76, 173, 7592),
2304 (76, 174, 7595),
2305 (76, 175, 7598),
2306 (76, 176, 7601),
2307 (76, 177, 7604),
2308 (76, 178, 7607),
2309 (76, 179, 7610),
2310 (76, 180, 7613),
2311 (76, 181, 7616),
2312 (76, 182, 7619),
2313 (76, 183, 7622),
2314 (76, 184, 7625),
2315 (76, 185, 7628),
2316 (76, 186, 7631),
2317 (76, 187, 7634),
2318 (76, 188, 7637),
2319 (76, 189, 7640),
2320 (76, 190, 7643),
2321 (76, 191, 7646),
2322 (76, 192, 7649),
2323 (76, 193, 7652),
2324 (76, 194, 7655),
2325 (76, 195, 7658),
2326 (76, 196, 7661),
2327 (76, 197, 7664),
2328 (76, 198, 7667),
2329 (76, 199, 7670),
2330 (76, 200, 7673),
2331 (76, 201, 7676),
2332 (76, 202, 7679),
2333 (77, 171, 7665),
2334 (77, 172, 7668),
2335 (77, 173, 7671),
2336 (77, 174, 7674),
2337 (77, 175, 7677),
2338 (77, 176, 7680),
2339 (77, 177, 7683),
2340 (77, 178, 7686),
2341 (77, 179, 7689),
2342 (77, 180, 7692),
2343 (77, 181, 7695),
2344 (77, 182, 7698),
2345 (77, 183, 7701),
2346 (77, 184, 7704),
2347 (77, 185, 7707),
2348 (77, 186, 7710),
2349 (77, 187, 7713),
2350 (77, 188, 7716),
2351 (77, 189, 7719),
2352 (77, 190, 7722),
2353 (77, 191, 7725),
2354 (77, 192, 7728),
2355 (77, 193, 7731),
2356 (77, 194, 7734),
2357 (77, 195, 7737),
2358 (77, 196, 7740),
2359 (77, 197, 7743),
2360 (77, 198, 7746),
2361 (77, 199, 7749),
2362 (77, 200, 7752),
2363 (77, 201, 7755),
2364 (77, 202, 7758),
2365 (77, 203, 7761),
2366 (77, 204, 7764),
2367 (77, 205, 7767),
2368 (78, 175, 7780),
2369 (78, 176, 7783),
2370 (78, 177, 7786),
2371 (78, 178, 7789),
2372 (78, 179, 7792),
2373 (78, 180, 7795),
2374 (78, 181, 7798),
2375 (78, 182, 7801),
2376 (78, 183, 7804),
2377 (78, 184, 7807),
2378 (78, 185, 7810),
2379 (78, 186, 7813),
2380 (78, 187, 7816),
2381 (78, 188, 7819),
2382 (78, 189, 7822),
2383 (78, 190, 7825),
2384 (78, 191, 7828),
2385 (78, 192, 7831),
2386 (78, 193, 7834),
2387 (78, 194, 7837),
2388 (78, 195, 7840),
2389 (78, 196, 7843),
2390 (78, 197, 7846),
2391 (78, 198, 7849),
2392 (78, 199, 7852),
2393 (78, 200, 7855),
2394 (78, 201, 7858),
2395 (78, 202, 7861),
2396 (78, 203, 7864),
2397 (78, 204, 7867),
2398 (78, 205, 7870),
2399 (79, 176, 7862),
2400 (79, 177, 311),
2401 (79, 178, 7868),
2402 (79, 179, 7871),
2403 (79, 180, 7874),
2404 (79, 181, 7877),
2405 (79, 182, 7880),
2406 (79, 183, 7883),
2407 (79, 184, 7886),
2408 (79, 185, 7889),
2409 (79, 186, 7892),
2410 (79, 187, 7895),
2411 (79, 188, 7898),
2412 (79, 189, 7901),
2413 (79, 190, 7904),
2414 (79, 191, 7907),
2415 (79, 192, 7910),
2416 (79, 193, 7913),
2417 (79, 194, 7916),
2418 (79, 195, 7919),
2419 (79, 196, 7922),
2420 (79, 197, 7925),
2421 (79, 198, 7928),
2422 (79, 199, 7931),
2423 (79, 200, 7934),
2424 (79, 201, 7937),
2425 (79, 202, 7940),
2426 (79, 203, 7943),
2427 (79, 204, 7946),
2428 (79, 205, 7949),
2429 (79, 206, 7952),
2430 (79, 207, 7955),
2431 (79, 208, 7958),
2432 (79, 209, 7961),
2433 (79, 210, 7964),
2434 (80, 179, 7974),
2435 (80, 180, 7977),
2436 (80, 181, 7980),
2437 (80, 182, 7983),
2438 (80, 183, 7986),
2439 (80, 184, 7989),
2440 (80, 185, 7992),
2441 (80, 186, 7995),
2442 (80, 187, 7998),
2443 (80, 188, 8001),
2444 (80, 189, 8004),
2445 (80, 190, 8007),
2446 (80, 191, 8010),
2447 (80, 192, 8013),
2448 (80, 193, 8016),
2449 (80, 194, 8019),
2450 (80, 195, 8022),
2451 (80, 196, 8025),
2452 (80, 197, 8028),
2453 (80, 198, 8031),
2454 (80, 199, 8034),
2455 (80, 200, 8037),
2456 (80, 201, 8040),
2457 (80, 202, 8043),
2458 (80, 203, 8046),
2459 (80, 204, 8049),
2460 (80, 205, 8052),
2461 (80, 206, 8055),
2462 (80, 207, 8058),
2463 (80, 208, 8061),
2464 (80, 209, 8064),
2465 (80, 210, 8067),
2466 (80, 211, 8070),
2467 (80, 212, 8073),
2468 (80, 213, 317),
2469 (80, 214, 8079),
2470 (80, 216, 8085),
2471 (81, 180, 8056),
2472 (81, 181, 8059),
2473 (81, 182, 8062),
2474 (81, 183, 8065),
2475 (81, 184, 8068),
2476 (81, 185, 8071),
2477 (81, 186, 8074),
2478 (81, 187, 8077),
2479 (81, 188, 8080),
2480 (81, 189, 8083),
2481 (81, 190, 8086),
2482 (81, 191, 8089),
2483 (81, 192, 8092),
2484 (81, 193, 8095),
2485 (81, 194, 8098),
2486 (81, 195, 8101),
2487 (81, 196, 8104),
2488 (81, 197, 8107),
2489 (81, 198, 8110),
2490 (81, 199, 8113),
2491 (81, 200, 8116),
2492 (81, 201, 8119),
2493 (81, 202, 8122),
2494 (81, 203, 8125),
2495 (81, 204, 8128),
2496 (81, 205, 8131),
2497 (81, 206, 8134),
2498 (81, 207, 8137),
2499 (81, 208, 8140),
2500 (81, 209, 8143),
2501 (81, 210, 8146),
2502 (81, 211, 8149),
2503 (81, 212, 8152),
2504 (81, 213, 8155),
2505 (81, 214, 8158),
2506 (81, 215, 8161),
2507 (81, 216, 8164),
2508 (81, 217, 8167),
2509 (81, 218, 8170),
2510 (82, 185, 8168),
2511 (82, 186, 8171),
2512 (82, 187, 8174),
2513 (82, 188, 8177),
2514 (82, 189, 8180),
2515 (82, 190, 8183),
2516 (82, 191, 8186),
2517 (82, 192, 8189),
2518 (82, 193, 8192),
2519 (82, 194, 8195),
2520 (82, 195, 8198),
2521 (82, 196, 8201),
2522 (82, 197, 8204),
2523 (82, 198, 8207),
2524 (82, 199, 8210),
2525 (82, 200, 8213),
2526 (82, 201, 8216),
2527 (82, 202, 8219),
2528 (82, 203, 8222),
2529 (82, 204, 8225),
2530 (82, 205, 8228),
2531 (82, 206, 8231),
2532 (82, 207, 8234),
2533 (82, 208, 8237),
2534 (82, 209, 8240),
2535 (82, 210, 8243),
2536 (82, 211, 8246),
2537 (82, 212, 8249),
2538 (82, 213, 8252),
2539 (82, 214, 8255),
2540 (82, 215, 8258),
2541 (82, 216, 8261),
2542 (82, 217, 8264),
2543 (82, 218, 8267),
2544 (82, 219, 8270),
2545 (82, 220, 8273),
2546 (83, 190, 8268),
2547 (83, 191, 8271),
2548 (83, 192, 8274),
2549 (83, 193, 8277),
2550 (83, 194, 8280),
2551 (83, 195, 8283),
2552 (83, 196, 8286),
2553 (83, 197, 8289),
2554 (83, 198, 8292),
2555 (83, 199, 8295),
2556 (83, 200, 8298),
2557 (83, 201, 8301),
2558 (83, 202, 8304),
2559 (83, 203, 8307),
2560 (83, 204, 8310),
2561 (83, 205, 8313),
2562 (83, 206, 8316),
2563 (83, 207, 8319),
2564 (83, 208, 8322),
2565 (83, 209, 8325),
2566 (83, 210, 8328),
2567 (83, 211, 8331),
2568 (83, 212, 8334),
2569 (83, 213, 8337),
2570 (83, 214, 8340),
2571 (83, 215, 8343),
2572 (83, 216, 8346),
2573 (83, 217, 8349),
2574 (83, 218, 8352),
2575 (83, 219, 8355),
2576 (83, 220, 8358),
2577 (83, 221, 8361),
2578 (83, 222, 8364),
2579 (83, 223, 8367),
2580 (83, 224, 8370),
2581 (84, 195, 8392),
2582 (84, 196, 8395),
2583 (84, 197, 8398),
2584 (84, 198, 8401),
2585 (84, 199, 8404),
2586 (84, 200, 8407),
2587 (84, 201, 8410),
2588 (84, 202, 8413),
2589 (84, 203, 8416),
2590 (84, 204, 8419),
2591 (84, 205, 8422),
2592 (84, 206, 8425),
2593 (84, 207, 8428),
2594 (84, 208, 8431),
2595 (84, 209, 8434),
2596 (84, 210, 8437),
2597 (84, 217, 8458),
2598 (84, 218, 8461),
2599 (84, 219, 8464),
2600 (84, 220, 8467),
2601 (84, 221, 8470),
2602 (84, 222, 8473),
2603 (84, 223, 8476),
2604 (84, 224, 8479),
2605 (84, 225, 8482),
2606 (84, 226, 8485),
2607 (84, 227, 8488),
2608 (85, 198, 8510),
2609 (85, 199, 8513),
2610 (85, 200, 8516),
2611 (85, 201, 8519),
2612 (85, 202, 8522),
2613 (85, 203, 8525),
2614 (85, 204, 8528),
2615 (85, 205, 8531),
2616 (85, 206, 8534),
2617 (85, 207, 8537),
2618 (85, 208, 8540),
2619 (85, 209, 8543),
2620 (85, 210, 8546),
2621 (85, 211, 8549),
2622 (85, 218, 8570),
2623 (85, 219, 8573),
2624 (85, 220, 8576),
2625 (85, 221, 8579),
2626 (85, 222, 8582),
2627 (85, 223, 8585),
2628 (85, 224, 8588),
2629 (85, 225, 8591),
2630 (85, 226, 8594),
2631 (85, 227, 8597),
2632 (85, 228, 8600),
2633 (85, 229, 8603),
2634 (86, 200, 8592),
2635 (86, 201, 8595),
2636 (86, 202, 8598),
2637 (86, 203, 8601),
2638 (86, 204, 8604),
2639 (86, 205, 8607),
2640 (86, 206, 8610),
2641 (86, 207, 8613),
2642 (86, 208, 8616),
2643 (86, 209, 8619),
2644 (86, 210, 8622),
2645 (86, 211, 8625),
2646 (86, 212, 8628),
2647 (86, 219, 8649),
2648 (86, 220, 8652),
2649 (86, 221, 8655),
2650 (86, 222, 8658),
2651 (86, 223, 8661),
2652 (86, 224, 8664),
2653 (86, 225, 8667),
2654 (86, 226, 8670),
2655 (86, 227, 8673),
2656 (86, 228, 8676),
2657 (86, 229, 8679),
2658 (86, 230, 8682),
2659 (86, 231, 8685),
2660 (87, 204, 8701),
2661 (87, 205, 8704),
2662 (87, 206, 8707),
2663 (87, 207, 8710),
2664 (87, 208, 8713),
2665 (87, 209, 8716),
2666 (87, 210, 8719),
2667 (87, 211, 8722),
2668 (87, 212, 8725),
2669 (87, 213, 8728),
2670 (87, 220, 8749),
2671 (87, 221, 8752),
2672 (87, 222, 8755),
2673 (87, 223, 8758),
2674 (87, 224, 8761),
2675 (87, 225, 8764),
2676 (87, 226, 8767),
2677 (87, 227, 8770),
2678 (87, 228, 8773),
2679 (87, 229, 8776),
2680 (87, 230, 8779),
2681 (87, 231, 8782),
2682 (87, 232, 8785),
2683 (88, 207, 8777),
2684 (88, 208, 8780),
2685 (88, 209, 8783),
2686 (88, 210, 8786),
2687 (88, 211, 8789),
2688 (88, 212, 8792),
2689 (88, 213, 8795),
2690 (88, 214, 8798),
2691 (88, 221, 8819),
2692 (88, 222, 8822),
2693 (88, 223, 8825),
2694 (88, 224, 8828),
2695 (88, 225, 8831),
2696 (88, 226, 8834),
2697 (88, 227, 8837),
2698 (88, 228, 8840),
2699 (88, 229, 8843),
2700 (88, 230, 8846),
2701 (88, 231, 8849),
2702 (88, 232, 8852),
2703 (88, 233, 8855),
2704 (88, 234, 8858),
2705 (88, 235, 8861),
2706 (89, 214, 8892),
2707 (89, 222, 8916),
2708 (89, 223, 8919),
2709 (89, 224, 8922),
2710 (89, 225, 8925),
2711 (89, 226, 8928),
2712 (89, 227, 8931),
2713 (89, 228, 8934),
2714 (89, 229, 8937),
2715 (89, 230, 8940),
2716 (89, 231, 8943),
2717 (89, 232, 8946),
2718 (89, 233, 8949),
2719 (89, 234, 8952),
2720 (89, 235, 8955),
2721 (89, 236, 8958),
2722 (89, 237, 8961),
2723 (90, 215, 8989),
2724 (90, 224, 9016),
2725 (90, 225, 9019),
2726 (90, 226, 9022),
2727 (90, 227, 9025),
2728 (90, 228, 9028),
2729 (90, 229, 9031),
2730 (90, 230, 9034),
2731 (90, 231, 9037),
2732 (90, 232, 9040),
2733 (90, 233, 9043),
2734 (90, 234, 9046),
2735 (90, 235, 9049),
2736 (90, 236, 9052),
2737 (90, 237, 9055),
2738 (90, 238, 9058),
2739 (90, 239, 9061),
2740 (91, 225, 9113),
2741 (91, 226, 9116),
2742 (91, 227, 9119),
2743 (91, 228, 9122),
2744 (91, 229, 9125),
2745 (91, 230, 9128),
2746 (91, 231, 9131),
2747 (91, 232, 9134),
2748 (91, 233, 9137),
2749 (91, 234, 9140),
2750 (91, 235, 9143),
2751 (91, 236, 9146),
2752 (91, 237, 9149),
2753 (91, 238, 9152),
2754 (91, 239, 9155),
2755 (91, 240, 9158),
2756 (91, 241, 9161),
2757 (92, 227, 9204),
2758 (92, 228, 9207),
2759 (92, 229, 9210),
2760 (92, 230, 9213),
2761 (92, 231, 9216),
2762 (92, 232, 9219),
2763 (92, 233, 9222),
2764 (92, 234, 9225),
2765 (92, 235, 9228),
2766 (92, 236, 9231),
2767 (92, 237, 9234),
2768 (92, 238, 9237),
2769 (92, 239, 9240),
2770 (92, 240, 9243),
2771 (92, 241, 9246),
2772 (92, 242, 9249),
2773 (92, 243, 9252),
2774 (93, 228, 9319),
2775 (93, 229, 9322),
2776 (93, 230, 9325),
2777 (93, 231, 9328),
2778 (93, 232, 9331),
2779 (93, 233, 9334),
2780 (93, 234, 9337),
2781 (93, 235, 9340),
2782 (93, 236, 9343),
2783 (93, 237, 9346),
2784 (93, 238, 9349),
2785 (93, 239, 9352),
2786 (93, 240, 9355),
2787 (93, 241, 9358),
2788 (93, 242, 9361),
2789 (93, 243, 9364),
2790 (93, 244, 9367),
2791 (93, 245, 9370),
2792 (94, 227, 9401),
2793 (94, 228, 9404),
2794 (94, 229, 9407),
2795 (94, 230, 9410),
2796 (94, 231, 9413),
2797 (94, 232, 9416),
2798 (94, 233, 9419),
2799 (94, 234, 9422),
2800 (94, 235, 9425),
2801 (94, 236, 9428),
2802 (94, 237, 9431),
2803 (94, 238, 9434),
2804 (94, 239, 9437),
2805 (94, 240, 9440),
2806 (94, 241, 9443),
2807 (94, 242, 9446),
2808 (94, 243, 9449),
2809 (94, 244, 9452),
2810 (94, 245, 9455),
2811 (94, 246, 9458),
2812 (94, 247, 9461),
2813 (95, 229, 9507),
2814 (95, 230, 9510),
2815 (95, 231, 9513),
2816 (95, 232, 9516),
2817 (95, 233, 9519),
2818 (95, 234, 9522),
2819 (95, 235, 9525),
2820 (95, 236, 9528),
2821 (95, 237, 9531),
2822 (95, 238, 9534),
2823 (95, 239, 9537),
2824 (95, 240, 9540),
2825 (95, 241, 9543),
2826 (95, 242, 9546),
2827 (95, 243, 9549),
2828 (95, 244, 9552),
2829 (95, 245, 9555),
2830 (95, 246, 9558),
2831 (95, 247, 9561),
2832 (95, 248, 9564),
2833 (95, 249, 9567),
2834 (96, 231, 9598),
2835 (96, 232, 9601),
2836 (96, 233, 9604),
2837 (96, 234, 9607),
2838 (96, 235, 9610),
2839 (96, 236, 9613),
2840 (96, 237, 9616),
2841 (96, 238, 9619),
2842 (96, 239, 9622),
2843 (96, 240, 9625),
2844 (96, 241, 9628),
2845 (96, 242, 9631),
2846 (96, 243, 9634),
2847 (96, 244, 9637),
2848 (96, 245, 9640),
2849 (96, 246, 9643),
2850 (96, 247, 9646),
2851 (96, 248, 9649),
2852 (96, 249, 9652),
2853 (96, 250, 9655),
2854 (96, 251, 9658),
2855 (96, 252, 9661),
2856 (97, 233, 9704),
2857 (97, 234, 9707),
2858 (97, 235, 9710),
2859 (97, 236, 9713),
2860 (97, 237, 9716),
2861 (97, 238, 9719),
2862 (97, 239, 9722),
2863 (97, 240, 9725),
2864 (97, 241, 9728),
2865 (97, 242, 9731),
2866 (97, 243, 9734),
2867 (97, 244, 9737),
2868 (97, 245, 9740),
2869 (97, 246, 9743),
2870 (97, 247, 9746),
2871 (97, 248, 9749),
2872 (97, 249, 9752),
2873 (97, 250, 9755),
2874 (97, 251, 9758),
2875 (97, 252, 9761),
2876 (97, 253, 9764),
2877 (97, 254, 9767),
2878 (98, 239, 9822),
2879 (98, 240, 9825),
2880 (98, 241, 9828),
2881 (98, 242, 9831),
2882 (98, 243, 9834),
2883 (98, 244, 9837),
2884 (98, 245, 9840),
2885 (98, 246, 9843),
2886 (98, 247, 9846),
2887 (98, 248, 9849),
2888 (98, 249, 9852),
2889 (98, 250, 9855),
2890 (98, 251, 9858),
2891 (98, 252, 9861),
2892 (98, 253, 9864),
2893 (98, 254, 9867),
2894 (98, 255, 9870),
2895 (98, 256, 9873),
2896 (99, 239, 9899),
2897 (99, 240, 9900),
2898 (99, 241, 9901),
2899 (99, 242, 9902),
2900 (99, 243, 9903),
2901 (99, 244, 9904),
2902 (99, 245, 9905),
2903 (99, 246, 9906),
2904 (99, 247, 9907),
2905 (99, 248, 9908),
2906 (99, 249, 9909),
2907 (99, 250, 9910),
2908 (99, 251, 9911),
2909 (99, 252, 9912),
2910 (99, 253, 9913),
2911 (99, 254, 9914),
2912 (99, 255, 9915),
2913 (99, 256, 9916),
2914 (99, 257, 9917),
2915 (99, 258, 9918),
2916 (100, 245, 9926),
2917 (100, 246, 9927),
2918 (100, 247, 9928),
2919 (100, 248, 9929),
2920 (100, 249, 9930),
2921 (100, 250, 9931),
2922 (100, 251, 9932),
2923 (100, 252, 9933),
2924 (100, 253, 9934),
2925 (100, 254, 9935),
2926 (100, 255, 9936),
2927 (100, 256, 9937),
2928 (100, 257, 9938),
2929 (100, 259, 9940),
2930 (100, 260, 9941),
2931 (101, 247, 9948),
2932 (101, 248, 9949),
2933 (101, 249, 9950),
2934 (101, 250, 9951),
2935 (101, 251, 9952),
2936 (101, 252, 9953),
2937 (101, 253, 9954),
2938 (101, 254, 9955),
2939 (101, 255, 9956),
2940 (101, 256, 9957),
2941 (101, 257, 9958),
2942 (101, 258, 9959),
2943 (101, 259, 9960),
2944 (101, 260, 9961),
2945 (101, 261, 9962),
2946 (101, 262, 9963),
2947 (102, 252, 9970),
2948 (102, 253, 9971),
2949 (102, 254, 9972),
2950 (102, 255, 9973),
2951 (102, 256, 9974),
2952 (102, 257, 9975),
2953 (102, 259, 9977),
2954 (102, 261, 9979),
2955 (102, 263, 9981),
2956 (102, 264, 9982),
2957 (103, 254, 9983),
2958 (103, 255, 9984),
2959 (103, 256, 9985),
2960 (103, 257, 9986),
2961 (103, 258, 9987),
2962 (103, 259, 9988),
2963 (103, 260, 9989),
2964 (103, 261, 9990),
2965 (103, 262, 9991),
2966 (103, 263, 9992),
2967 (103, 264, 9993),
2968 (103, 265, 9994),
2969 (103, 266, 9995),
2970 (104, 255, 455),
2971 (104, 257, 457),
2972 (104, 259, 459),
2973 (104, 261, 461),
2974 (104, 263, 463),
2975 (104, 264, 464),
2976 (104, 265, 465),
2977 (104, 266, 466),
2978 (104, 267, 467),
2979 (104, 268, 468),
2980 (105, 256, 556),
2981 (105, 257, 557),
2982 (105, 258, 558),
2983 (105, 260, 560),
2984 (105, 261, 561),
2985 (105, 262, 562),
2986 (105, 263, 563),
2987 (105, 264, 564),
2988 (105, 265, 565),
2989 (105, 266, 566),
2990 (105, 267, 567),
2991 (105, 268, 568),
2992 (105, 269, 569),
2993 (105, 270, 570),
2994 (106, 265, 665),
2995 (106, 267, 667),
2996 (106, 268, 668),
2997 (106, 269, 669),
2998 (106, 270, 670),
2999 (106, 271, 671),
3000 (106, 272, 672),
3001 (106, 273, 673),
3002 (107, 264, 764),
3003 (107, 265, 765),
3004 (107, 266, 766),
3005 (107, 267, 767),
3006 (107, 268, 768),
3007 (107, 269, 769),
3008 (107, 270, 770),
3009 (107, 271, 771),
3010 (107, 272, 772),
3011 (107, 273, 773),
3012 (107, 274, 774),
3013 (107, 275, 775),
3014 (107, 276, 776),
3015 (108, 268, 868),
3016 (108, 269, 869),
3017 (108, 270, 870),
3018 (108, 271, 871),
3019 (108, 272, 872),
3020 (108, 273, 873),
3021 (108, 279, 879),
3022 (109, 277, 977),
3023 (109, 278, 978),
3024 (110, 281, 1081),
3025 (110, 282, 1082),
3026 (110, 283, 1083),
3027 (110, 284, 1084),
3028 (111, 280, 1180),
3029 (111, 281, 1181),
3030 (111, 283, 1183),
3031 (112, 283, 1283),
3032 (112, 285, 1285),
3033 (113, 285, 1385),
3034 (113, 286, 1386),
3035 (113, 287, 1387),
3036 (113, 288, 1388),
3037 (113, 289, 1389),
3038 (113, 290, 1390),
3039 (114, 289, 1489),
3040 (115, 291, 1591),
3041];
3042
3043#[rustfmt::skip]
3049static CENDL_3_2_MAT_TABLE: &[(u32, u32, u32)] = &[
3050 (0, 1, 25),
3051 (1, 1, 125),
3052 (1, 2, 128),
3053 (1, 3, 131),
3054 (2, 3, 225),
3055 (2, 4, 228),
3056 (3, 6, 325),
3057 (3, 7, 328),
3058 (4, 9, 425),
3059 (5, 10, 525),
3060 (5, 11, 528),
3061 (6, 12, 625),
3062 (7, 14, 725),
3063 (8, 16, 825),
3064 (9, 19, 925),
3065 (11, 23, 1125),
3066 (12, 24, 1225),
3067 (12, 25, 1228),
3068 (12, 26, 1231),
3069 (13, 27, 1325),
3070 (14, 28, 1425),
3071 (14, 29, 1428),
3072 (14, 30, 1431),
3073 (15, 31, 1525),
3074 (16, 32, 1625),
3075 (16, 33, 1628),
3076 (16, 34, 1631),
3077 (16, 36, 1637),
3078 (20, 40, 2025),
3079 (22, 46, 2225),
3080 (22, 47, 2228),
3081 (22, 48, 2231),
3082 (22, 49, 2234),
3083 (22, 50, 2237),
3084 (24, 50, 2425),
3085 (24, 52, 2431),
3086 (24, 53, 2434),
3087 (24, 54, 2437),
3088 (25, 55, 2525),
3089 (26, 54, 2625),
3090 (26, 56, 2631),
3091 (26, 57, 2634),
3092 (26, 58, 2637),
3093 (27, 59, 2725),
3094 (28, 58, 2825),
3095 (28, 60, 2831),
3096 (28, 61, 2834),
3097 (28, 62, 2837),
3098 (28, 64, 2843),
3099 (29, 63, 2925),
3100 (29, 65, 2931),
3101 (30, 64, 3025),
3102 (30, 66, 3031),
3103 (30, 67, 3034),
3104 (30, 68, 3037),
3105 (30, 70, 3043),
3106 (31, 69, 3125),
3107 (31, 71, 3131),
3108 (32, 70, 3225),
3109 (32, 71, 3228),
3110 (32, 72, 3231),
3111 (32, 73, 3234),
3112 (32, 74, 3237),
3113 (32, 75, 3240),
3114 (32, 76, 3243),
3115 (32, 77, 3246),
3116 (32, 78, 3249),
3117 (33, 75, 3325),
3118 (33, 77, 3331),
3119 (33, 79, 3337),
3120 (34, 74, 3425),
3121 (34, 76, 3431),
3122 (34, 77, 3434),
3123 (34, 78, 3437),
3124 (34, 79, 3440),
3125 (34, 80, 3443),
3126 (34, 82, 3449),
3127 (36, 83, 3640),
3128 (36, 84, 3643),
3129 (36, 85, 3646),
3130 (36, 86, 3649),
3131 (36, 87, 3687),
3132 (36, 88, 3688),
3133 (37, 85, 3725),
3134 (37, 87, 3731),
3135 (38, 88, 3837),
3136 (38, 89, 3840),
3137 (38, 90, 3843),
3138 (39, 89, 3925),
3139 (39, 91, 3931),
3140 (40, 90, 4025),
3141 (40, 91, 4028),
3142 (40, 92, 4031),
3143 (40, 93, 4034),
3144 (40, 94, 4037),
3145 (40, 95, 4040),
3146 (40, 96, 4043),
3147 (41, 93, 4125),
3148 (41, 95, 4131),
3149 (42, 92, 4225),
3150 (42, 93, 4228),
3151 (42, 94, 4231),
3152 (42, 95, 4234),
3153 (42, 96, 4237),
3154 (42, 97, 4240),
3155 (42, 98, 4243),
3156 (42, 99, 4246),
3157 (42, 100, 4249),
3158 (43, 99, 4325),
3159 (44, 99, 4434),
3160 (44, 100, 4437),
3161 (44, 101, 4440),
3162 (44, 102, 4443),
3163 (44, 103, 4446),
3164 (44, 104, 4449),
3165 (44, 105, 4452),
3166 (45, 103, 4525),
3167 (45, 105, 4531),
3168 (46, 105, 4634),
3169 (46, 108, 4643),
3170 (47, 107, 4725),
3171 (47, 109, 4731),
3172 (48, 113, 4846),
3173 (49, 113, 4925),
3174 (49, 115, 4931),
3175 (50, 112, 5025),
3176 (50, 114, 5031),
3177 (50, 115, 5034),
3178 (50, 116, 5037),
3179 (50, 117, 5040),
3180 (50, 118, 5043),
3181 (50, 119, 5046),
3182 (50, 120, 5049),
3183 (50, 122, 5055),
3184 (50, 124, 5061),
3185 (50, 126, 5067),
3186 (50, 128, 5073),
3187 (51, 121, 5125),
3188 (51, 123, 5131),
3189 (51, 124, 5134),
3190 (51, 125, 5137),
3191 (51, 127, 5143),
3192 (52, 130, 5255),
3193 (53, 127, 5325),
3194 (53, 129, 5331),
3195 (53, 130, 5334),
3196 (53, 131, 5337),
3197 (53, 135, 5349),
3198 (54, 123, 5422),
3199 (54, 124, 5425),
3200 (54, 129, 5440),
3201 (54, 131, 5446),
3202 (54, 132, 5449),
3203 (54, 133, 5452),
3204 (54, 134, 5455),
3205 (54, 135, 5458),
3206 (54, 136, 5461),
3207 (55, 133, 5525),
3208 (55, 134, 5528),
3209 (55, 135, 5531),
3210 (55, 137, 5537),
3211 (56, 130, 5625),
3212 (56, 132, 5631),
3213 (56, 134, 5637),
3214 (56, 135, 5640),
3215 (56, 136, 5643),
3216 (56, 137, 5646),
3217 (56, 138, 5649),
3218 (57, 139, 5728),
3219 (58, 136, 5825),
3220 (58, 138, 5831),
3221 (58, 140, 5837),
3222 (58, 141, 5840),
3223 (58, 142, 5843),
3224 (58, 144, 5849),
3225 (59, 141, 5925),
3226 (60, 142, 6025),
3227 (60, 143, 6028),
3228 (60, 144, 6031),
3229 (60, 145, 6034),
3230 (60, 146, 6037),
3231 (60, 147, 6040),
3232 (60, 148, 6043),
3233 (60, 150, 6049),
3234 (61, 147, 6149),
3235 (61, 148, 6152),
3236 (61, 149, 6155),
3237 (62, 144, 6225),
3238 (62, 147, 6234),
3239 (62, 148, 6237),
3240 (62, 149, 6240),
3241 (62, 150, 6243),
3242 (62, 151, 6246),
3243 (62, 152, 6249),
3244 (62, 154, 6255),
3245 (63, 151, 6325),
3246 (63, 153, 6331),
3247 (63, 154, 6334),
3248 (63, 155, 6337),
3249 (64, 152, 6425),
3250 (64, 154, 6431),
3251 (64, 155, 6434),
3252 (64, 156, 6437),
3253 (64, 157, 6440),
3254 (64, 158, 6443),
3255 (64, 160, 6449),
3256 (66, 164, 6649),
3257 (67, 165, 6725),
3258 (72, 174, 7225),
3259 (72, 176, 7231),
3260 (72, 177, 7234),
3261 (72, 178, 7237),
3262 (72, 179, 7240),
3263 (72, 180, 7243),
3264 (73, 181, 7328),
3265 (74, 180, 7425),
3266 (74, 182, 7431),
3267 (74, 183, 7434),
3268 (74, 184, 7437),
3269 (74, 186, 7443),
3270 (79, 197, 7925),
3271 (82, 204, 8225),
3272 (82, 206, 8231),
3273 (82, 207, 8234),
3274 (82, 208, 8237),
3275 (83, 209, 8325),
3276 (90, 232, 9040),
3277 (92, 232, 9219),
3278 (92, 233, 9222),
3279 (92, 234, 9225),
3280 (92, 235, 9228),
3281 (92, 236, 9231),
3282 (92, 237, 9234),
3283 (92, 238, 9237),
3284 (92, 239, 9240),
3285 (92, 240, 9243),
3286 (92, 241, 9246),
3287 (93, 236, 9343),
3288 (93, 237, 9346),
3289 (93, 238, 9349),
3290 (93, 239, 9352),
3291 (94, 236, 9428),
3292 (94, 237, 9431),
3293 (94, 238, 9434),
3294 (94, 239, 9437),
3295 (94, 240, 9440),
3296 (94, 241, 9443),
3297 (94, 242, 9446),
3298 (94, 243, 9449),
3299 (94, 244, 9452),
3300 (94, 245, 9455),
3301 (94, 246, 9458),
3302 (95, 240, 9540),
3303 (95, 241, 9543),
3304 (95, 242, 9546),
3305 (95, 243, 9549),
3306 (95, 244, 9552),
3307 (97, 249, 9752),
3308 (98, 249, 9852),
3309];
3310
3311#[cfg(test)]
3312mod tests {
3313 use super::*;
3314
3315 #[test]
3316 fn test_mat_number_known_values() {
3317 assert_eq!(mat_number(92, 235), Some(9228));
3318 assert_eq!(mat_number(92, 238), Some(9237));
3319 assert_eq!(mat_number(26, 56), Some(2631));
3320 assert_eq!(mat_number(1, 1), Some(125));
3321 assert_eq!(mat_number(0, 1), Some(25)); assert_eq!(mat_number(94, 239), Some(9437));
3323 }
3324
3325 #[test]
3326 fn test_mat_number_tungsten() {
3327 assert_eq!(mat_number(74, 182), Some(7431));
3328 assert_eq!(mat_number(74, 183), Some(7434));
3329 assert_eq!(mat_number(74, 184), Some(7437));
3330 assert_eq!(mat_number(74, 186), Some(7443));
3331 }
3332
3333 #[test]
3334 fn test_mat_number_tin_expansion() {
3335 assert_eq!(mat_number(50, 120), Some(5049));
3337 assert_eq!(mat_number(50, 116), Some(5037));
3338 assert_eq!(mat_number(50, 118), Some(5043));
3339 }
3340
3341 #[test]
3342 fn test_mat_number_corrected_regressions() {
3343 assert_eq!(mat_number(48, 113), Some(4846));
3349 assert_eq!(isotope_from_mat(4846), Some((48, 113)));
3350
3351 assert_eq!(mat_number(72, 177), Some(7234));
3353 assert_eq!(isotope_from_mat(7234), Some((72, 177)));
3354
3355 assert_eq!(mat_number(72, 178), Some(7237));
3357 assert_eq!(isotope_from_mat(7237), Some((72, 178)));
3358
3359 assert_eq!(mat_number(74, 182), Some(7431));
3361 assert_eq!(mat_number(74, 183), Some(7434));
3362 assert_eq!(mat_number(74, 184), Some(7437));
3363 assert_eq!(mat_number(74, 186), Some(7443));
3364 }
3365
3366 #[test]
3367 fn test_mat_number_unknown() {
3368 assert_eq!(mat_number(200, 400), None);
3369 assert_eq!(mat_number(0, 0), None);
3370 }
3371
3372 #[test]
3373 fn test_isotope_from_mat() {
3374 assert_eq!(isotope_from_mat(9228), Some((92, 235)));
3375 assert_eq!(isotope_from_mat(9237), Some((92, 238)));
3376 assert_eq!(isotope_from_mat(2631), Some((26, 56)));
3377 assert_eq!(isotope_from_mat(25), Some((0, 1))); }
3379
3380 #[test]
3381 fn test_isotope_from_mat_unknown() {
3382 assert_eq!(isotope_from_mat(9999), None);
3383 assert_eq!(isotope_from_mat(0), None);
3384 }
3385
3386 #[test]
3387 fn test_mat_roundtrip() {
3388 for &(z, a, mat) in ENDF_MAT_TABLE.iter() {
3389 assert_eq!(
3390 mat_number(z, a),
3391 Some(mat),
3392 "mat_number({}, {}) failed",
3393 z,
3394 a
3395 );
3396 assert_eq!(
3397 isotope_from_mat(mat),
3398 Some((z, a)),
3399 "isotope_from_mat({}) failed",
3400 mat
3401 );
3402 }
3403 }
3404
3405 #[test]
3406 fn test_table_size() {
3407 assert_eq!(ENDF_MAT_TABLE.len(), 535);
3408 }
3409
3410 #[test]
3411 fn test_known_isotopes_plutonium() {
3412 let pu = known_isotopes(94);
3413 assert_eq!(
3414 pu,
3415 vec![236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246]
3416 );
3417 }
3418
3419 #[test]
3420 fn test_known_isotopes_technetium() {
3421 let tc = known_isotopes(43);
3423 assert_eq!(tc, vec![98, 99]);
3424 }
3425
3426 #[test]
3427 fn test_known_isotopes_iron() {
3428 let fe = known_isotopes(26);
3429 assert_eq!(fe, vec![54, 55, 56, 57, 58]);
3430 }
3431
3432 #[test]
3433 fn test_known_isotopes_unknown() {
3434 assert!(known_isotopes(200).is_empty());
3435 assert!(known_isotopes(119).is_empty());
3436 }
3437
3438 #[test]
3439 fn test_known_isotopes_superset_of_natural() {
3440 use crate::abundances::natural_isotopes;
3441 for z in 1..=92 {
3442 let natural_a: Vec<u32> = natural_isotopes(z).into_iter().map(|(a, _)| a).collect();
3443 let known_a = known_isotopes(z);
3444 for a in &natural_a {
3445 assert!(
3446 known_a.contains(a),
3447 "Z={z}, A={a} is natural but not in known_isotopes"
3448 );
3449 }
3450 }
3451 }
3452
3453 #[test]
3454 fn test_has_endf_evaluation() {
3455 assert!(has_endf_evaluation(94, 239)); assert!(has_endf_evaluation(92, 235)); assert!(!has_endf_evaluation(94, 999)); assert!(!has_endf_evaluation(200, 400));
3459 }
3460
3461 #[test]
3462 fn test_table_sorted() {
3463 for i in 1..ENDF_MAT_TABLE.len() {
3464 let (z1, a1, _) = ENDF_MAT_TABLE[i - 1];
3465 let (z2, a2, _) = ENDF_MAT_TABLE[i];
3466 assert!(
3467 (z1, a1) < (z2, a2),
3468 "Table not sorted at index {}: ({}, {}) >= ({}, {})",
3469 i,
3470 z1,
3471 a1,
3472 z2,
3473 a2
3474 );
3475 }
3476 }
3477
3478 #[test]
3479 fn test_mat_number_tendl_known_values() {
3480 assert_eq!(mat_number_tendl(92, 235), Some(9228));
3482 assert_eq!(mat_number_tendl(92, 238), Some(9237));
3483 assert_eq!(mat_number_tendl(72, 180), Some(7243));
3484 assert_eq!(mat_number_tendl(1, 1), Some(125));
3485 assert_eq!(mat_number_tendl(100, 247), Some(9928)); assert_eq!(mat_number(100, 247), None);
3488 }
3489
3490 #[test]
3491 fn test_mat_number_tendl_es255_mismatch() {
3492 assert_eq!(mat_number(99, 255), Some(9916));
3495 assert_eq!(mat_number_tendl(99, 255), Some(9915));
3496 }
3497
3498 #[test]
3499 fn test_tendl_table_size() {
3500 assert_eq!(TENDL_2023_MAT_TABLE.len(), 2300);
3501 }
3502
3503 #[test]
3504 fn test_tendl_table_sorted() {
3505 for i in 1..TENDL_2023_MAT_TABLE.len() {
3506 let (z1, a1, _) = TENDL_2023_MAT_TABLE[i - 1];
3507 let (z2, a2, _) = TENDL_2023_MAT_TABLE[i];
3508 assert!(
3509 (z1, a1) < (z2, a2),
3510 "TENDL table not sorted at index {}: ({}, {}) >= ({}, {})",
3511 i,
3512 z1,
3513 a1,
3514 z2,
3515 a2
3516 );
3517 }
3518 }
3519
3520 #[test]
3521 fn test_tendl_shared_isotopes_agree_except_es255() {
3522 for &(z, a, endfb_mat) in ENDF_MAT_TABLE {
3527 if let Some(tendl_mat) = mat_number_tendl(z, a) {
3528 if z == 99 && a == 255 {
3529 continue; }
3531 assert_eq!(
3532 tendl_mat, endfb_mat,
3533 "MAT mismatch for (Z={z}, A={a}): ENDF/B-VIII.0={endfb_mat}, TENDL-2023={tendl_mat}"
3534 );
3535 }
3536 }
3537 }
3538
3539 #[test]
3540 fn test_mat_number_cendl_known_values() {
3541 assert_eq!(mat_number_cendl(56, 136), Some(5643));
3543 assert_eq!(mat_number_cendl(56, 137), Some(5646));
3544 assert_eq!(mat_number_cendl(56, 138), Some(5649));
3545 assert_eq!(mat_number_cendl(72, 177), Some(7234));
3547 assert_eq!(mat_number_cendl(72, 178), Some(7237));
3548 assert_eq!(mat_number_cendl(92, 238), Some(9237));
3550 assert_eq!(mat_number_cendl(0, 1), Some(25));
3552 }
3553
3554 #[test]
3555 fn test_mat_number_cendl_br_absent() {
3556 assert_eq!(mat_number_cendl(35, 79), None);
3560 assert_eq!(mat_number_cendl(35, 81), None);
3561 assert!(known_isotopes_cendl(35).is_empty());
3562 assert!(!has_endf_evaluation_cendl(35, 79));
3563 }
3564
3565 #[test]
3566 fn test_known_isotopes_cendl_ba() {
3567 let ba = known_isotopes_cendl(56);
3568 assert_eq!(ba, vec![130, 132, 134, 135, 136, 137, 138]);
3569 }
3570
3571 #[test]
3572 fn test_known_isotopes_cendl_hf() {
3573 let hf = known_isotopes_cendl(72);
3574 assert_eq!(hf, vec![174, 176, 177, 178, 179, 180]);
3575 }
3576
3577 #[test]
3578 fn test_cendl_table_size() {
3579 assert_eq!(CENDL_3_2_MAT_TABLE.len(), 259);
3580 }
3581
3582 #[test]
3583 fn test_cendl_table_sorted() {
3584 for i in 1..CENDL_3_2_MAT_TABLE.len() {
3585 let (z1, a1, _) = CENDL_3_2_MAT_TABLE[i - 1];
3586 let (z2, a2, _) = CENDL_3_2_MAT_TABLE[i];
3587 assert!(
3588 (z1, a1) < (z2, a2),
3589 "CENDL table not sorted at index {}: ({}, {}) >= ({}, {})",
3590 i,
3591 z1,
3592 a1,
3593 z2,
3594 a2
3595 );
3596 }
3597 }
3598
3599 #[test]
3600 fn test_cendl_shared_isotopes_agree_with_endfb() {
3601 for &(z, a, endfb_mat) in ENDF_MAT_TABLE {
3606 if let Some(cendl_mat) = mat_number_cendl(z, a) {
3607 assert_eq!(
3608 cendl_mat, endfb_mat,
3609 "MAT mismatch for (Z={z}, A={a}): ENDF/B-VIII.0={endfb_mat}, CENDL-3.2={cendl_mat}"
3610 );
3611 }
3612 }
3613 }
3614}