-
Notifications
You must be signed in to change notification settings - Fork 0
/
skg_tgang_cpp.h
652 lines (649 loc) · 66.6 KB
/
skg_tgang_cpp.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
const char* t44g[44] = {
"123456789123456789123456789","123456789123456789123457689", // 0 1
"123456789123456789124357689","123456789123456789124378569", // 2 3
"123456789123456789147258369","123456789123457689123458679", // 4 5
"123456789123457689123468579","123456789123457689124356789", // 6 7
"123456789123457689124358679","123456789123457689124367589", // 8 9
"123456789123457689124368579","123456789123457689124389567", // 10 11
"123456789123457689126345789","123456789123457689126347589", // 12 13
"123456789123457689126348579","123456789123457689145267389", // 14 15
"123456789123457689145268379","123456789123457689146258379", // 16 17
"123456789123457689148259367","123456789124357689125348679", // 18 19
"123456789124357689125367489","123456789124357689125368479", // 20 21
"123456789124357689125378469","123456789124357689126358479", // 22 23
"123456789124357689126378459","123456789124357689126389457", // 24 25
"123456789124357689128345679","123456789124357689128356479", // 26 27
"123456789124357689128359467","123456789124357689134258679", // 28 29
"123456789124357689134268579","123456789124357689135268479", // 30 31
"123456789124357689135278469","123456789124357689136258479", // 32 33
"123456789124357689136278459","123456789124357689137268459", // 34 35
"123456789124357689138259467","123456789124357689138269457", // 36 37
"123456789124357689158267349","123456789124378569129356478", // 38 39
"123456789124378569135279468","123456789124378569137245689", // 40 41
"123456789124378569157268349","123456789147258369159267348", // 42 43
};
const char* t44fills[1892] = {
"147369258258147369369258147","147269358258347169369158247","147359268258167349369248157","147259368258367149369148257",
"147368259258149367369257148","147268359258349167369157248","147358269258169347369247158","147258369258369147369147258",
"147368259259147368368259147","147268359259347168368159247","147358269259167348368249157","147258369259367148368149257",
"147369258259148367368257149","147269358259348167368157249","147359268259168347368247159","147259368259368147368147259",
"148369257257148369369257148","148269357257348169369157248","148359267257168349369247158","148259367257368149369147258",
"148367259257149368369258147","148267359257349168369158247","148357269257169348369248157","148257369257369148369148257",
"148367259259148367367259148","148267359259348167367159248","148357269259168347367249158","148257369259368147367149258",
"148369257259147368367258149","148269357259347168367158249","148359267259167348367248159","148259367259367148367148259",
"149368257257149368368257149","149268357257349168368157249","149358267257169348368247159","149258367257369148368147259",
"149367258257148369368259147","149267358257348169368159247","149357268257168349368249157","149257368257368149368149257",
"149367258258149367367258149","149267358258349167367158249","149357268258169347367248159","149257368258369147367148259",
"149368257258147369367259148","149268357258347169367159248","149358267258167349367249158","149258367258367149367149258",
"147359268268147359359268147","147259368268347159359168247","147369258268157349359248167","147269358268357149359148267",
"147358269268149357359267148","147258369268349157359167248","147368259268159347359247168","147268359268359147359147268",
"147358269269147358358269147","147258369269347158358169247","147368259269157348358249167","147268359269357148358149267",
"147359268269148357358267149","147259368269348157358167249","147369258269158347358247169","147269358269358147358147269",
"148359267267148359359267148","148259367267348159359167248","148369257267158349359247168","148269357267358149359147268",
"148357269267149358359268147","148257369267349158359168247","148367259267159348359248167","148267359267359148359148267",
"148357269269148357357269148","148257369269348157357169248","148367259269158347357249168","148267359269358147357149268",
"148359267269147358357268149","148259367269347158357168249","148369257269157348357248169","148269357269357148357148269",
"149358267267149358358267149","149258367267349158358167249","149368257267159348358247169","149268357267359148358147269",
"149357268267148359358269147","149257368267348159358169247","149367258267158349358249167","149267358267358149358149267",
"149357268268149357357268149","149257368268349157357168249","149367258268159347357248169","149267358268359147357148269",
"149358267268147359357269148","149258367268347159357169248","149368257268157349357249168","149268357268357149357149268",
"157369248248157369369248157","157269348248357169369148257","157349268248167359369258147","157249368248367159369158247",
"157368249248159367369247158","157268349248359167369147258","157348269248169357369257148","157248369248369157369157248",
"157368249249157368368249157","157268349249357168368149257","157348269249167358368259147","157248369249367158368159247",
"157369248249158367368247159","157269348249358167368147259","157349268249168357368257149","157249368249368157368157249",
"158369247247158369369247158","158269347247358169369147258","158349267247168359369257148","158249367247368159369157248",
"158367249247159368369248157","158267349247359168369148257","158347269247169358369258147","158247369247369158369158247",
"158367249249158367367249158","158267349249358167367149258","158347269249168357367259148","158247369249368157367159248",
"158369247249157368367248159","158269347249357168367148259","158349267249167358367258149","158249367249367158367158249",
"159368247247159368368247159","159268347247359168368147259","159348267247169358368257149","159248367247369158368157249",
"159367248247158369368249157","159267348247358169368149257","159347268247168359368259147","159247368247368159368159247",
"159367248248159367367248159","159267348248359167367148259","159347268248169357367258149","159247368248369157367158249",
"159368247248157369367249158","159268347248357169367149258","159348267248167359367259148","159248367248367159367159248",
"157349268268157349349268157","157249368268357149349168257","157369248268147359349258167","157269348268347159349158267",
"157348269268159347349267158","157248369268359147349167258","157368249268149357349257168","157268349268349157349157268",
"157348269269157348348269157","157248369269357148348169257","157368249269147358348259167","157268349269347158348159267",
"157349268269158347348267159","157249368269358147348167259","157369248269148357348257169","157269348269348157348157269",
"158349267267158349349267158","158249367267358149349167258","158369247267148359349257168","158269347267348159349157268",
"158347269267159348349268157","158247369267359148349168257","158367249267149358349258167","158267349267349158349158267",
"158347269269158347347269158","158247369269358147347169258","158367249269148357347259168","158267349269348157347159268",
"158349267269157348347268159","158249367269357148347168259","158369247269147358347258169","158269347269347158347158269",
"159348267267159348348267159","159248367267359148348167259","159368247267149358348257169","159268347267349158348157269",
"159347268267158349348269157","159247368267358149348169257","159367248267148359348259167","159267348267348159348159267",
"159347268268159347347268159","159247368268359147347168259","159367248268149357347258169","159267348268349157347158269",
"159348267268157349347269158","159248367268357149347169258","159368247268147359347259168","159268347268347159347159268",
"167359248248167359359248167","167259348248367159359148267","167349258248157369359268147","167249358248357169359168247",
"167358249248169357359247168","167258349248369157359147268","167348259248159367359267148","167248359248359167359167248",
"167358249249167358358249167","167258349249367158358149267","167348259249157368358269147","167248359249357168358169247",
"167359248249168357358247169","167259348249368157358147269","167349258249158367358267149","167249358249358167358167249",
"168359247247168359359247168","168259347247368159359147268","168349257247158369359267148","168249357247358169359167248",
"168357249247169358359248167","168257349247369158359148267","168347259247159368359268147","168247359247359168359168247",
"168357249249168357357249168","168257349249368157357149268","168347259249158367357269148","168247359249358167357169248",
"168359247249167358357248169","168259347249367158357148269","168349257249157368357268149","168249357249357168357168249",
"169358247247169358358247169","169258347247369158358147269","169348257247159368358267149","169248357247359168358167249",
"169357248247168359358249167","169257348247368159358149267","169347258247158369358269147","169247358247358169358169247",
"169357248248169357357248169","169257348248369157357148269","169347258248159367357268149","169247358248359167357168249",
"169358247248167359357249168","169258347248367159357149268","169348257248157369357269148","169248357248357169357169248",
"167349258258167349349258167","167249358258367149349158267","167359248258147369349268157","167259348258347169349168257",
"167348259258169347349257168","167248359258369147349157268","167358249258149367349267158","167258349258349167349167258",
"167348259259167348348259167","167248359259367148348159267","167358249259147368348269157","167258349259347168348169257",
"167349258259168347348257169","167249358259368147348157269","167359248259148367348267159","167259348259348167348167259",
"168349257257168349349257168","168249357257368149349157268","168359247257148369349267158","168259347257348169349167258",
"168347259257169348349258167","168247359257369148349158267","168357249257149368349268157","168257349257349168349168257",
"168347259259168347347259168","168247359259368147347159268","168357249259148367347269158","168257349259348167347169258",
"168349257259167348347258169","168249357259367148347158269","168359247259147368347268159","168259347259347168347168259",
"169348257257169348348257169","169248357257369148348157269","169358247257149368348267159","169258347257349168348167259",
"169347258257168349348259167","169247358257368149348159267","169357248257148369348269157","169257348257348169348169257",
"169347258258169347347258169","169247358258369147347158269","169357248258149367347268159","169257348258349167347168259",
"169348257258167349347259168","169248357258367149347159268","169358247258147369347269158","169258347258347169347169258",
"147368259258149376369257148","147268359258349176369157248","147369258259148376368257149","147269358259348176368157249",
"148359276257168349369247158","148259376257368149369147258","148367259259148376367259148","148267359259348176367159248",
"148359276259167348367248159","148259376259367148367148259","149358276257169348368247159","149258376257369148368147259",
"149367258258149376367258149","149267358258349176367158249","149358276258167349367249158","149258376258367149367149258",
"147369258268157349359248176","147269358268357149359148276","147368259269157348358249176","147268359269357148358149276",
"148359276267148359359267148","148259376267348159359167248","148367259267159348359248176","148267359267359148359148276",
"148359276269147358357268149","148259376269347158357168249","149358276267149358358267149","149258376267349158358167249",
"149367258267158349358249176","149267358267358149358149276","149358276268147359357269148","149258376268347159357169248",
"157368249248159376369247158","157268349248359176369147258","157369248249158376368247159","157269348249358176368147259",
"158349276247168359369257148","158249376247368159369157248","158367249249158376367249158","158267349249358176367149258",
"158349276249167358367258149","158249376249367158367158249","159348276247169358368257149","159248376247369158368157249",
"159367248248159376367248159","159267348248359176367148259","159348276248167359367259148","159248376248367159367159248",
"157369248268147359349258176","157269348268347159349158276","157368249269147358348259176","157268349269347158348159276",
"158349276267158349349267158","158249376267358149349167258","158367249267149358349258176","158267349267349158349158276",
"158349276269157348347268159","158249376269357148347168259","159348276267159348348267159","159248376267359148348167259",
"159367248267148359348259176","159267348267348159348159276","159348276268157349347269158","159248376268357149347169258",
"167359248248167359359248176","167259348248367159359148276","167348259248159376359267148","167248359248359176359167248",
"167358249249167358358249176","167258349249367158358149276","167349258249158376358267149","167249358249358176358167249",
"168357249247169358359248176","168257349247369158359148276","168347259249158376357269148","168247359249358176357169248",
"169357248247168359358249176","169257348247368159358149276","169347258248159376357268149","169247358248359176357168249",
"167349258258167349349258176","167249358258367149349158276","167358249258149376349267158","167258349258349176349167258",
"167348259259167348348259176","167248359259367148348159276","167359248259148376348267159","167259348259348176348167259",
"168347259257169348349258176","168247359257369148349158276","168357249259148376347269158","168257349259348176347169258",
"169347258257168349348259176","169247358257368149348159276","169357248258149376347268159","169257348258349176347168259",
"148359276257168439369247158","148359276259167438367248159","149358276257169438368247159","149358276258167439367249158",
"147369258268157439359248176","147368259269157438358249176","148367259267159438359248176","149367258267158439358249176",
"157268439248359176369147258","157269438249358176368147259","158267439249358176367149258","159267438248359176367148259",
"157269438268347159349158276","157268439269347158348159276","158349276267158439349267158","158267439267349158349158276",
"158349276269157438347268159","159348276267159438348267159","159267438267348159348159276","159348276268157439347269158",
"167259438248367159359148276","167258439249367158358149276","168257439247369158359148276","169257438247368159358149276",
"167349258258167439349258176","167258439258349176349167258","167348259259167438348259176","167259438259348176348167259",
"168347259257169438349258176","168257439259348176347169258","169347258257168439348259176","169257438258349176347168259",
"147359286258167439369248175","148359276257168439369247185","149357286257168439368249175","149358276258167439367249185",
"147369285268157439359248176","148369275267158439359247186","149367285267158439358249176","149368275268157439357249186",
"157268439248359176369147285","157268439249357186368149275","158267439247359186369148275","158267439249358176367149285",
"157349286268157439349268175","157268439268349175349157286","157268439269347185348159276","158349276267158439349267185",
"158267439267349185349158276","158267439269348175347159286","159347286267158439348269175","159348276268157439347269185",
"167258439248369175359147286","167258439249367185358149276","168257439247369185359148276","168257439249368175357149286",
"167349285258167439349258176","167258439258349176349167285","167258439259347186348169275","168349275257168439349257186",
"168257439257349186349168275","168257439259348176347169285","169347285257168439348259176","169348275258167439347259186",
"148269753259347186367158429","148359726259167483367248159","149268753257349186368157429","149358726257169483368247159",
"157269483268347159349158726","157368429268149753349257186","158367429269148753347259186","158349726269157483347268159",
"159348726267159483348267159","159267483267348159348159726","167259483248367159359148726","167358429248169753359247186",
"168357429249168753357249186","168249753249357186357168429","169248753247359186358167429","169257483247368159358149726",
"147359286258176349369248157","147259386258376149369148257","147356289258179346369248157","147256389258379146369148257",
"147356289259178346368249157","147256389259378146368149257","148379256257146389369258147","148279356257346189369158247",
"148376259257149386369258147","148276359257349186369158247","148379256259146387367258149","148279356259346187367158249",
"149378256257146389368259147","149278356257346189368159247","149356287258179346367248159","149256387258379146367148259",
"147356289268149357359278146","147256389268349157359178246","147359286269148357358276149","147259386269348157358176249",
"147356289269148357358279146","147256389269348157358179246","148379256267158349359246187","148279356267358149359146287",
"148379256269158347357246189","148279356269358147357146289","148376259269158347357249186","148276359269358147357149286",
"149356287267148359358279146","149256387267348159358179246","149378256268159347357246189","149278356268359147357146289",
"157349286248176359369258147","157249386248376159369158247","157346289248179356369258147","157246389248379156369158247",
"157346289249178356368259147","157246389249378156368159247","158379246247156389369248157","158279346247356189369148257",
"158376249247159386369248157","158276349247359186369148257","158379246249156387367248159","158279346249356187367148259",
"159378246247156389368249157","159278346247356189368149257","159346287248179356367258149","159246387248379156367158249",
"157346289268159347349278156","157246389268359147349178256","157349286269158347348276159","157249386269358147348176259",
"157346289269158347348279156","157246389269358147348179256","158379246267148359349256187","158279346267348159349156287",
"158379246269148357347256189","158279346269348157347156289","158376249269148357347259186","158276349269348157347159286",
"159346287267158349348279156","159246387267358149348179256","159378246268149357347256189","159278346268349157347156289",
"167358249248179356359246187","167258349248379156359146287","167348259249156387358279146","167248359249356187358179246",
"168349257247156389359278146","168249357247356189359178246","168359247249178356357246189","168259347249378156357146289",
"169348257247159386358276149","169248357247359186358176249","169348257247156389358279146","169248357247356189358179246",
"169358247248179356357246189","169258347248379156357146289","169358247248176359357249186","169258347248376159357149286",
"167348259258179346349256187","167248359258379146349156287","167358249259146387348279156","167258349259346187348179256",
"168359247257146389349278156","168259347257346189349178256","168349257259178346347256189","168249357259378146347156289",
"169358247257149386348276159","169258347257349186348176259","169358247257146389348279156","169258347257346189348179256",
"169348257258179346347256189","169248357258379146347156289","169348257258176349347259186","169248357258376149347159286",
"147356289258149367369278145","147256389258349167369178245","147358269259146387368279145","147258369259346187368179245",
"147356289259148367368279145","147256389259348167368179245","148379265257146389369258147","148279365257346189369158247",
"148359267257146389369278145","148259367257346189369178245","148379265259146387367258149","148279365259346187367158249",
"149378265257146389368259147","149278365257346189368159247","149358267257146389368279145","149258367257346189368179245",
"149376285257148369368259147","149276385257348169368159247","149356287257148369368279145","149256387257348169368179245",
"149376285258149367367258149","149276385258349167367158249","149358267258176349367249185","149258367258376149367149285",
"147358269268179345359246187","147258369268379145359146287","147356289268179345359248167","147256389268379145359148267",
"147356289269178345358249167","147256389269378145358149267","148379265267158349359246187","148279365267358149359146287",
"148379265269158347357246189","148279365269358147357146289","148359267269178345357246189","148259367269378145357146289",
"149358267267149385358276149","149258367267349185358176249","149376285267158349358249167","149276385267358149358149267",
"149378265268159347357246189","149278365268359147357146289","149376285268159347357248169","149276385268359147357148269",
"149358267268179345357246189","149258367268379145357146289","149356287268179345357248169","149256387268379145357148269",
"157346289248179365369258147","157246389248379165369158247","157346289248159367369278145","157246389248359167369178245",
"157348269249176385368259147","157248369249376185368159247","157348269249156387368279145","157248369249356187368179245",
"157346289249178365368259147","157246389249378165368159247","157346289249158367368279145","157246389249358167368179245",
"158349267247156389369278145","158249367247356189369178245","158376249249158367367249185","158276349249358167367149285",
"158349267249176385367258149","158249367249376185367158249","159348267247156389368279145","159248367247356189368179245",
"159346287247158369368279145","159246387247358169368179245","159346287248179365367258149","159246387248379165367158249",
"157348269268179345349256187","157248369268379145349156287","157348269268159347349276185","157248369268359147349176285",
"157346289268179345349258167","157246389268379145349158267","157346289268159347349278165","157246389268359147349178265",
"157346289269178345348259167","157246389269378145348159267","157346289269158347348279165","157246389269358147348179265",
"158349267267158349349276185","158249367267358149349176285","158376249267149385349258167","158276349267349185349158267",
"158349267269178345347256189","158249367269378145347156289","159346287267158349348279165","159246387267358149348179265",
"159348267268179345347256189","159248367268379145347156289","159346287268179345347258169","159246387268379145347158269",
"167358249248179365359246187","167258349248379165359146287","167358249249176385358249167","167258349249376185358149267",
"167349285249158367358276149","167249385249358167358176249","168379245247158369359246187","168279345247358169359146287",
"168379245247156389359248167","168279345247356189359148267","168379245249158367357246189","168279345249358167357146289",
"168379245249156387357248169","168279345249356187357148269","168359247249178365357246189","168259347249378165357146289",
"168359247249176385357248169","168259347249376185357148269","169378245247156389358249167","169278345247356189358149267",
"169378245248159367357246189","169278345248359167357146289","169358247248179365357246189","169258347248379165357146289",
"167349285258176349349258167","167249385258376149349158267","167358249258149367349276185","167258349258349167349176285",
"167358249259146387348279165","167258349259346187348179265","168379245257148369349256187","168279345257348169349156287",
"168379245257146389349258167","168279345257346189349158267","168359247257148369349276185","168259347257348169349176285",
"168359247257146389349278165","168259347257346189349178265","168379245259148367347256189","168279345259348167347156289",
"168379245259146387347258169","168279345259346187347158269","169378245257146389348259167","169278345257346189348159267",
"169358247257146389348279165","169258347257346189348179265","169378245258149367347256189","169278345258349167347156289",
"147359268258176439369248157","147358269259176438368249157","148359267259176438367248159","149358267258176439367249158",
"148376259267159438359248167","148376259269158437357249168","149376258267158439358249167","149376258268159437357248169",
"158276439247359168369148257","158276439249358167367149258","159276438247358169368149257","159276438248359167367148259",
"157348269268159437349276158","157349268269158437348276159","158349267267158439349276158","158276439267349158349158267",
"158276439269348157347159268","159348267267159438348276159","159276438267348159348159267","159276438268349157347158269",
"167259438248376159359148267","167258439249376158358149267","168259437249376158357148269","169258437248376159357149268",
"167349258258176439349258167","167258439258349167349176258","167348259259176438348259167","167259438259348167348176259",
"168259437257348169349176258","168349257259176438347258169","169258437257349168348176259","169348257258176439347259168",
"147359286258176439369248157","147356289258179436369248157","147356289259178436368249157","149356287258179436367248159",
"148379256267158439359246187","148379256269158437357246189","148376259269158437357249186","149378256268159437357246189",
"158279436247356189369148257","158276439247359186369148257","158279436249356187367148259","159278436247356189368149257",
"157346289268159437349278156","157349286269158437348276159","157346289269158437348279156","158279436267348159349156287",
"158279436269348157347156289","158276439269348157347159286","159346287267158439348279156","159278436268349157347156289",
"167258439248379156359146287","168259437249378156357146289","169258437248379156357146289","169258437248376159357149286",
"167348259258179436349256187","167258439259346187348179256","168259437257346189349178256","168349257259178436347256189",
"169258437257349186348176259","169258437257346189348179256","169348257258179436347256189","169348257258176439347259186",
"147359268258176439369248175","147358269259176438368249175","147358269268179435359246178","147359268269178435358246179",
"148379265267158439359246178","148356279269178435357249168","149378265267159438358246179","149356278268179435357248169",
"158276439247359168369148275","159276438247358169368149275","157348269268179435349256178","157349268269178435348256179",
"158346279267159438349278165","158276439269348175347159268","158346279269178435347259168","159346278267158439348279165",
"159276438268349175347158269","159346278268179435347258169","167258439248379165359146278","167259438249378165358146279",
"168279435247358169359146278","168279435249356178357148269","169278435247359168358146279","169278435248356179357149268",
"167259438258346179349178265","167258439259346178348179265","168279435257348169349156278","168279435259346178347158269",
"168349275259176438347258169","169278435257349168348156279","169278435258346179347159268","169348275258176439347259168",
"149358267258176439367249185","147358269268179435359246187","147356289268179435359248167","147356289269178435358249167",
"148379265267158439359246187","148379265269158437357246189","148359267269178435357246189","149376285267158439358249167",
"149378265268159437357246189","149376285268159437357248169","149358267268179435357246189","149356287268179435357248169",
"158276439249358167367149285","157348269268179435349256187","157348269268159437349276185","157346289268179435349258167",
"157346289268159437349278165","157346289269178435348259167","157346289269158437348279165","158349267267158439349276185",
"158276439267349185349158267","158349267269178435347256189","159346287267158439348279165","159348267268179435347256189",
"159346287268179435347258169","167258439248379165359146287","167258439249376185358149267","168279435247358169359146287",
"168279435247356189359148267","168279435249358167357146289","168279435249356187357148269","168259437249378165357146289",
"168259437249376185357148269","169278435247356189358149267","169278435248359167357146289","169258437248379165357146289",
"167349285258176439349258167","167258439258349167349176285","167258439259346187348179265","168279435257348169349156287",
"168279435257346189349158267","168259437257348169349176285","168259437257346189349178265","168279435259348167347156289",
"168279435259346187347158269","169278435257346189348159267","169258437257346189348179265","169278435258349167347156289",
"148356297259178436367249185","149356287258179436367248195","147358296268179435359246187","147359286269178435358246197",
"148376295269158437357249186","148356297269178435357249186","149376285268159437357248196","149356287268179435357248196",
"158279436249356187367148295","159278436248356197367149285","157348296268179435349256187","157348296268159437349276185",
"157349286269178435348256197","157349286269158437348276195","158279436267348195349156287","158346297269178435347259186",
"159278436267349185348156297","159346287268179435347258196","168279435247358196359146287","168279435249356187357148296",
"168259437249376185357148296","169278435247359186358146297","169278435248356197357149286","169258437248376195357149286",
"167348295258179436349256187","167349285259178436348256197","168279435257348196349156287","168259437257348196349176285",
"168279435259346187347158296","169278435257349186348156297","169258437257349186348176295","169278435258346197347159286",
"147259638258376149369148257","147258639259376148368149257","148376259257149638369258147","148376259259148637367259148",
"148259637259376148367148259","149376258257148639368259147","149376258258149637367258149","149258637258376149367149258",
"147258639268349157359176248","147259638269348157358176249","148259637267348159359176248","149258637267349158358176249",
"157249638248376159369158247","157248639249376158368159247","158376249247159638369248157","158376249249158637367249158",
"158249637249376158367158249","159376248247158639368249157","159376248248159637367248159","159248637248376159367159248",
"157248639268359147349176258","157249638269358147348176259","158249637267358149349176258","159248637267359148348176259",
"167348259248159637359276148","167349258249158637358276149","168349257247158639359276148","169348257247159638358276149",
"167358249258149637349276158","167359248259148637348276159","168359247257148639349276158","169358247257149638348276159",
"147259638258376149369148275","147259638258346179369178245","147258639259376148368149275","147258639259346178368179245",
"148356279257149638369278145","148279635259346178367158249","149356278257148639368279145","149278635258346179367159248",
"147258639268379145359146278","147258639268349175359176248","147259638269378145358146279","147259638269348175358176249",
"148279635267358149359146278","149278635267359148358146279","157249638248356179369178245","157248639249356178368179245",
"158376249247159638369248175","158346279247159638369278145","158346279249178635367259148","159376248247158639368249175",
"159346278247158639368279145","159346278248179635367258149","157248639268379145349156278","157249638269378145348156279",
"167358249248179635359246178","167359248249178635358246179","168379245247158639359246178","168349275247158639359276148",
"169378245247159638358246179","169348275247159638358276149","168379245257148639349256178","169378245257149638348256179",
"147356289258149637369278145","147258639259346187368179245","147356289259148637368279145","148279635257346189369158247",
"148259637257346189369178245","148279635259346187367158249","149278635257346189368159247","149258637257346189368179245",
"149376285257148639368259147","149356287257148639368279145","149376285258149637367258149","149258637258376149367149285",
"147258639268379145359146287","148279635267358149359146287","148279635269358147357146289","148259637269378145357146289",
"149258637267349185358176249","149278635268359147357146289","149258637268379145357146289","157346289248179635369258147",
"157346289248159637369278145","157248639249376185368159247","157248639249356187368179245","157346289249178635368259147",
"157346289249158637368279145","158249637247356189369178245","158376249249158637367249185","158249637249376185367158249",
"159248637247356189368179245","159346287247158639368279145","159346287248179635367258149","157248639268379145349156287",
"157248639268359147349176285","158249637267358149349176285","158249637269378145347156289","159248637268379145347156289",
"167358249248179635359246187","167349285249158637358276149","168379245247158639359246187","168379245249158637357246189",
"168359247249178635357246189","169378245248159637357246189","169358247248179635357246189","167358249258149637349276185",
"168379245257148639349256187","168359247257148639349276185","168379245259148637347256189","169378245258149637347256189",
"148279563259346178367158429","149278563258346179367159428","148376529269158473357249168","149376528268159473357248169",
"158279463249356178367148529","159278463248356179367149528","158376429269148573347259168","159376428268149573347258169",
"167358429248179563359246178","167359428249178563358246179","168249573247358169359176428","169248573247359168358176429",
"167348529258179463349256178","167349528259178463348256179","168259473257348169349176528","169258473257349168348176529",
"148279563257346189369158427","148279563259346187367158429","149278563257346189368159427","149276583257348169368159427",
"149276583258349167367158429","148376529267159483359248167","158279463247356189369148527","158279463249356187367148529",
"159278463247356189368149527","159276483247358169368149527","159276483248359167367148529","158376429267149583349258167",
"167358429248179563359246187","167358429249176583358249167","167249583249358167358176429","168359427249178563357246189",
"168359427249176583357248169","169358427248179563357246189","167348529258179463349256187","167348529259176483348259167",
"167259483259348167348176529","168349527259178463347256189","168349527259176483347258169","169348527258179463347256189",
"147358629259176483368249157","148279653257346189369158427","148279653259346187367158429","148359627259176483367248159",
"149278653257346189368159427","147358629268179453359246187","147259683269348157358176429","148359627269178453357246189",
"149358627268179453357246189","157249683248376159369158427","158376429247159683369248157","157348629268179453349256187",
"158349627269178453347256189","159348627267159483348276159","159276483267348159348159627","159276483268349157347158629",
"159348627268179453347256189","167259483248376159359148627","167358429248179653359246187","168279453247356189359148627",
"168279453249356187357148629","168359427249178653357246189","169278453247356189358149627","169358427248179653357246189",
"168279453257346189349158627","168279453259346187347158629","169278453257346189348159627","169358427257149683348276159",
"147359826258176493369248157","149276853257348196368159427","147256893268349157359178426","147359826269178453358246197",
"147256893269348157358179426","149356827268179453357248196","157246893248379156369158427","157246893249378156368159427",
"158379426247156893369248157","159378426247156893368249157","157349826269178453348256197","158276493269348157347159826",
"159378426267149853348256197","159346827267158493348279156","159346827268179453347258196","167249853248356197359178426",
"167258493248379156359146827","168279453247358196359146827","168359427249176853357248196","169278453248356197357149826",
"168279453257348196349156827","168359427257146893349278156","169358427257146893348279156","169278453258346197347159826",
"147239586258476139369158247","147236589258479136369158247","147236589259478136368159247","148279536257436189369158247",
"148276539257439186369158247","148279536259436187367158249","149278536257436189368159247","149236587258479136367158249",
"147236589268459137359178246","147239586269458137358176249","147236589269458137358179246","149236587267458139358179246",
"157439286248176539369258147","157436289248179536369258147","157436289249178536368259147","158479236247136589369258147",
"158476239247139586369258147","158479236249136587367258149","159478236247136589368259147","159436287248179536367258149",
"158479236267138549349256187","158479236269138547347256189","158476239269138547347259186","159478236268139547347256189",
"167458239249136587358279146","168459237247136589359278146","169458237247139586358276149","169458237247136589358279146",
"167238549258479136349156287","168239547259478136347156289","169238547258479136347156289","169238547258476139347159286",
"147239568258476139369158274","147238569259476138368159274","148276539257439168369158274","149276538257438169368159274",
"148236579267459138359178264","149236578267458139358179264","157439268248176539369258174","157438269249176538368259174",
"158476239247139568369258174","159476238247138569368259174","157438269268179534349256178","157439268269178534348256179",
"158476239269138574347259168","158436279269178534347259168","159476238268139574347258169","159436278268179534347258169",
"167459238248136579359278164","167458239249136578358279164","168279534257438169349156278","168279534259436178347158269",
"168239574259476138347158269","169278534257439168348156279","169278534258436179347159268","169238574258476139347159268",
"148276539259438167367159284","149238567258476139367159284","147238569268459137359176284","147236589268459137359178264",
"147236589269458137358179264","148239567267458139359176284","149236587267458139358179264","158476239249138567367259184",
"159438267248176539367259184","157438269268179534349256187","157436289268179534349258167","157436289269178534348259167",
"158476239267139584349258167","158439267269178534347256189","159438267268179534347256189","159436287268179534347258169",
"167458239248139567359276184","167458239249136587358279164","168459237247138569359276184","168459237247136589359278164",
"169458237247136589358279164","167239584258476139349158267","168279534257438169349156287","168279534257436189349158267",
"168279534259438167347156289","168279534259436187347158269","169278534257436189348159267","169278534258439167347156289",
"147239586258476139369158274","147236589258479136369158274","147236589259478136368159274","148279536257436189369158274",
"148276539257439186369158274","148276539259438176367159284","148236579259478136367159284","149278536257436189368159274",
"149278536258436179367159284","149238576258476139367159284","148239576267458139359176284","157439286248176539369258174",
"157436289248179536369258174","157436289249178536368259174","158479236247136589369258174","158476239247139586369258174",
"158476239249138576367259184","158436279249178536367259184","159478236247136589368259174","159478236248136579367259184",
"159438276248176539367259184","157436289268179534349258176","157439286269178534348256179","157436289269178534348259176",
"158476239267139584349258176","158479236269138574347256189","158476239269138574347259186","158439276269178534347256189",
"158436279269178534347259186","159478236267139584348256179","159478236268139574347256189","159438276268179534347256189",
"167458239248139576359276184","167239584258476139349158276","167239584259478136348156279","168279534257436189349158276",
"168279534259438176347156289","168239574259478136347156289","169278534257439186348156279","169278534257436189348159276",
"169278534258439176347156289","169278534258436179347159286","169238574258479136347156289","169238574258476139347159286",
"147258639259436187368179254","148259637257436189369178254","149258637257436189368179254","149238657258476139367159284",
"147258639268439157359176284","147238659268459137359176284","148259637267438159359176284","148239657267458139359176284",
"157436289248159637369278154","157436289249158637368279154","158476239249138657367259184","159436287247158639368279154",
"157239684269458137348176259","158279634267438159349156287","158279634269438157347156289","159278634268439157347156289",
"167458239248139657359276184","167438259248159637359276184","168459237247138659359276184","168439257247158639359276184",
"167438259258179634349256187","168439257259178634347256189","169458237257139684348276159","169438257258179634347256189",
"147239685258476139369158274","148279635257436189369158274","149278635257436189368159274","149278635258436179367159284",
"149238675258476139367159284","147258639268439175359176284","148239675267458139359176284","157436289248179635369258174",
"157436289249178635368259174","158476239247139685369258174","158476239249138675367259184","158436279249178635367259184",
"157239684269478135348156279","158239674267458139349176285","158279634269438175347156289","158239674269478135347156289",
"159278634267439185348156279","159278634268439175347156289","159238674268479135347156289","167458239248139675359276184",
"168439275247158639359276184","167458239258139674349276185","167439285259178634348256179","168479235259138674347256189",
"168439275259178634347256189","169478235257139684348256179","169478235258139674347256189","169438275258179634347256189",
"148279635259436187367158294","149278635258436197367159284","147238695268459137359176284","147239685269458137358176294",
"148259637267438195359176284","149258637267439185358176294","158436297249178635367259184","159436287248179635367258194",
"157238694268479135349156287","157238694268459137349176285","157239684269478135348156297","157239684269458137348176295",
"158279634267438195349156287","159278634267439185348156297","167438295248159637359276184","167439285249158637358276194",
"168459237247138695359276184","169458237247139685358276194","167438295258179634349256187","167439285259178634348256197",
"168479235257138694349256187","168459237257138694349276185","169478235257139684348256197","169458237257139684348276195",
"147239856258476139369158247","147236859258479136369158247","147236859259478136368159247","149236857258479136367158249",
"147256839268439157359178246","147236859268459137359178246","147259836269438157358176249","147239856269458137358176249",
"147256839269438157358179246","147236859269458137358179246","149256837267438159358179246","149236857267458139358179246",
"158479236247136859369258147","158476239247139856369258147","158479236249136857367258149","159478236247136859368259147",
"157236849268459137349178256","157239846269458137348176259","157236849269458137348179256","159236847267458139348179256",
"167458239249136857358279146","167438259249156837358279146","168459237247136859359278146","168439257247156839359278146",
"169458237247139856358276149","169438257247159836358276149","169458237247136859358279146","169438257247156839358279146",
"167458239259136847348279156","168459237257136849349278156","169458237257139846348276159","169458237257136849348279156",
"147256839258439167369178254","147256839259438167368179254","149256837257438169368179254","147256839268439157359178264",
"147236859268459137359178264","147256839269438157358179264","147236859269458137358179264","149256837267438159358179264",
"149236857267458139358179264","157438269249156837368279154","158439267247156839369278154","159438267247156839368279154",
"157239864269458137348176259","158476239267139854349258167","159438267267159834348276159","159276834267438159348159267",
"159276834268439157347158269","167458239249136857358279164","167438259249156837358279164","168459237247136859359278164",
"168439257247156839359278164","169458237247136859358279164","169438257247156839358279164","167239854258476139349158267",
"167438259259176834348259167","167259834259438167348176259","168439257259176834347258169","169458237257139864348276159",
"147259836258436197369178254","149256837257438196368179254","149236857258479136367158294","147259836269438157358176294",
"147239856269458137358176294","157438296249156837368279154","158436297247159836369278154","158479236249136857367258194",
"157236894268459137349178256","157236894269458137348179256","158436297267159834349278156","159478236267139854348256197",
"159276834268439157347158296","169458237247139856358276194","169438257247159836358276194","167259834258436197349178256",
"167239854259478136348156297","168459237257136894349278156","168439257259176834347258196","169458237257136894348279156",
"148279356257436189369158427","148279356257136489369458127","148276359257439186369158427","148276359257139486369458127",
"148279356259436187367158429","148279356259136487367458129","149278356257436189368159427","149278356257136489368459127",
"147256389268439157359178426","147256389268139457359478126","147259386269438157358176429","147259386269138457358476129",
"147256389269438157358179426","147256389269138457358479126","149256387267438159358179426","149256387267138459358479126",
"157239486248176359369458127","157236489248179356369458127","157236489249178356368459127","159236487248179356367458129",
"158479326267138459349256187","158479326269138457347256189","158476329269138457347259186","159478326268139457347256189",
"167238459249156387358479126","168239457247156389359478126","169238457247159386358476129","169238457247156389358479126",
"167458329259136487348279156","168459327257136489349278156","169458327257139486348276159","169458327257136489348279156",
"147256389258439167369178425","147256389258139467369478125","147258369259436187368179425","147258369259136487368479125",
"147256389259438167368179425","147256389259138467368479125","148279365257436189369158427","148279365257136489369458127",
"148259367257436189369178425","148259367257136489369478125","148279365259436187367158429","148279365259136487367458129",
"149278365257436189368159427","149278365257136489368459127","149258367257436189368179425","149258367257136489368479125",
"149276385257438169368159427","149276385257138469368459127","149256387257438169368179425","149256387257138469368479125",
"149276385258439167367158429","149276385258139467367458129","149258367267439185358176429","149258367267139485358476129",
"157236489248179365369458127","157236489248159367369478125","157238469249176385368459127","157238469249156387368479125",
"157236489249178365368459127","157236489249158367368479125","158239467247156389369478125","158239467249176385367458129",
"159238467247156389368479125","159236487247158369368479125","159236487248179365367458129","158476329267139485349258167",
"167239485249158367358476129","167458329258139467349276185","167458329259136487348279165","168479325257138469349256187",
"168479325257136489349258167","168459327257138469349276185","168459327257136489349278165","168479325259138467347256189",
"168479325259136487347258169","169478325257136489348259167","169458327257136489348279165","169478325258139467347256189",
"147236589258179364369458127","147256389258439167369178524","147238569259176384368459127","147258369259436187368179524",
"147236589259178364368459127","147256389259438167368179524","148259367257436189369178524","148239567259176384367458129",
"149258367257436189368179524","149256387257438169368179524","149236587258179364367458129","149258367267139584358476129",
"149238567267159384358476129","158279364247136589369458127","158279364249136587367458129","158476329249138567367259184",
"159278364247136589368459127","159276384247138569368459127","159276384248139567367458129","158476329267139584349258167",
"167458329248139567359276184","167438529248159367359276184","167458329249136587358279164","167438529249156387358279164",
"167259384249138567358476129","167239584249158367358476129","168459327247138569359276184","168439527247158369359276184",
"168459327247136589359278164","168439527247156389359278164","169458327247136589358279164","169438527247156389358279164",
"167438529258179364349256187","167438529259176384348259167","167259384259438167348176529","168439527259178364347256189",
"168439527259176384347258169","169438527258179364347256189","147259386258436179369178524","147256389258439176369178524",
"147256389259438176368179524","148259376257436189369178524","148256379257439186369178524","148239576259176384367458129",
"149258376257436189368179524","147256389268139574359478126","147236589268159374359478126","147259386269138574358476129",
"147239586269158374358476129","147256389269138574358479126","147236589269158374358479126","148256379267139584359478126",
"148236579267159384359478126","149258376267139584358476129","149238576267159384358476129","158479326247136589369258174",
"158476329247139586369258174","158476329249138576367259184","159478326247136589368259174","159478326248136579367259184",
"159276384248139576367458129","158476329267139584349258176","158479326269138574347256189","158476329269138574347259186",
"159478326267139584348256179","159478326268139574347256189","167259384248136579359478126","167239584248156379359478126",
"167458329248139576359276184","167438529248159376359276184","167259384249138576358476129","167239584249158376358476129",
"168259374247136589359478126","168239574247156389359478126","169258374247139586358476129","169238574247159386358476129",
"169258374247136589358479126","169238574247156389358479126","167259384258436179349178526","167438529259176384348259176",
"167259384259438176348176529","168259374257436189349178526","169258374257439186348176529","169258374257436189348179526",
"147238659259176384368459127","148276359257139684369458127","148239657259176384367458129","147256389268439157359178624",
"147256389269438157358179624","149238657267159384358476129","149256387267438159358179624","157239684248176359369458127",
"157438629249156387368279154","158439627247156389369278154","158476329249138657367259184","159438627247156389368279154",
"159276384247138659368459127","159276384248139657367458129","159438627248176359367259184","157438629268179354349256187",
"158439627269178354347256189","159438627267159384348276159","159276384267438159348159627","159276384268439157347158629",
"159438627268179354347256189","167458329248139657359276184","167259384249138657358476129","168459327247138659359276184",
"168279354257436189349158627","168279354259436187347158629","169278354257436189348159627","169458327257139684348276159",
"147256389258139674369478125","147256389259138674368479125","148256379257139684369478125","148239675259176384367458129",
"149276385258139674367458129","147256389268439175359178624","147239685269158374358476129","147256389269438175358179624",
"148256379267439185359178624","149238675267159384358476129","157239684248156379369478125","157438629249176385368259174",
"158239674247156389369478125","158476329247139685369258174","158476329249138675367259184","158239674249176385367458129",
"159238674247156389368479125","159276384248139675367458129","157438629268159374349276185","159276384268439175347158629",
"167458329248139675359276184","167259384249138675358476129","169258374247139685358476129","167259384258436179349178625",
"167458329258139674349276185","168259374257436189349178625","168479325259138674347256189","169478325257139684348256179",
"169258374257436189348179625","169478325258139674347256189","147256389258139764369478125","147258369259136784368479125",
"147256389259138764368479125","148279365257436189369158724","148279365259136784367458129","148239765259176384367458129",
"149278365257436189368159724","149276385257438169368159724","149276385258139764367458129","149236785258179364367458129",
"149238765267159384358476129","158239764247156389369478125","158279364249136785367458129","158476329249138765367259184",
"158239764249176385367458129","158436729249178365367259184","159238764247156389368479125","159236784247158369368479125",
"159276384248139765367458129","159236784248179365367458129","158436729267159384349278165","159278364267439185348156729",
"167458329248139765359276184","167458329249136785358279164","167259384249138765358476129","168439725247158369359276184",
"168439725247156389359278164","169438725247156389358279164","167458329258139764349276185","167458329259136784348279165",
"168479325259138764347256189","168479325259136784347258169","168439725259178364347256189","168439725259176384347258169",
"169478325258139764347256189","169438725258179364347256189","147239856258176394369458127","148279356257136894369458127",
"149278356257136894368459127","149278356258436197367159824","147258396268439157359176824","148256397267139854359478126",
"149236857267158394358479126","157439826248156397369278154","157236894248179356369458127","157236894249178356368459127",
"158276394247139856369458127","158479326249136857367258194","159436827247158396368279154","159436827248179356367258194",
"157439826269178354348256197","158276394269438157347159826","159478326267139854348256197","159436827267158394348279156",
"159436827268179354347258196","167239854248156397359478126","167258394249136857358479126","169458327247139856358276194",
"168279354257438196349156827","168459327257136894349278156","169458327257136894348279156","169278354258436197347159826",
"147239865258176394369458127","147236895258179364369458127","147236895259178364368459127","148279365257136894369458127",
"148259367257136894369478125","148276395257139864369458127","148256397257139864369478125","148276395259438167367159824",
"149278365257136894368459127","149258367257136894368479125","149278365258436197367159824","148259367267438195359176824",
"157239864248176395369458127","157239864248156397369478125","157236894248179365369458127","157236894248159367369478125",
"157236894249178365368459127","157236894249158367368479125","158279364247136895369458127","158276394247139865369458127",
"159278364247136895368459127","159436827248179365367258194","158279364267438195349156827","159436827267158394348279165",
"167439825248156397359278164","167439825249158367358276194","168459327247136895359278164","169458327247139865358276194",
"169458327247136895358279164","167439825258176394349258167","167258394258439167349176825","167439825259178364348256197",
"168479325257136894349258167","168459327257136894349278165","169478325257139864348256197","169478325257136894348259167",
"169458327257139864348276195","169458327257136894348279165","147259863258436179369178524","148279563259136874367458129",
"148236579259478163367159824","149256873257438169368179524","149278563258436179367159824","147238569268459173359176824",
"147259863269138574358476129","157436829248179563369258174","157436829249178563368259174","159476823247138569368259174",
"159236874248179563367458129","157239864269458173348176529","159476823268139574347258169","167459823248136579359278164",
"167438529249156873358279164","169238574247159863358476129","168479523259136874347258169","168239574259478163347156829",
"169478523257139864348256179","169238574258479163347156829","147235968259486137368179254","148235967259476138367189254",
"147236958269485137358179264","148236957269475138357189264","159486237247135968368279154","159476238248135967367289154",
"157439268268175934349286157","157286934268439157349175268","158439267267185934349276158","158276934267439158349185267",
"169485237247136958358279164","169475238248136957357289164","167439258258176934349285167","167285934258439167349176258",
"168439257257186934349275168","168275934257439168349186257","147285396259436178368179524","148239576257186394369475128",
"148275396259436178367189524","149285376257436198368179524","147285396268139574359476128","147236598269185374358479126",
"148239576267185394359476128","149236578267185394358479126","149236578268175394357489126","157286394248139576369475128",
"157489326249136578368275194","158479326247136598369285174","158479326249136578367285194","159476328248139576367285194",
"157286394269435178348179526","158276394269435178347189526","159286374267435198348179526","159476328268139574347285196",
"167439528248175396359286174","167285394248139576359476128","167285394249136578358479126","167439528249185376358276194",
"168239574247185396359476128","168275394249136578357489126","169285374247136598358479126","169475328248139576357286194",
"167439528258176394349285176","167285394258439176349176528","167285394259436178348179526","167439528259186374348275196",
"168275394259436178347189526","169285374257436198348179526","147289356258136749369475128","147286359258139746369475128",
"147289356259136748368475129","148239756257186349369475128","148236759257189346369475128","148279356259136748367485129",
"148239756259176348367485129","149236758257189346368475129","149276358258139746367485129","149236758258179346367485129",
"147289356268135749359476128","147289356269135748358476129","147286359269135748358479126","148239756267185349359476128",
"148279356269135748357486129","148276359269135748357489126","148239756269175348357486129","148236759269175348357489126",
"149236758267185349358479126","149276358268135749357489126","149236758268175349357489126","157489326248136759369275148",
"157289346248136759369475128","157486329248139756369275148","157286349248139756369475128","157489326249136758368275149",
"157289346249136758368475129","158439726247186359369275148","158239746247186359369475128","158436729247189356369275148",
"158236749247189356369475128","158479326249136758367285149","158279346249136758367485129","158439726249176358367285149",
"158239746249176358367485129","159436728247189356368275149","159236748247189356368475129","159476328248139756367285149",
"159276348248139756367485129","159436728248179356367285149","159236748248179356367485129","157489326268135749349276158",
"157489326269135748348276159","157486329269135748348279156","158439726267185349349276158","158276349267439158349185726",
"158479326269135748347286159","158476329269135748347289156","158439726269175348347286159","158436729269175348347289156",
"159436728267185349348279156","159476328268135749347289156","159436728268175349347289156","167485329248139756359276148",
"167285349248139756359476128","167485329249136758358279146","167285349249136758358479126","168435729247189356359276148",
"168235749247189356359476128","168475329249136758357289146","168275349249136758357489126","168435729249176358357289146",
"168235749249176358357489126","169435728247189356358276149","169235748247189356358476129","169435728247186359358279146",
"169235748247186359358479126","169475328248139756357286149","169275348248139756357486129","169475328248136759357289146",
"169275348248136759357489126","169435728248179356357286149","169235748248179356357486129","169435728248176359357289146",
"169235748248176359357489126","167485329258139746349276158","167485329259136748348279156","168435729257189346349276158",
"168475329259136748347289156","168435729259176348347289156","169435728257189346348276159","169435728257186349348279156",
"169475328258139746347286159","169475328258136749347289156","169435728258179346347286159","169435728258176349347289156",
"147236589258479163369185724","147289563259136784368475129","148279563257436189369185724","148279563259136784367485129",
"148235769259476183367189524","149285763257436189368179524","149276583258139764367485129","147289563269135784358476129",
"148279563267435189359186724","148279563269135784357486129","149285763267139584358476129","158436729247189563369275184",
"158239764249176583367485129","159236784247189563368475129","159236784248179563367485129","158239764269475183347186529",
"159486723267139584348275169","167489523248135769359276184","167239584249185763358476129","168435729247189563359276184",
"168435729249176583357289164","169485723247136589358279164","169235784247189563358476129","169235784248179563357486129",
"167489523259136784348275169","168479523259136784347285169","169235784257489163348176529","169235784258479163347186529",
"148729563269453178357186924","148756923269183574357429168","149786523268153974357429168","149723568268459173357186924",
"157486923249753168368129574","157423968249186573368759124","158723964249186573367459128","158426973249753168367189524",
"167489523249753168358126974","167453928249186573358729164","168429573247153968359786124","168753924247189563359426178",
"168753924249186573357429168","168429573249753168357186924","169783524248156973357429168","169423578248759163357186924",
"168429573257183964349756128","168753924257489163349126578","168753924259486173347129568","168429573259783164347156928"
};
uint16_t tfillband[1892] = {
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//15
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//31
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//47
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//63
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//79
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//95
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//111
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//127
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//143
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//159
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//175
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//191
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//207
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//223
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//239
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//255
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//271
0,412,412,412,412,412,412,0,0,412,412,412,412,412,412,0,//287
411,411,411,411,411,411,1,413,413,1,411,411,1,413,413,1,//303
411,411,411,411,1,413,413,1,411,411,1,413,413,1,411,411,//319
411,411,411,411,411,411,1,413,413,1,411,411,1,413,413,1,//335
411,411,411,411,1,413,413,1,411,411,1,413,413,1,411,411,//351
1,413,413,1,1,413,413,1,411,411,411,411,411,411,411,411,//367
1,413,413,1,1,413,413,1,411,411,411,411,411,411,411,411,//383
399,401,399,401,399,399,401,401,399,399,401,401,401,401,17,17,//399
401,17,17,401,401,401,399,399,17,17,17,17,401,401,401,401,//415
397,397,397,397,397,397,397,397,397,397,397,397,2,2,397,2,//431
2,397,397,397,397,397,397,397,2,2,397,2,2,397,397,397,//447
403,403,403,403,403,403,403,403,26,26,403,403,26,26,403,403,//463
304,251,306,253,304,251,253,306,251,304,251,304,251,304,304,251,//479
251,304,251,304,253,306,304,251,306,253,304,251,251,304,304,251,//495
304,251,306,253,304,251,253,306,251,304,251,304,251,304,304,251,//511
251,304,251,304,253,306,304,251,306,253,304,251,251,304,304,251,//527
251,304,304,251,304,251,251,304,304,251,306,253,253,306,251,304,//543
251,304,304,251,304,251,251,304,304,251,306,253,253,306,251,304,//559
246,246,224,224,224,224,224,224,224,224,246,246,224,224,223,223,//575
246,246,224,224,3,414,415,8,224,224,224,224,246,246,246,246,//591
224,224,224,224,8,415,414,3,224,224,246,246,223,223,224,224,//607
224,224,224,224,246,246,224,224,224,224,223,223,246,246,8,415,//623
414,3,224,224,224,224,246,246,224,224,246,246,223,223,224,224,//639
224,224,224,224,3,414,415,8,246,246,246,246,224,224,224,224,//655
246,246,3,414,415,8,224,224,224,224,223,223,224,224,224,224,//671
246,246,246,246,224,224,224,224,8,415,414,3,246,246,224,224,//687
223,223,246,246,224,224,224,224,224,224,224,224,224,224,246,246,//703
392,392,402,402,408,394,408,394,392,402,392,402,408,408,18,4,//719
402,18,4,402,408,408,394,394,4,18,4,18,408,402,408,402,//735
340,216,215,299,340,216,299,215,216,340,299,215,316,257,259,257,//751
259,319,319,316,340,215,216,299,257,319,316,316,257,259,259,319,//767
361,361,305,305,361,254,361,254,361,361,303,303,371,371,255,371,//783
371,255,361,361,305,254,305,254,371,371,303,255,371,303,255,371,//799
398,221,151,150,323,89,48,409,134,281,47,229,398,217,241,32,//815
34,135,56,5,19,245,326,225,228,323,409,221,151,47,229,134,//831
281,150,48,89,19,5,326,217,32,241,34,225,228,135,56,245,//847
330,330,307,307,330,252,330,252,330,330,308,336,308,336,336,250,//863
336,250,307,252,330,307,252,330,336,336,308,336,250,308,336,250,//879
405,405,405,20,20,405,20,20,396,396,405,405,405,405,405,20,//895
20,405,20,20,396,396,405,405,405,405,396,396,405,405,396,396,//911
291,293,291,293,346,366,346,366,159,243,159,243,369,369,346,346,//927
291,293,366,291,293,366,158,158,369,369,159,243,159,243,158,158,//943
313,137,46,61,46,268,137,44,268,61,9,10,59,248,58,126,//959
406,59,66,61,46,268,61,137,44,313,10,9,46,137,268,58,//975
248,410,148,126,248,406,59,66,59,126,58,410,58,248,126,148,//991
387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,387,//1007
335,334,335,334,407,400,335,334,335,334,407,400,322,22,27,157,//1023
322,157,322,22,27,157,322,157,367,109,325,404,124,109,385,111,//1039
45,367,385,124,149,21,21,373,43,404,325,111,55,55,149,57,//1055
45,57,43,373,364,364,214,214,214,317,317,317,317,317,214,364,//1071
364,364,317,364,364,214,364,317,214,214,214,317,289,288,289,212,//1087
278,211,211,289,278,211,212,211,278,212,211,288,289,289,289,211,//1103
278,212,211,211,211,278,211,212,278,211,212,211,372,372,359,359,//1119
348,348,359,359,372,372,372,372,331,331,331,331,348,348,372,331,//1135
331,372,331,331,370,349,153,155,155,390,153,349,370,52,50,178,//1151
370,178,50,138,390,153,153,155,155,370,52,50,50,138,178,178,//1167
292,294,294,91,242,290,292,130,192,244,389,242,91,130,294,292,//1183
244,192,294,292,290,78,40,38,290,130,192,38,136,242,91,78,//1199
389,290,242,78,78,91,40,38,38,136,130,192,161,315,163,354,//1215
279,280,285,287,315,163,354,161,354,315,163,161,287,285,280,279,//1231
315,161,354,163,386,343,204,203,324,360,338,343,204,386,324,203,//1247
144,337,69,68,311,87,127,338,360,337,311,127,87,144,68,69,//1263
393,393,145,145,378,378,393,393,145,143,145,143,378,378,378,378,//1279
145,145,378,378,145,143,145,143,339,286,284,339,146,147,329,90,//1295
118,100,88,90,286,339,339,284,146,88,118,329,90,88,147,146,//1311
90,329,100,118,329,146,88,118,67,65,141,107,189,123,107,65,//1327
67,141,67,65,375,395,23,23,375,67,65,189,107,107,123,395,//1343
23,23,375,375,342,380,388,341,342,380,342,388,342,341,341,380,//1359
380,342,341,341,380,342,380,341,101,103,333,101,119,101,209,101,//1375
119,101,333,101,101,103,209,101,119,101,333,209,333,101,119,209,//1391
119,333,209,101,333,119,209,101,116,108,54,237,80,99,80,99,//1407
54,237,116,108,131,104,53,236,302,121,131,104,273,258,272,274,//1423
41,42,79,191,81,71,277,256,238,235,156,318,318,256,277,81,//1439
71,79,191,41,42,235,238,156,187,167,75,64,77,76,314,267,//1455
63,129,249,63,129,113,187,167,94,125,162,314,160,263,77,75,//1471
76,64,194,283,96,194,94,125,267,11,25,160,263,162,36,85,//1487
262,35,133,327,133,182,227,92,227,73,74,232,233,232,220,105,//1503
181,140,110,140,183,271,105,110,271,181,139,220,183,327,139,233,//1519
92,195,182,195,73,128,309,24,14,36,262,85,168,177,176,205,//1535
177,175,175,205,168,168,205,166,166,174,374,176,176,13,13,374,//1551
174,176,177,168,177,205,175,175,114,188,95,117,62,202,247,295,//1567
200,269,39,365,37,184,199,60,172,98,384,368,180,201,185,310,//1583
270,165,312,179,164,190,173,112,93,344,231,230,345,344,231,226,//1599
328,266,170,196,230,328,86,84,170,226,383,382,171,171,196,296,//1615
297,296,265,265,93,173,86,266,112,84,264,102,51,320,381,207,//1631
169,362,282,193,197,154,300,260,355,363,332,298,261,206,152,198,//1647
357,49,120,321,234,186,72,239,115,115,97,377,115,186,377,377,//1663
186,72,115,70,97,72,115,186,70,377,377,377,376,376,72,72,//1679
97,12,30,376,234,186,72,186,70,115,356,208,356,350,352,350,//1695
208,210,208,356,210,351,352,350,351,210,356,208,350,210,347,347,//1711
347,347,347,347,29,29,29,29,347,347,29,29,29,29,33,142,//1727
106,142,122,106,33,122,142,122,106,142,122,33,33,142,106,142,//1743
391,31,31,391,106,33,33,106,6,16,31,391,122,122,82,222,//1759
132,219,222,82,222,83,219,222,83,82,222,240,82,218,83,222,//1775
240,219,219,83,82,222,218,222,82,240,219,219,218,219,218,240,//1791
219,222,82,222,218,83,82,240,219,222,7,28,219,218,240,219,//1807
240,222,219,219,219,222,219,219,222,82,218,83,222,218,82,222,//1823
83,82,82,132,82,82,132,82,82,240,83,240,82,222,219,219,//1839
83,82,222,218,353,213,276,301,379,353,275,213,275,213,276,275,//1855
276,213,213,353,353,353,275,276,353,379,301,213,276,275,275,276,//1871
358,358,358,358,358,358,358,358,358,358,358,358,15,15,358,358,//1887
358,358,358,358,
};
int tfill_index[45] = {
0,288,384,416,448,464,560,704,736,768, // 0_9
800,848,880,912,944,992,1008,1032,1060,1084, //10-19
1116,1140,1168,1212,1236,1264,1288,1320,1348,1368, //20-29
1400,1448,1486,1532,1560,1590,1626,1652,1690,1710, // 30-39
1726,1758,1844,1872,1892, //40-43+end
};
int tfillbandmorphed[288][27];// max is 288 for gang0
int tfillbandid[288];
int tfillorder[288];
void SortBandsMorphed(int n) {
for (int i = 0; i < n; i++) tfillorder[i] = i;
for (int i = 0; i < n - 1; i++) {
register int* bi = tfillbandmorphed[tfillorder[i]];
for (int j = i + 1; j < n; j++) {
register int* bj = tfillbandmorphed[tfillorder[j]];
for (int k = 0; k < 27; k++) {
if (bj[k] > bi[k])break;
if (bj[k] < bi[k]) {
int x = tfillorder[j];
bi = tfillbandmorphed[x];
tfillorder[j] = tfillorder[i];
tfillorder[i] = x;
break;
}
}
}
}
}