rav2d 0.3.0

AV2 video decoder in Rust
Documentation
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
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
#[derive(Clone)]
#[repr(C)]
pub struct CdfModeContext {
    pub data: [u16; 3496],
}

impl Default for CdfModeContext {
    fn default() -> Self {
        Self { data: [0; 3496] }
    }
}

#[derive(Clone)]
#[repr(C)]
pub struct CdfCoefContext {
    pub data: [u16; 4656],
}

impl Default for CdfCoefContext {
    fn default() -> Self {
        Self { data: [0; 4656] }
    }
}

impl CdfCoefContext {
    pub fn skip(&mut self, i: usize, j: usize, k: usize) -> &mut [u16] {
        let o = i * 100 + j * 20 + k * 2;
        &mut self.data[o..o + 2]
    }
    pub fn skip_v(&mut self, k: usize) -> &mut [u16] {
        let o = 4418 + k * 2;
        &mut self.data[o..o + 2]
    }
    pub fn eob_bin_16(&mut self, i: usize) -> &mut [u16] {
        let o = 200 + i * 8;
        &mut self.data[o..o + 8]
    }
    pub fn eob_bin_32(&mut self, i: usize) -> &mut [u16] {
        let o = 224 + i * 8;
        &mut self.data[o..o + 8]
    }
    pub fn eob_bin_64(&mut self, i: usize) -> &mut [u16] {
        let o = 248 + i * 8;
        &mut self.data[o..o + 8]
    }
    pub fn eob_bin_128(&mut self, i: usize) -> &mut [u16] {
        let o = 272 + i * 8;
        &mut self.data[o..o + 8]
    }
    pub fn eob_bin_256(&mut self, i: usize) -> &mut [u16] {
        let o = 296 + i * 8;
        &mut self.data[o..o + 8]
    }
    pub fn eob_bin_512(&mut self, i: usize) -> &mut [u16] {
        let o = 320 + i * 8;
        &mut self.data[o..o + 8]
    }
    pub fn eob_bin_1024(&mut self, i: usize) -> &mut [u16] {
        let o = 344 + i * 8;
        &mut self.data[o..o + 8]
    }
    pub fn eob_hi_bit(&mut self) -> &mut [u16] {
        &mut self.data[368..370]
    }
    pub fn eob_base_y_tok_hf(&mut self, i: usize, j: usize) -> &mut [u16] {
        let o = 372 + i * 16 + j * 4;
        &mut self.data[o..o + 4]
    }
    pub fn base_y_tok_hf(&mut self, i: usize, j: usize, k: usize) -> &mut [u16] {
        let o = 452 + i * 160 + j * 8 + k * 4;
        &mut self.data[o..o + 4]
    }
    pub fn br_y_tok_hf(&mut self, j: usize) -> &mut [u16] {
        let o = 1252 + j * 4;
        &mut self.data[o..o + 4]
    }
    pub fn eob_base_y_tok_lf(&mut self, i: usize, j: usize) -> &mut [u16] {
        let o = 1280 + i * 32 + j * 8;
        &mut self.data[o..o + 8]
    }
    pub fn base_y_tok_lf(&mut self, i: usize, j: usize, k: usize) -> &mut [u16] {
        let o = 1440 + i * 528 + j * 16 + k * 8;
        &mut self.data[o..o + 8]
    }
    pub fn br_y_tok_lf(&mut self, j: usize) -> &mut [u16] {
        let o = 4080 + j * 4;
        &mut self.data[o..o + 4]
    }
    pub fn dc_sign(&mut self, i: usize, j: usize, k: usize) -> &mut [u16] {
        let o = 4136 + i * 12 + j * 6 + k * 2;
        &mut self.data[o..o + 2]
    }
    pub fn bob_base_y_tok(&mut self, i: usize, j: usize) -> &mut [u16] {
        let o = 4160 + i * 12 + j * 4;
        &mut self.data[o..o + 4]
    }
    pub fn br_y_tok_idtx(&mut self, i: usize, j: usize) -> &mut [u16] {
        let o = 4196 + i * 28 + j * 4;
        &mut self.data[o..o + 4]
    }
    pub fn base_y_tok_idtx(&mut self, i: usize, j: usize) -> &mut [u16] {
        let o = 4280 + i * 28 + j * 4;
        &mut self.data[o..o + 4]
    }
    pub fn sign_idtx(&mut self, i: usize, j: usize) -> &mut [u16] {
        let o = 4364 + i * 18 + j * 2;
        &mut self.data[o..o + 2]
    }
    pub fn eob_base_uv_tok_hf(&mut self, j: usize) -> &mut [u16] {
        let o = 4444 + j * 4;
        &mut self.data[o..o + 4]
    }
    pub fn base_uv_tok_hf(&mut self, j: usize) -> &mut [u16] {
        let o = 4460 + j * 4;
        &mut self.data[o..o + 4]
    }
    pub fn br_uv_tok_hf(&mut self, j: usize) -> &mut [u16] {
        let o = 4508 + j * 4;
        &mut self.data[o..o + 4]
    }
    pub fn eob_base_uv_tok_lf(&mut self, j: usize) -> &mut [u16] {
        let o = 4528 + j * 8;
        &mut self.data[o..o + 8]
    }
    pub fn base_uv_tok_lf(&mut self, j: usize) -> &mut [u16] {
        let o = 4560 + j * 8;
        &mut self.data[o..o + 8]
    }
}

#[derive(Clone)]
#[repr(C)]
pub struct CdfMvContext {
    pub data: [u16; 168],
}

impl Default for CdfMvContext {
    fn default() -> Self {
        Self { data: [0; 168] }
    }
}

macro_rules! cdf_acc {
    ($name:ident, $off:expr, $len:expr) => {
        pub fn $name(&mut self) -> &mut [u16] {
            &mut self.data[$off..$off + $len]
        }
    };
    ($name:ident, $off:expr, $stride:expr, $len:expr) => {
        pub fn $name(&mut self, i: usize) -> &mut [u16] {
            let o = $off + i * $stride;
            &mut self.data[o..o + $len]
        }
    };
    ($name:ident, $off:expr, $s1:expr, $s2:expr, $len:expr) => {
        pub fn $name(&mut self, i: usize, j: usize) -> &mut [u16] {
            let o = $off + i * $s1 + j * $s2;
            &mut self.data[o..o + $len]
        }
    };
    ($name:ident, $off:expr, $s1:expr, $s2:expr, $s3:expr, $len:expr) => {
        pub fn $name(&mut self, i: usize, j: usize, k: usize) -> &mut [u16] {
            let o = $off + i * $s1 + j * $s2 + k * $s3;
            &mut self.data[o..o + $len]
        }
    };
}

impl CdfMvContext {
    cdf_acc!(shell_lower, 0, 8, 8); // [7][8]
    cdf_acc!(shell_upper, 56, 8, 8); // [7][8]
    cdf_acc!(shell_set, 112, 2); // [2]
    cdf_acc!(shell_tip, 114, 2); // [2]
    cdf_acc!(shell_offset_low, 116, 2, 2); // [2][2]
    cdf_acc!(shell_offset_cl2, 120, 2); // [2]
    cdf_acc!(shell_offset_hi, 122, 2, 2); // [16][2]
    cdf_acc!(col_component, 154, 2, 2); // [2][2]
    cdf_acc!(col_index, 158, 2, 2); // [4][2]
}

impl CdfModeContext {
    // restoration
    cdf_acc!(rst_switchable, 0, 2, 2); // [2][2]
    cdf_acc!(rst_pc_wiener, 4, 2); // [2]
    cdf_acc!(rst_ns_wiener, 6, 2); // [2]
    cdf_acc!(wiener_ns_len, 8, 2, 2); // [2][2]
    cdf_acc!(wiener_ns_sym, 12, 2); // [2]
    cdf_acc!(wiener_ns_cf, 16, 4); // [4]
    // partitioning
    cdf_acc!(part_split, 20, 128, 2, 2); // [2][64][2]
    cdf_acc!(part_square, 276, 2, 2); // [8][2]
    cdf_acc!(part_dir, 292, 128, 2, 2); // [2][64][2]
    cdf_acc!(part_ext, 548, 128, 2, 2); // [2][64][2]
    cdf_acc!(part_4way, 804, 128, 2, 2); // [2][64][2]
    cdf_acc!(region_type, 1060, 2, 2); // [4][2]
    // intra
    cdf_acc!(intrabc, 1068, 2, 2); // [3][2]
    cdf_acc!(gdf, 1074, 2); // [2]
    cdf_acc!(cdef_idx0, 1076, 2, 2); // [4][2]
    cdf_acc!(cdef_idx, 1088, 8, 8); // [6][8]
    cdf_acc!(ccso, 1136, 8, 2, 2); // [3][4][2]
    cdf_acc!(skip_txfm, 1160, 2, 2); // [6][2]
    cdf_acc!(dpcm, 1172, 2, 2); // [2][2]
    cdf_acc!(dpcm_dir, 1176, 2, 2); // [2][2]
    cdf_acc!(intra_y_set, 1180, 4); // [4]
    cdf_acc!(intra_y_idx0, 1184, 8, 8); // [3][8]
    cdf_acc!(intra_y_idx1, 1208, 8, 8); // [3][8]
    cdf_acc!(fsc, 1232, 12, 2, 2); // [4][6][2]
    cdf_acc!(mrl_index, 1280, 4, 4); // [3][4]
    cdf_acc!(multi_mrl, 1292, 2, 2); // [3][2]
    cdf_acc!(pal_y, 1298, 2); // [2]
    cdf_acc!(pal_sz, 1304, 8); // [8]
    cdf_acc!(dip, 1312, 2, 2); // [3][2]
    cdf_acc!(dip_mode, 1320, 8); // [8]
    cdf_acc!(cfl, 1328, 2, 2); // [3][2]
    cdf_acc!(intra_uv_mode, 1336, 8, 8); // [2][8]
    cdf_acc!(mhccp, 1352, 2); // [2]
    cdf_acc!(mhccp_filter_dir, 1356, 4, 4); // [4][4]
    cdf_acc!(cfl_type, 1372, 2); // [2]
    cdf_acc!(cfl_sign, 1376, 8); // [8]
    cdf_acc!(cfl_alpha, 1384, 8, 8); // [6][8]
    cdf_acc!(pal_idx_identity, 1432, 4, 4); // [4][4]
    cdf_acc!(pal_idx, 1448, 40, 8, 8); // [7][5][8]
    cdf_acc!(intrabc_mode, 1728, 2); // [2]
    cdf_acc!(intrabc_precision, 1730, 2); // [2]
    cdf_acc!(morph_pred, 1732, 2, 2); // [3][2]
    // tx
    cdf_acc!(txsz_lossless, 1738, 4, 2, 2); // [4][2][2]
    cdf_acc!(tx_split, 1754, 36, 18, 2, 2); // [2][2][9][2]
    cdf_acc!(tx_part_2d, 1832, 224, 112, 8, 8); // [2][2][14][8]
    cdf_acc!(tx_part_1d, 2280, 8, 4, 2, 2); // [2][2][2][2]
    cdf_acc!(txtp_lossless, 2296, 2); // [2]
    cdf_acc!(txtp_long32_dct, 2298, 2, 2); // [2][2]
    cdf_acc!(txtp_intra_short_1d, 2304, 4, 4); // [4][4]
    cdf_acc!(txtp_inter_short_1d, 2320, 16, 4, 4); // [3][4][4]
    cdf_acc!(txtp_ext, 2368, 8, 8); // [4][8]
    cdf_acc!(txtp_ext_reduced, 2400, 2, 2); // [4][2]
    cdf_acc!(txtp_inter_tx_set, 2408, 24, 8, 2, 2); // [2][3][4][2]
    cdf_acc!(txtp_inter_set0, 2456, 24, 8, 8); // [2][3][8]
    cdf_acc!(txtp_inter_set1, 2504, 8, 8); // [3][8]
    cdf_acc!(txtp_inter_set2, 2528, 4, 4); // [3][4]
    cdf_acc!(txtp_inter_dct_idtx, 2540, 8, 2, 2); // [3][4][2]
    cdf_acc!(txtp_inter_dct_idtx_iddct, 2564, 16, 4, 4); // [3][4][4]
    cdf_acc!(stx, 2612, 20, 4, 4); // [2][5][4]
    cdf_acc!(stx_set_adst, 2652, 4); // [4]
    cdf_acc!(stx_set, 2656, 8); // [8]
    cdf_acc!(cctx, 2664, 8); // [8]
    // segmentation
    cdf_acc!(seg_id_ext, 2672, 2, 2); // [3][2]
    cdf_acc!(seg_id, 2680, 24, 8, 8); // [2][3][8]
    cdf_acc!(delta_q, 2728, 8); // [8]
    // inter
    cdf_acc!(skip_mode, 2736, 2, 2); // [3][2]
    cdf_acc!(skip_mode_drl_idx, 2742, 2, 2); // [3][2]
    cdf_acc!(intra, 2748, 2, 2); // [4][2]
    cdf_acc!(tip, 2756, 2, 2); // [3][2]
    cdf_acc!(comp, 2762, 2, 2); // [5][2]
    cdf_acc!(single_ref, 2772, 12, 2, 2); // [3][6][2]
    cdf_acc!(comp0_ref, 2808, 12, 2, 2); // [3][6][2]
    cdf_acc!(comp1_ref, 2844, 24, 12, 2, 2); // [3][2][6][2]
    cdf_acc!(tip_mode, 2916, 2); // [2]
    cdf_acc!(warp, 2918, 2, 2); // [5][2]
    cdf_acc!(warp_newmv, 2928, 2); // [2]
    cdf_acc!(inter_mode, 2932, 4, 4); // [5][4]
    cdf_acc!(amvd, 2952, 6, 2, 2); // [9][3][2]
    cdf_acc!(bawp, 3006, 2, 2); // [2][2]
    cdf_acc!(bawp_explicit, 3010, 2, 2); // [3][2]
    cdf_acc!(bawp_explicit_scale, 3016, 2); // [2]
    cdf_acc!(warp_extend, 3018, 2, 2); // [3][2]
    cdf_acc!(warp_causal, 3024, 2, 2); // [4][2]
    cdf_acc!(interintra, 3032, 2, 2); // [4][2]
    cdf_acc!(interintra_mode, 3040, 4, 4); // [4][4]
    cdf_acc!(interintra_wedge, 3056, 2); // [2]
    cdf_acc!(wedge_quad, 3060, 4); // [4]
    cdf_acc!(wedge_angle, 3064, 8, 8); // [4][8]
    cdf_acc!(wedge_dist2, 3096, 4); // [4]
    cdf_acc!(wedge_dist, 3100, 4); // [4]
    cdf_acc!(tip_drl_idx, 3104, 2, 2); // [3][2]
    cdf_acc!(jmvd_amvd_scale_mode, 3112, 4); // [4]
    cdf_acc!(jmvd_scale_mode, 3120, 8); // [8]
    cdf_acc!(drl_idx, 3128, 10, 2, 2); // [3][5][2]
    cdf_acc!(mvprec_def, 3158, 2, 2); // [3][2]
    cdf_acc!(mvprec_rem, 3164, 12, 4, 4); // [2][3][4]
    cdf_acc!(warp_ref_idx, 3188, 2, 2); // [3][2]
    cdf_acc!(amvd_joint, 3196, 4); // [4]
    cdf_acc!(amvd_index, 3200, 8, 8); // [2][8]
    cdf_acc!(warpmv_with_mvd, 3216, 2); // [2]
    cdf_acc!(warp_delta_prec, 3218, 2, 2); // [N_BS_SIZES=31][2]
    cdf_acc!(warp_delta_param, 3280, 16, 8, 8); // [2][2][8]
    cdf_acc!(warp_delta_sign, 3312, 2); // [2]
    cdf_acc!(warp_interintra, 3314, 2, 2); // [4][2]
    cdf_acc!(comp_mode_sameref, 3324, 4, 4); // [5][4]
    cdf_acc!(comp_mode_joint, 3344, 2, 2); // [2][2]
    cdf_acc!(comp_mode, 3352, 8, 8); // [5][8]
    cdf_acc!(opfl, 3392, 2, 2); // [2][2]
    cdf_acc!(refine_mv, 3396, 2, 2); // [11][2]
    cdf_acc!(comp_type_masked, 3418, 2, 2); // [12][2]
    cdf_acc!(comp_type_weighted, 3442, 2); // [2]
    cdf_acc!(cwp_idx, 3444, 2, 2); // [4][2]
    cdf_acc!(filter, 3452, 4, 4); // [8][4]
    cdf_acc!(seg_pred, 3484, 2, 2); // [3][2]
}

#[derive(Clone)]
#[repr(C)]
#[derive(Default)]
pub struct CdfContext {
    pub coef: CdfCoefContext,
    pub m: CdfModeContext,
    pub mv: CdfMvContext,
    pub dmv: CdfMvContext,
}

#[repr(C)]
pub struct CdfDefaultContext {
    pub m: CdfModeContext,
    pub mv: CdfMvContext,
}

pub static DEFAULT_CDF: CdfDefaultContext = CdfDefaultContext {
    m: CdfModeContext {
        data: [
            7226, 15872, 7218, 9472, 19969, 6400, 23717, 8192, 27870, 14336, 26680, 6656, 3482,
            16640, 0, 0, 16211, 8416, 3091, 1536, 4684, 768, 9013, 23808, 9134, 23808, 13400, 768,
            7807, 0, 17827, 256, 16614, 256, 26863, 0, 10834, 0, 22328, 6656, 20784, 7936, 29294,
            0, 12276, 4096, 25805, 1536, 24669, 6656, 31239, 0, 8651, 23552, 24897, 2560, 9164,
            512, 24339, 7680, 5412, 512, 10327, 1792, 23871, 7936, 25957, 15616, 15176, 4096,
            27120, 8192, 27429, 6656, 31686, 6656, 6625, 19712, 21389, 21760, 12626, 23808, 25367,
            2048, 6533, 20992, 9094, 19968, 20327, 19712, 22286, 19200, 12105, 0, 28576, 6912,
            27494, 8448, 32055, 256, 4513, 19200, 5398, 19200, 9241, 0, 11778, 256, 6041, 0, 11581,
            0, 7444, 0, 14930, 0, 6632, 0, 16177, 1536, 12930, 256, 22163, 7936, 9854, 256, 20159,
            7936, 21427, 0, 28212, 0, 8550, 256, 19709, 1792, 17390, 8192, 26910, 8192, 11124,
            8192, 25001, 7936, 24459, 1536, 31081, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 7214,
            0, 13876, 0, 14238, 0, 21962, 1536, 10264, 256, 20628, 7936, 20802, 7936, 27784, 7680,
            8308, 7936, 24070, 7936, 23113, 7936, 30205, 7680, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 6541, 0, 16384, 0, 15099, 256, 16384, 0, 6589, 256,
            14879, 256, 16384, 0, 16384, 0, 9268, 256, 19653, 7936, 17515, 7936, 26310, 14080,
            10202, 7936, 21271, 8192, 22723, 7936, 29018, 6656, 14768, 1792, 22247, 9472, 21373,
            15872, 28349, 8192, 19772, 21760, 24583, 14080, 21789, 9216, 27758, 8192, 18124, 0,
            22595, 19200, 14239, 0, 16697, 23040, 12505, 256, 19955, 256, 6156, 0, 9491, 256,
            22174, 19456, 25768, 19200, 12766, 256, 19879, 512, 18914, 19456, 22018, 256, 14388,
            256, 15263, 1536, 18338, 1792, 21214, 512, 12690, 256, 13671, 19456, 17490, 512, 22631,
            256, 10847, 1792, 18147, 1536, 13438, 512, 16847, 256, 6550, 256, 8450, 256, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16702, 19968,
            23543, 512, 9919, 7936, 17951, 2816, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 14225, 19200, 19558, 2560, 8401, 8192, 14351, 6400, 8067,
            1536, 13857, 1792, 3178, 256, 4990, 1792, 29368, 256, 31833, 23040, 22403, 8192, 31045,
            256, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 17114, 19456, 19268, 19200, 13591, 23296,
            18029, 23040, 13999, 19200, 19268, 256, 9185, 19200, 11841, 19200, 17723, 256, 22240,
            0, 10294, 1536, 18518, 0, 16207, 19200, 21341, 19456, 10894, 1536, 16424, 23040, 11202,
            7936, 19411, 512, 5413, 256, 8651, 1536, 21867, 19712, 26988, 0, 13712, 9472, 23627,
            256, 12332, 1792, 17075, 8192, 6232, 1536, 9101, 7936, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 13527, 1792, 19730, 8192, 3865, 8192, 7966,
            8192, 23671, 8192, 30019, 1536, 17567, 6912, 28319, 1536, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 1677, 768, 3130, 0, 3844, 0, 4115, 0,
            2419, 23808, 4503, 19200, 5481, 0, 5047, 0, 2808, 23808, 4423, 23040, 5466, 23040,
            5516, 19200, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 2426,
            256, 5205, 1536, 6600, 1536, 9679, 8192, 2125, 0, 4085, 256, 4759, 0, 6582, 0, 3546,
            256, 7028, 0, 8689, 1536, 12962, 19456, 3359, 23040, 5943, 23808, 6849, 23808, 8351,
            23808, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0,
            5902, 7680, 8269, 6400, 8036, 7936, 9381, 6400, 5291, 7680, 6931, 7936, 8147, 7936,
            9164, 1280, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 8384, 6656,
            10655, 8192, 10970, 512, 12701, 1536, 6548, 7936, 9771, 7680, 10519, 7936, 12677, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 6979,
            7936, 7478, 8192, 8498, 7936, 9774, 7936, 6967, 256, 7508, 1792, 8727, 256, 8487, 256,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 9730, 1536, 12796,
            10240, 13045, 2048, 14829, 0, 17194, 1536, 19007, 19456, 19851, 23296, 21440, 19200,
            15473, 8192, 18305, 9728, 18044, 1536, 21115, 256, 19566, 8192, 21839, 1792, 22420,
            1792, 24492, 256, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 8040, 7936, 10095, 7936, 11735, 1536,
            12447, 256, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 8137, 17152,
            11405, 3840, 12567, 3840, 15239, 20992, 11726, 768, 14128, 20480, 14585, 23296, 17178,
            19456, 30133, 6400, 31885, 6400, 32265, 12800, 32489, 14080, 683, 1280, 17596, 7680,
            28265, 0, 18175, 8192, 3734, 8192, 16296, 8192, 27017, 8192, 29653, 7936, 0, 0, 0, 0,
            15060, 8192, 0, 0, 0, 0, 0, 0, 19355, 7869, 8192, 0, 0, 0, 0, 0, 22180, 12902, 6104,
            9472, 0, 0, 0, 0, 22637, 14894, 8892, 4002, 9472, 0, 0, 0, 24405, 17317, 11957, 7315,
            3375, 8192, 0, 0, 25396, 18901, 13799, 9490, 5791, 2612, 8192, 0, 14299, 15872, 16384,
            0, 27819, 9472, 16384, 0, 9298, 9472, 16384, 0, 26102, 9472, 16384, 0, 9854, 9472,
            16384, 0, 25775, 9472, 16384, 0, 6903, 6400, 18452, 0, 28170, 0, 7156, 1536, 20402,
            256, 29448, 23040, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 3905, 1746, 1044, 23808,
            17593, 12693, 11040, 8670, 6363, 5113, 3908, 1280, 22654, 17811, 15953, 13641, 12621,
            7185, 5599, 0, 27132, 23764, 22312, 20646, 20024, 12443, 7161, 0, 20025, 14596, 12574,
            9120, 6349, 1536, 0, 0, 23792, 16684, 11941, 8173, 4272, 19200, 0, 0, 23984, 18212,
            13058, 7865, 4044, 19200, 0, 0, 2265, 768, 1524, 768, 514, 19968, 444, 23808, 186,
            23808, 77, 23808, 5331, 0, 5526, 23040, 4728, 19456, 5179, 19456, 5534, 1792, 9185,
            15872, 6700, 19200, 10133, 19200, 10699, 1536, 13550, 8192, 19067, 7936, 28132, 9728,
            16384, 0, 16384, 0, 752, 3840, 365, 23808, 185, 3840, 85, 19456, 3195, 1575, 745,
            19968, 10956, 5702, 2489, 19200, 16692, 8962, 4006, 256, 13090, 1536, 20481, 1536,
            23194, 1536, 2723, 15872, 0, 0, 0, 0, 23989, 17673, 11991, 7865, 4845, 2365, 8192, 0,
            20854, 7936, 27640, 7936, 29213, 7936, 0, 0, 27015, 17360, 13698, 10137, 5190, 0, 0, 0,
            12327, 7680, 21158, 1536, 28125, 0, 0, 0, 23405, 11811, 9903, 8015, 6357, 4785, 2340,
            7936, 11486, 9158, 4560, 3457, 2420, 1610, 1277, 7680, 17269, 7680, 0, 0, 21845, 10923,
            0, 0, 23973, 17663, 1536, 0, 22335, 16794, 8192, 0, 15683, 11079, 8192, 0, 20261, 7680,
            0, 0, 30347, 28436, 21512, 20002, 11382, 4043, 681, 15872, 11089, 7463, 2122, 1256,
            231, 122, 72, 15872, 24506, 16466, 8686, 3346, 1370, 482, 243, 15872, 15533, 6602,
            2390, 1463, 395, 219, 100, 15872, 15150, 7036, 4903, 2430, 1643, 1246, 530, 15872,
            15226, 9702, 4861, 4040, 2066, 1603, 1333, 15872, 15093, 7966, 2300, 1985, 927, 504,
            346, 15872, 10253, 7017, 6400, 0, 28754, 27535, 7936, 0, 29220, 28605, 8448, 0, 19769,
            12, 14336, 0, 4628, 23040, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 24186, 1536,
            0, 0, 0, 0, 0, 0, 5355, 8192, 0, 0, 0, 0, 0, 0, 2339, 23808, 0, 0, 0, 0, 0, 0, 7418,
            3742, 23040, 0, 0, 0, 0, 0, 21405, 7495, 1792, 0, 0, 0, 0, 0, 25927, 4189, 256, 0, 0,
            0, 0, 0, 11418, 6756, 1536, 0, 0, 0, 0, 0, 2195, 1122, 23808, 0, 0, 0, 0, 0, 9062,
            5806, 3708, 0, 0, 0, 0, 0, 22792, 10252, 5386, 256, 0, 0, 0, 0, 26077, 7308, 3534,
            1536, 0, 0, 0, 0, 13859, 8843, 4365, 7936, 0, 0, 0, 0, 2460, 1692, 950, 23808, 0, 0, 0,
            0, 8652, 5811, 4282, 2827, 0, 0, 0, 0, 23200, 12296, 8474, 3826, 20736, 0, 0, 0, 27062,
            7525, 4728, 2362, 19456, 0, 0, 0, 12663, 9786, 5744, 3857, 7936, 0, 0, 0, 1871, 1426,
            1002, 569, 23808, 0, 0, 0, 11944, 8541, 6842, 5309, 3502, 19200, 0, 0, 24627, 13779,
            11169, 6586, 4192, 19200, 0, 0, 27516, 8428, 6318, 4330, 2143, 19200, 0, 0, 13249,
            10073, 7181, 5796, 4345, 1536, 0, 0, 2385, 1878, 1521, 1115, 618, 19968, 0, 0, 11140,
            8256, 6895, 5714, 4637, 3229, 20480, 0, 24740, 14504, 12155, 7344, 5656, 3862, 23040,
            0, 26279, 10526, 8307, 6374, 4418, 2258, 19200, 0, 10720, 8339, 5778, 4824, 4351, 3194,
            19456, 0, 1967, 1563, 1296, 1040, 763, 463, 23808, 0, 10297, 7685, 6784, 5875, 5114,
            4018, 2865, 23808, 25226, 15711, 13617, 9218, 7309, 5702, 3964, 23040, 25186, 12331,
            10040, 8146, 6253, 4189, 2136, 23040, 10666, 8624, 5852, 4617, 3922, 3556, 2615, 0,
            2244, 1881, 1612, 1375, 1142, 857, 487, 23808, 2775, 1536, 12990, 7936, 1053, 14080,
            13101, 256, 22213, 23296, 16384, 256, 16384, 256, 16384, 19200, 16384, 19200, 16384,
            19200, 16384, 19200, 16384, 19200, 16384, 19200, 6438, 7680, 3148, 0, 12348, 7680,
            11074, 7936, 19451, 7936, 17377, 7936, 16816, 7936, 18032, 7936, 18958, 1280, 1122,
            14080, 375, 6400, 1966, 6656, 2283, 7936, 12009, 8192, 10609, 256, 5936, 7936, 5417,
            256, 8072, 256, 3460, 0, 218, 23808, 4805, 256, 5150, 7936, 10401, 1792, 9290, 8960,
            16384, 0, 16384, 0, 4778, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 16384, 0, 16384, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 24, 20, 16, 12, 8, 4, 15360, 0,
            29762, 9880, 5636, 2796, 2792, 44, 7936, 0, 29095, 23919, 5116, 5112, 2824, 2820, 7936,
            0, 27549, 13349, 4716, 3932, 3240, 1472, 7936, 0, 29713, 13119, 10611, 5730, 5302,
            1122, 7936, 0, 26724, 21513, 6598, 6275, 4183, 3184, 7936, 0, 26872, 12407, 7083, 5216,
            4073, 1671, 7936, 0, 30413, 15167, 11065, 6718, 4887, 1371, 8192, 0, 28067, 19266,
            7810, 6355, 4602, 2639, 8192, 0, 29449, 16319, 11127, 5614, 3508, 1256, 8192, 0, 30242,
            15680, 13125, 3390, 3386, 44, 7936, 0, 30470, 28362, 8882, 8878, 2620, 2616, 7936, 0,
            31215, 16608, 14089, 4785, 3176, 629, 8192, 0, 30452, 28054, 10037, 8971, 3254, 2691,
            9472, 0, 21978, 10166, 32, 28, 24, 20, 8192, 0, 18384, 13652, 6223, 4081, 4077, 44,
            7936, 0, 18858, 11078, 6425, 6421, 4336, 4332, 7936, 0, 16877, 11056, 3878, 3197, 2461,
            1405, 8192, 0, 16822, 13321, 12498, 9345, 8910, 1620, 8192, 0, 16715, 15811, 12456,
            11844, 7998, 6809, 8192, 0, 14289, 9715, 6186, 5802, 5201, 2932, 15872, 0, 23456,
            20886, 18414, 14976, 12941, 3291, 15872, 0, 24278, 22100, 19473, 17415, 12816, 10193,
            15872, 0, 26364, 20702, 16595, 12727, 8256, 4347, 15872, 0, 22749, 18313, 15110, 5756,
            5752, 44, 9472, 0, 23289, 17864, 13394, 13390, 4741, 4737, 9472, 0, 29051, 25570,
            24665, 12222, 9210, 1321, 15872, 0, 28710, 27339, 23781, 18790, 7642, 6113, 15872, 0,
            334, 278, 223, 167, 111, 56, 12800, 0, 31277, 18527, 2838, 251, 244, 44, 14592, 0,
            31049, 16243, 1768, 1764, 193, 189, 7680, 0, 31123, 16019, 3444, 2343, 752, 283, 15872,
            0, 29860, 16966, 8079, 4298, 646, 226, 6400, 0, 29298, 14837, 6927, 3179, 861, 303,
            11008, 0, 27130, 13174, 4075, 2791, 2065, 614, 12800, 0, 28087, 23406, 18725, 14043,
            9362, 4681, 0, 0, 28087, 23406, 18725, 14043, 9362, 4681, 0, 0, 28087, 23406, 18725,
            14043, 9362, 4681, 0, 0, 30034, 20639, 2426, 963, 924, 44, 12800, 0, 28919, 10985,
            1725, 1712, 587, 575, 16640, 0, 28087, 23406, 18725, 14043, 9362, 4681, 0, 0, 28087,
            23406, 18725, 14043, 9362, 4681, 0, 0, 28087, 23406, 18725, 14043, 9362, 4681, 0, 0,
            28087, 23406, 18725, 14043, 9362, 4681, 0, 0, 28087, 23406, 18725, 14043, 9362, 4681,
            0, 0, 28087, 23406, 18725, 14043, 9362, 4681, 0, 0, 28087, 23406, 18725, 14043, 9362,
            4681, 0, 0, 28087, 23406, 18725, 14043, 9362, 4681, 0, 0, 28087, 23406, 18725, 14043,
            9362, 4681, 0, 0, 28087, 23406, 18725, 14043, 9362, 4681, 0, 0, 28087, 23406, 18725,
            14043, 9362, 4681, 0, 0, 28087, 23406, 18725, 14043, 9362, 4681, 0, 0, 28087, 23406,
            18725, 14043, 9362, 4681, 0, 0, 28087, 23406, 18725, 14043, 9362, 4681, 0, 0, 28087,
            23406, 18725, 14043, 9362, 4681, 0, 0, 28087, 23406, 18725, 14043, 9362, 4681, 0, 0,
            7637, 7680, 8254, 7680, 13234, 1536, 14131, 0, 2542, 12800, 2065, 8448, 16384, 0,
            16384, 0, 16384, 0, 32732, 0, 32640, 7936, 0, 0, 22076, 6182, 3537, 7936, 6068, 608,
            20, 1536, 5853, 357, 20, 1536, 24576, 16384, 8192, 0, 24421, 12514, 8232, 7936, 16774,
            6474, 20, 256, 11556, 4958, 20, 256, 24576, 16384, 8192, 0, 10953, 7684, 6538, 15872,
            3414, 1021, 20, 9472, 1154, 239, 20, 9216, 24576, 16384, 8192, 0, 22267, 12178, 8587,
            7936, 15172, 6380, 20, 9472, 17361, 6293, 36, 15360, 24576, 16384, 8192, 0, 27742,
            15952, 12794, 9364, 5923, 2269, 2048, 0, 17858, 7511, 5804, 3445, 2531, 1233, 0, 0,
            19009, 6660, 5080, 2975, 2503, 1192, 8960, 0, 28087, 23406, 18725, 14043, 9362, 4681,
            0, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 18646, 6400, 23806, 7936, 16384, 0,
            16384, 0, 16345, 6656, 9322, 0, 16384, 0, 16384, 0, 9416, 6400, 15699, 14336, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 11933, 0, 16384, 0, 16384, 0, 16384, 0, 2048, 768, 16384,
            0, 16384, 0, 16384, 0, 3911, 4352, 16384, 0, 23854, 22036, 20498, 17946, 15640, 13182,
            10804, 6400, 31608, 31213, 30796, 29354, 28806, 27617, 26860, 7936, 9949, 8430, 7176,
            5767, 4373, 3120, 1778, 6400, 31628, 31043, 30444, 18115, 13696, 9150, 4659, 7936,
            32710, 32507, 32181, 451, 212, 142, 60, 512, 15364, 15099, 14365, 8716, 6375, 4262,
            2092, 14592, 29647, 26298, 23577, 20488, 14957, 10180, 5071, 23808, 32430, 32391,
            32197, 32025, 24836, 20908, 15244, 256, 29454, 25143, 22129, 18562, 13405, 9312, 4735,
            23808, 24099, 16235, 7913, 23808, 23327, 16355, 7492, 23040, 24001, 15157, 7892, 2560,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 16384, 0, 16384, 0, 16384, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 28282, 17179, 6328, 19200,
            30411, 23264, 16127, 1280, 31404, 24734, 18337, 0, 30296, 24043, 18915, 19456, 25245,
            21087, 17985, 256, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 22278, 17374, 10562,
            7936, 18801, 15815, 9659, 7936, 12577, 11041, 6950, 8192, 16871, 6624, 2758, 1280,
            12056, 6505, 2145, 36, 32, 28, 14080, 0, 18418, 17932, 16714, 15693, 13360, 4238,
            15872, 0, 16384, 0, 16384, 0, 16384, 0, 0, 0, 27146, 24875, 16675, 14535, 4959, 4395,
            235, 0, 18494, 14538, 10211, 7833, 2788, 1917, 424, 0, 5241, 4281, 4045, 3878, 371,
            121, 89, 0, 28672, 24576, 20480, 16384, 12288, 8192, 4096, 0, 28672, 24576, 20480,
            16384, 12288, 8192, 4096, 0, 28672, 24576, 20480, 16384, 12288, 8192, 4096, 0, 16174,
            9443, 6344, 4543, 3410, 2669, 2155, 14336, 1804, 23808, 10999, 0, 20284, 3840, 11134,
            0, 15392, 0, 14336, 19200, 31246, 256, 18387, 0, 22313, 6400, 4972, 0, 1870, 23808,
            13103, 0, 23291, 3840, 5844, 3840, 7768, 256, 14819, 256, 19187, 1536, 25734, 0, 6299,
            0, 3898, 7680, 3106, 256, 2901, 1536, 2996, 1536, 2992, 6656, 19137, 1536, 14583, 9472,
            12776, 8192, 14306, 15872, 15317, 9472, 21190, 15872, 30169, 0, 27565, 7936, 27583,
            7936, 29097, 7936, 28814, 1536, 31135, 1280, 23496, 8192, 15593, 15872, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 31383, 0, 28329, 7936, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 32247, 0, 30914, 6400, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 2039, 19200,
            3365, 1280, 3731, 1536, 3413, 7936, 4195, 1280, 5372, 1792, 16384, 0, 13453, 7936,
            4947, 1536, 4876, 7936, 4073, 7680, 3131, 13056, 2336, 0, 12478, 7936, 12913, 9472,
            14201, 15872, 14437, 9472, 18527, 15872, 16384, 0, 27043, 7936, 19348, 7936, 19988,
            8192, 21987, 15872, 26344, 15872, 21134, 7936, 22675, 7936, 26703, 7936, 27360, 7936,
            26357, 7936, 28693, 7680, 16384, 0, 31870, 3840, 29641, 256, 30993, 1280, 31551, 1536,
            32177, 1280, 10639, 7936, 6769, 256, 18290, 1792, 21900, 1536, 27512, 7936, 30046,
            7936, 17673, 256, 0, 0, 22725, 21668, 1536, 0, 11207, 11010, 256, 0, 7357, 7054, 0, 0,
            18651, 18427, 0, 0, 14480, 14191, 0, 0, 26788, 3840, 26677, 3840, 26531, 23808, 31907,
            7680, 31921, 12800, 31570, 16896, 32312, 13568, 32337, 17408, 31919, 17408, 32359,
            17408, 32383, 17408, 32187, 17408, 16522, 0, 23072, 0, 23977, 0, 19569, 0, 22144, 0,
            24182, 256, 27656, 256, 28848, 768, 29100, 768, 20751, 19456, 22591, 19200, 23584,
            19200, 20657, 1536, 24712, 1280, 26127, 6912, 6312, 7936, 27647, 7936, 5802, 7936,
            17493, 1536, 18155, 7936, 10770, 8192, 12409, 0, 12458, 19200, 11009, 19200, 17891,
            256, 19967, 0, 25883, 1536, 29781, 7680, 12199, 256, 15662, 256, 11820, 256, 6972,
            8192, 30949, 16637, 5966, 8192, 31326, 16928, 4327, 256, 30773, 16954, 4547, 1792,
            29204, 17328, 4720, 8192, 16010, 0, 0, 0, 26257, 14624, 5394, 256, 22510, 17492, 12771,
            6207, 1536, 0, 0, 0, 18729, 13585, 6625, 2721, 1536, 0, 0, 0, 13204, 10669, 7664, 2808,
            256, 0, 0, 0, 18960, 14818, 7053, 3760, 1792, 0, 0, 0, 18305, 13653, 19200, 0, 24565,
            15774, 11736, 19200, 2106, 0, 8945, 1536, 11092, 1536, 0, 0, 9590, 5956, 0, 0, 0, 0, 0,
            0, 9588, 7874, 6220, 2896, 256, 0, 0, 0, 17047, 23040, 11653, 0, 13201, 256, 15166,
            23808, 19449, 23808, 14076, 23808, 13425, 23040, 14561, 23040, 14860, 23808, 14464,
            23808, 10611, 23040, 9535, 23040, 9986, 23040, 10415, 23808, 10311, 23808, 12118, 7936,
            17010, 7936, 28197, 7936, 21845, 10923, 0, 0, 1428, 263, 19968, 0, 6729, 593, 0, 0,
            21845, 10923, 0, 0, 571, 92, 19200, 0, 4089, 142, 0, 0, 13865, 0, 8268, 23040, 7408,
            19200, 0, 0, 32764, 15063, 20, 256, 22219, 17470, 16527, 10235, 5319, 2248, 688, 6656,
            23354, 17803, 16802, 10303, 5300, 2140, 624, 6656, 14316, 256, 20938, 12800, 19445,
            6400, 17875, 6400, 18816, 6400, 17135, 6400, 16728, 6400, 16032, 6400, 15317, 10240,
            14945, 8960, 13875, 1280, 16384, 0, 14800, 6400, 14558, 8192, 14097, 8192, 12423, 3840,
            16384, 0, 13370, 6400, 12622, 6912, 10183, 6656, 6333, 6656, 16384, 0, 12702, 6400,
            10985, 7168, 5411, 7936, 1661, 14336, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 23773, 9798, 7362, 3095, 2473, 1098, 905, 0, 19435, 8756, 6223, 2585, 1929,
            810, 629, 0, 23809, 18380, 12943, 10958, 7733, 4691, 3299, 3840, 23569, 18622, 13284,
            11177, 8154, 4753, 3230, 0, 18483, 23808, 16384, 0, 4788, 14336, 3605, 14336, 2110,
            15872, 0, 0, 26382, 9424, 9420, 7936, 21823, 8059, 8054, 7936, 21251, 7538, 7510, 7936,
            25205, 10592, 10588, 7936, 26139, 11813, 11802, 1536, 8048, 0, 4, 0, 0, 0, 0, 0, 20591,
            12767, 9575, 8320, 6656, 0, 0, 0, 11576, 7651, 4962, 4820, 7936, 0, 0, 0, 5989, 4044,
            2576, 2519, 6400, 0, 0, 0, 20262, 14897, 11473, 11379, 7936, 0, 0, 0, 15820, 12433,
            10186, 10151, 7936, 0, 0, 0, 21186, 7936, 8692, 6656, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 12564, 6400, 15154, 11008, 8325, 8192, 16384,
            0, 15258, 6656, 22386, 0, 24432, 7936, 26714, 256, 27004, 1280, 25614, 2560, 17755,
            6656, 24342, 0, 24490, 256, 27912, 256, 29304, 0, 27473, 0, 15874, 7936, 11064, 14336,
            16778, 7936, 20224, 14592, 7130, 15872, 2793, 20, 6400, 0, 30692, 65, 19200, 0, 32749,
            31000, 3840, 0, 15454, 5353, 7936, 0, 1482, 774, 0, 0, 23187, 160, 7936, 0, 32233,
            31732, 0, 0, 7949, 5046, 7936, 0, 16384, 0, 16384, 0, 16384, 0, 0, 0, 0, 0, 0, 0,
        ],
    },
    mv: CdfMvContext {
        data: [
            28308, 19769, 10263, 1928, 9728, 0, 0, 0, 25249, 13861, 7205, 2893, 785, 6912, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 24088, 19045, 14560, 10082, 6046, 2748,
            1280, 0, 28444, 17468, 9078, 4071, 1486, 409, 256, 0, 25271, 15467, 8920, 5330, 3373,
            1889, 765, 7936, 22101, 12529, 6885, 3098, 1368, 615, 189, 0, 11439, 2204, 179, 119,
            60, 12800, 0, 0, 8518, 962, 92, 46, 36, 12800, 0, 0, 28087, 23406, 18725, 14043, 9362,
            4681, 0, 0, 12790, 2608, 204, 36, 32, 28, 256, 0, 13061, 4354, 1528, 1120, 76, 51, 47,
            6400, 14299, 5341, 1206, 116, 44, 40, 36, 7936, 14958, 7572, 3396, 815, 204, 48, 44,
            14080, 1189, 6400, 16384, 0, 18181, 9216, 11802, 19200, 19579, 0, 14825, 23808, 13834,
            23808, 13840, 23808, 14072, 23808, 13724, 23808, 12406, 23808, 12342, 23808, 10205,
            23808, 10578, 23808, 9310, 23040, 6541, 512, 2003, 12800, 16384, 0, 16384, 0, 16384, 0,
            16384, 0, 27105, 6400, 27912, 23040, 19323, 256, 19227, 256, 18723, 256, 19880, 7936,
            0, 0,
        ],
    },
};

pub static DEFAULT_COEF_CDF: [CdfCoefContext; 4] = [
    CdfCoefContext {
        data: [
            7009, 7936, 31669, 23808, 30006, 1280, 24824, 6656, 16538, 1536, 3692, 7936, 23870,
            256, 19113, 256, 10420, 0, 16384, 0, 7969, 14336, 29606, 19200, 27955, 0, 19206, 256,
            14779, 19456, 969, 0, 27598, 19200, 19924, 256, 10432, 1536, 16384, 0, 13822, 15872,
            27117, 1536, 26575, 1792, 17181, 1792, 14456, 23296, 970, 20480, 29807, 0, 21163, 6656,
            8111, 7936, 16384, 0, 24959, 15872, 28904, 8448, 18638, 10240, 16750, 8192, 17169,
            2560, 4607, 8192, 31468, 9216, 21065, 14592, 8039, 8448, 16384, 0, 29968, 15872, 32609,
            8192, 31043, 12800, 21630, 12800, 16384, 0, 449, 0, 32312, 16128, 26352, 12800, 16384,
            0, 16384, 0, 4, 0, 22017, 4096, 15189, 4096, 8708, 23040, 4683, 1280, 1840, 23808,
            27331, 9472, 14949, 6656, 4694, 2048, 2336, 20480, 316, 15872, 18440, 23808, 13841,
            23808, 10363, 23808, 7308, 23808, 2134, 19200, 27616, 7936, 17406, 7936, 7954, 1536,
            903, 0, 877, 15872, 15754, 23808, 12932, 23808, 12318, 1536, 7637, 256, 1230, 768,
            27303, 6400, 15328, 7936, 3980, 256, 3633, 9472, 1676, 15872, 20816, 7168, 30840, 0,
            12862, 3072, 618, 12800, 1421, 13312, 23406, 2560, 3641, 12800, 395, 12800, 5381,
            15360, 5946, 16128, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 16384, 0, 16384, 0, 30822, 29709, 25934, 17645, 1536, 0, 0, 0, 32210, 31933, 30029,
            26234, 6400, 0, 0, 0, 24768, 22402, 18302, 13199, 7936, 0, 0, 0, 31565, 30848, 28266,
            22487, 15690, 1536, 0, 0, 31690, 31428, 30304, 27616, 21352, 1280, 0, 0, 21098, 18497,
            13481, 8849, 5684, 7936, 0, 0, 30920, 30411, 28376, 25139, 19440, 11238, 8192, 0,
            31292, 31065, 30333, 28523, 25248, 17950, 1536, 0, 19643, 16632, 11286, 6427, 3087,
            1734, 7936, 0, 32432, 31780, 29784, 27386, 22968, 15773, 8280, 8192, 31262, 30690,
            29772, 28407, 25741, 20651, 11731, 1536, 22699, 20105, 14332, 8443, 4317, 2209, 1208,
            7936, 32447, 30392, 27341, 24932, 20042, 14216, 11684, 8192, 30814, 30181, 28901,
            27635, 25208, 22194, 18026, 9472, 24784, 21890, 16777, 12583, 7411, 3410, 1506, 8192,
            32629, 26814, 19736, 16524, 12700, 7814, 6871, 8192, 29356, 28872, 27034, 25244, 22651,
            18995, 16327, 15872, 19958, 16641, 10353, 7752, 5000, 2918, 1396, 8192, 32192, 30815,
            24682, 17773, 12762, 8086, 6898, 15872, 30021, 29749, 28833, 27892, 26717, 24180,
            22633, 14592, 20895, 17389, 6933, 4850, 3675, 2604, 1986, 8192, 16377, 0, 0, 0, 21845,
            10923, 0, 0, 21845, 10923, 0, 0, 21845, 10923, 0, 0, 7293, 2979, 19200, 0, 21845,
            10923, 0, 0, 636, 159, 12800, 0, 474, 67, 19200, 0, 1150, 268, 23808, 0, 21845, 10923,
            0, 0, 110, 17, 19968, 0, 67, 15, 23808, 0, 93, 23, 23808, 0, 21845, 10923, 0, 0, 110,
            49, 16640, 0, 110, 24, 17152, 0, 121, 12, 8448, 0, 21845, 10923, 0, 0, 230, 57, 0, 0,
            630, 315, 0, 0, 412, 206, 12800, 0, 20408, 6376, 2825, 6656, 24178, 7415, 1873, 1536,
            25522, 13272, 6238, 19200, 29300, 16536, 7147, 23040, 28760, 20163, 13840, 23808,
            30769, 23603, 16083, 23808, 29620, 23375, 17868, 23808, 31658, 25072, 18646, 19968,
            30225, 25242, 20747, 23808, 30207, 27323, 22222, 23808, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 4754, 1234, 708, 1280, 24576, 16384, 8192, 0, 19633, 9281, 4169, 0, 24576,
            16384, 8192, 0, 25719, 17400, 12000, 23808, 24576, 16384, 8192, 0, 29659, 24714, 20385,
            19200, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 7470, 342,
            55, 23808, 18117, 1217, 177, 23808, 14302, 2285, 501, 19200, 32462, 6125, 981, 23040,
            20369, 6618, 2077, 23040, 31637, 11558, 3639, 19200, 25281, 12653, 5887, 23808, 32112,
            18129, 8338, 19200, 29180, 21726, 15599, 19968, 32012, 24972, 17855, 19968, 6198, 325,
            77, 19968, 15209, 1060, 140, 19968, 14456, 2414, 480, 23040, 32187, 6163, 1067, 23040,
            20956, 6977, 2196, 19200, 31695, 12032, 3795, 19200, 25603, 13464, 6159, 23808, 31797,
            18367, 8353, 23808, 28790, 20402, 13608, 23808, 31833, 23945, 16157, 19968, 7098, 538,
            90, 19200, 13212, 1047, 91, 0, 15647, 3033, 714, 19200, 31308, 6173, 1145, 23040,
            21179, 7207, 2342, 23040, 31116, 12162, 3829, 19968, 25425, 12137, 5194, 23040, 31846,
            17440, 7653, 19200, 27990, 18622, 11617, 23040, 31866, 23089, 14348, 19968, 1804, 230,
            75, 1280, 24576, 16384, 8192, 0, 14556, 3687, 1182, 23808, 24576, 16384, 8192, 0,
            22121, 10615, 5230, 0, 24576, 16384, 8192, 0, 26372, 16723, 9919, 0, 24576, 16384,
            8192, 0, 29194, 22209, 16690, 0, 24576, 16384, 8192, 0, 4071, 76, 20, 23040, 19051,
            452, 28, 23040, 7985, 394, 56, 23040, 31539, 1897, 168, 19200, 13768, 1969, 326, 19200,
            30185, 5388, 881, 3840, 22112, 8135, 2715, 19200, 31886, 13009, 4420, 19200, 28744,
            21019, 14946, 19200, 32457, 24514, 17343, 19200, 3007, 60, 20, 19200, 14517, 201, 20,
            0, 8012, 340, 46, 19200, 30966, 1817, 226, 23808, 14118, 2175, 374, 19200, 29885, 5047,
            894, 19968, 22488, 8192, 2854, 19200, 32480, 13693, 4514, 256, 28792, 19921, 13507,
            19200, 32014, 23918, 16214, 768, 2422, 43, 20, 19200, 8213, 96, 20, 1280, 7902, 354,
            42, 19200, 31911, 1494, 103, 23040, 14104, 2078, 364, 23808, 30309, 5283, 806, 23808,
            22466, 8140, 2375, 23808, 31845, 13187, 3919, 19968, 27660, 17799, 10506, 19968, 32131,
            21596, 12762, 19968, 654, 62, 20, 0, 24576, 16384, 8192, 0, 10121, 1177, 246, 0, 24576,
            16384, 8192, 0, 18329, 5865, 2107, 1536, 24576, 16384, 8192, 0, 25358, 13133, 6121,
            256, 24576, 16384, 8192, 0, 29501, 22351, 16242, 23552, 24576, 16384, 8192, 0, 3309,
            92, 27, 6656, 20147, 334, 20, 21248, 9101, 656, 67, 19200, 27205, 2414, 187, 19200,
            13385, 2108, 204, 19200, 28923, 5393, 1071, 23040, 22693, 7874, 2871, 23040, 30695,
            13041, 4888, 19968, 29400, 23370, 18876, 20736, 32197, 26461, 20720, 20736, 2227, 56,
            20, 4608, 15663, 250, 20, 23040, 6388, 331, 32, 19968, 30876, 1231, 86, 23296, 12211,
            1487, 295, 23040, 29620, 4517, 647, 0, 22163, 6792, 2379, 19456, 29141, 12618, 4251,
            19456, 28976, 21634, 16861, 20736, 32251, 25229, 19188, 20736, 2360, 20, 16, 19200,
            477, 63, 20, 19200, 7038, 183, 29, 23040, 26826, 1152, 152, 23808, 12583, 1692, 304,
            19968, 31764, 4424, 674, 19968, 21061, 6569, 2079, 23808, 31506, 11440, 3199, 23808,
            27733, 17838, 11539, 23040, 32022, 22069, 14012, 23040, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 4385, 159, 80, 2560, 17340, 701, 64, 8960, 17014, 1980,
            180, 23040, 27888, 3137, 1162, 0, 22218, 8440, 621, 19200, 24030, 10559, 3095, 19200,
            23073, 9889, 5817, 6400, 30970, 16983, 4995, 19200, 29341, 22486, 18641, 23808, 31081,
            24953, 18737, 19968, 1208, 453, 151, 16640, 20663, 835, 417, 19200, 12332, 2819, 705,
            0, 26056, 4145, 197, 6400, 23051, 4633, 1582, 3840, 24519, 8249, 2406, 10240, 25645,
            7480, 4274, 2560, 21212, 17888, 5540, 2560, 28727, 21875, 17306, 1280, 31974, 22739,
            15490, 4608, 4104, 24, 20, 0, 1136, 68, 28, 3840, 6060, 189, 26, 19968, 26096, 1026,
            63, 23808, 11935, 1123, 129, 23808, 31622, 3457, 439, 23808, 19092, 4541, 1047, 23808,
            31289, 8539, 1793, 19968, 26976, 17212, 11128, 23296, 31091, 21932, 13300, 23296,
            24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 10463, 4025, 2423, 1536,
            10105, 2820, 1448, 19968, 12992, 4110, 2333, 19968, 17332, 7455, 4587, 19968, 21554,
            12097, 7914, 19968, 24220, 15786, 11002, 19968, 27039, 20775, 15592, 19968, 5282, 1628,
            989, 704, 1792, 0, 0, 0, 4505, 1626, 955, 711, 1536, 0, 0, 0, 5190, 2363, 1566, 1320,
            1536, 0, 0, 0, 2968, 623, 179, 103, 23808, 0, 0, 0, 5571, 1559, 1070, 824, 8192, 0, 0,
            0, 2353, 781, 466, 381, 0, 0, 0, 0, 2002, 608, 307, 204, 19200, 0, 0, 0, 1322, 258, 56,
            28, 23040, 0, 0, 0, 22887, 4439, 2414, 1551, 15872, 0, 0, 0, 1953, 633, 408, 322, 1280,
            0, 0, 0, 872, 710, 345, 243, 9472, 0, 0, 0, 5671, 3781, 1260, 630, 12800, 0, 0, 0,
            32692, 29107, 19009, 11259, 15872, 0, 0, 0, 858, 185, 80, 28, 23808, 0, 0, 0, 26214,
            19661, 13107, 6554, 0, 0, 0, 0, 26214, 19661, 13107, 6554, 0, 0, 0, 0, 32470, 32172,
            31874, 31576, 12800, 0, 0, 0, 3760, 2157, 278, 85, 768, 0, 0, 0, 26214, 19661, 13107,
            6554, 0, 0, 0, 0, 26214, 19661, 13107, 6554, 0, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 30940, 15917, 8756, 4119,
            2346, 11008, 0, 0, 32764, 24597, 10756, 4557, 2291, 19968, 0, 0, 25845, 16752, 11062,
            5619, 3332, 768, 0, 0, 32764, 25364, 16196, 9964, 4490, 21248, 0, 0, 27278, 23948,
            16954, 12524, 8747, 23552, 0, 0, 32764, 27716, 19370, 13986, 9377, 512, 0, 0, 29736,
            24738, 19681, 15306, 11027, 0, 0, 0, 32764, 27949, 22142, 19204, 14761, 4096, 0, 0,
            30507, 26350, 23609, 20795, 17177, 19968, 0, 0, 32763, 28855, 23037, 20188, 18928,
            23552, 0, 0, 30468, 27481, 24221, 20625, 16931, 23040, 0, 0, 32763, 30161, 26724,
            23839, 20789, 23040, 0, 0, 31070, 27571, 24493, 21319, 20556, 4608, 0, 0, 32719, 30643,
            28599, 25423, 22176, 0, 0, 0, 32180, 29862, 28576, 26770, 25678, 23808, 0, 0, 31479,
            31471, 29450, 28142, 26939, 23808, 0, 0, 20014, 3758, 1229, 632, 245, 19200, 0, 0,
            27028, 6121, 799, 309, 36, 2560, 0, 0, 24794, 9456, 4025, 1581, 639, 19968, 0, 0,
            32764, 13646, 4653, 1417, 440, 23040, 0, 0, 26764, 15015, 7279, 3862, 2076, 19968, 0,
            0, 32764, 21292, 12482, 6795, 3650, 0, 0, 0, 27450, 19862, 11937, 6920, 3857, 23808, 0,
            0, 32764, 24373, 16879, 10390, 5752, 23040, 0, 0, 29431, 22607, 16355, 11865, 8039,
            23808, 0, 0, 32764, 26537, 19589, 13736, 9644, 19968, 0, 0, 30136, 24512, 19379, 14419,
            10711, 23808, 0, 0, 32764, 27229, 22015, 17227, 13097, 23040, 0, 0, 31121, 27787,
            24750, 22055, 19838, 19968, 0, 0, 32635, 30173, 27010, 23596, 20722, 19968, 0, 0,
            15310, 2897, 768, 222, 66, 23808, 0, 0, 25843, 5680, 1018, 400, 62, 23808, 0, 0, 22256,
            8265, 3122, 1239, 550, 23808, 0, 0, 31906, 14824, 5594, 2054, 694, 23040, 0, 0, 26259,
            15332, 8706, 4470, 2329, 23808, 0, 0, 32038, 21166, 12318, 6729, 3737, 23040, 0, 0,
            28434, 19925, 13129, 7961, 4959, 23040, 0, 0, 31586, 24464, 16706, 10710, 6360, 23808,
            0, 0, 30005, 24826, 20217, 15895, 12193, 23808, 0, 0, 32180, 27655, 22513, 18043,
            14329, 23808, 0, 0, 7507, 2494, 1367, 909, 660, 1280, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 21427, 9981, 5438, 3439, 2366, 19200, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 24898, 16171, 10454, 6732, 5122, 19200, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 23666, 17556, 13172, 10138, 8054, 1280, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 30141, 25184, 20231, 16620, 13540, 19968, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 30995, 27609, 24384, 21186, 18442, 19200, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 31487, 29462, 27204, 25038, 22743, 23808, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 4493, 681, 214, 89, 36, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 19644, 8487, 3519, 1729, 836, 23040, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 25516, 17265, 10778, 6747, 4439, 23808, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 26002, 19517, 14248, 10534, 7824, 23808, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 30746, 26486, 22209, 18937, 15855, 23808,
            0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 23974, 1937, 1256, 733, 523, 15360, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 28613, 12659, 4799, 2232, 625, 0, 0, 0,
            32764, 22468, 10468, 4636, 1929, 19200, 0, 0, 19466, 9007, 5420, 2816, 1292, 256, 0, 0,
            32764, 18178, 8682, 4697, 3050, 256, 0, 0, 26636, 18343, 12008, 7646, 5215, 19456, 0,
            0, 32764, 25176, 16720, 11074, 7113, 20736, 0, 0, 29392, 22486, 18353, 13684, 9612,
            256, 0, 0, 32764, 26782, 20228, 15301, 11722, 19200, 0, 0, 30429, 24833, 20516, 17250,
            14746, 19200, 0, 0, 32764, 27961, 24208, 19026, 14922, 23808, 0, 0, 31760, 27707,
            23501, 20830, 17113, 23296, 0, 0, 30081, 30056, 25827, 22408, 19047, 23040, 0, 0,
            31701, 27698, 24129, 21481, 18979, 19200, 0, 0, 32764, 28800, 26785, 23696, 20814,
            23808, 0, 0, 32255, 29580, 27828, 26126, 24442, 23808, 0, 0, 31170, 31164, 29433,
            27378, 25582, 23808, 0, 0, 14404, 1837, 205, 82, 36, 19968, 0, 0, 12663, 4740, 620, 72,
            46, 19456, 0, 0, 18433, 5068, 1266, 442, 95, 4608, 0, 0, 32764, 8948, 2192, 491, 93,
            19200, 0, 0, 19661, 7016, 2836, 1130, 387, 19200, 0, 0, 32764, 13186, 5508, 2389, 1073,
            23040, 0, 0, 26310, 14802, 8278, 4441, 2313, 23808, 0, 0, 32764, 19772, 11154, 5789,
            2897, 19968, 0, 0, 28406, 20396, 13933, 8984, 5516, 23808, 0, 0, 32764, 24370, 16969,
            11044, 7137, 23040, 0, 0, 29338, 22306, 16486, 11849, 8428, 19200, 0, 0, 32738, 26658,
            20469, 14918, 10264, 19200, 0, 0, 30842, 26943, 23525, 20306, 17716, 19968, 0, 0,
            32696, 29401, 25626, 22173, 19025, 19968, 0, 0, 8385, 639, 131, 55, 36, 23808, 0, 0,
            23631, 2207, 247, 69, 36, 23040, 0, 0, 15498, 3028, 760, 285, 113, 23808, 0, 0, 32760,
            6791, 1340, 303, 111, 19200, 0, 0, 20500, 6891, 2346, 807, 283, 23040, 0, 0, 32756,
            12199, 4001, 1311, 409, 23040, 0, 0, 25474, 13773, 6687, 3096, 1316, 23808, 0, 0,
            32587, 18629, 9274, 4310, 1850, 23808, 0, 0, 29328, 22960, 17382, 12864, 9378, 23808,
            0, 0, 32629, 26313, 20065, 14971, 10936, 23040, 0, 0, 4016, 899, 448, 290, 196, 19200,
            0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 17098, 5204, 2400, 1275, 775, 23040,
            0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 22969, 12590, 7210, 4355, 2722, 19200,
            0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 23412, 16268, 11561, 8416, 6349, 1536,
            0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 29787, 23637, 18586, 14425, 11314,
            19200, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 30614, 25993, 21237, 17684,
            14504, 19200, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 31511, 28828, 25878,
            23069, 20738, 23808, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 2100, 187, 75,
            32, 28, 1280, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 14264, 3366, 1066, 485,
            249, 19968, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 22002, 10236, 4790, 2653,
            1506, 19200, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 24049, 14306, 8340, 5207,
            3188, 19200, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 28889, 22287, 16796,
            13135, 10007, 23040, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 14124, 2341, 513,
            224, 104, 9472, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 28219, 7534, 3250,
            1173, 770, 256, 0, 0, 32764, 20184, 7483, 3251, 1202, 19456, 0, 0, 20509, 8207, 4190,
            2130, 1013, 20480, 0, 0, 32764, 14557, 6140, 2480, 1740, 6400, 0, 0, 27220, 19185,
            12777, 7706, 4978, 3840, 0, 0, 32764, 23787, 15703, 9921, 6359, 19200, 0, 0, 30257,
            23997, 19059, 14253, 11137, 23040, 0, 0, 32764, 26677, 20366, 16367, 11384, 19200, 0,
            0, 31312, 25828, 20750, 17261, 14192, 3840, 0, 0, 28940, 28764, 24908, 20463, 16584,
            23296, 0, 0, 31312, 27280, 24382, 20517, 18185, 23040, 0, 0, 32763, 29101, 25228,
            22168, 18830, 19200, 0, 0, 30596, 28490, 25833, 22382, 19388, 23808, 0, 0, 32762,
            30107, 25775, 23452, 20724, 23040, 0, 0, 31914, 30012, 28346, 26366, 24625, 19200, 0,
            0, 32764, 30790, 28828, 26696, 25308, 23808, 0, 0, 5171, 294, 103, 38, 34, 4096, 0, 0,
            8140, 3268, 848, 103, 36, 512, 0, 0, 15910, 3924, 1268, 391, 78, 23040, 0, 0, 32764,
            5718, 1157, 170, 60, 256, 0, 0, 15356, 4396, 1676, 641, 230, 19200, 0, 0, 32764, 9733,
            3367, 1207, 406, 256, 0, 0, 26014, 14624, 7856, 4165, 2172, 19200, 0, 0, 32764, 16909,
            8376, 4265, 2198, 0, 0, 0, 28753, 20257, 13165, 8206, 4868, 20480, 0, 0, 32764, 23574,
            15752, 10431, 6631, 19200, 0, 0, 29310, 22388, 16624, 11655, 8085, 23040, 0, 0, 32763,
            26001, 19545, 14111, 10249, 3840, 0, 0, 31086, 27336, 23999, 20595, 17924, 23808, 0, 0,
            32761, 28865, 25345, 22113, 19235, 23808, 0, 0, 4432, 148, 53, 32, 28, 20480, 0, 0,
            23710, 1354, 91, 32, 28, 0, 0, 0, 9735, 1120, 247, 68, 36, 19200, 0, 0, 32693, 3550,
            513, 122, 36, 0, 0, 0, 14776, 3023, 720, 189, 44, 19200, 0, 0, 32673, 6444, 1360, 342,
            105, 23040, 0, 0, 23097, 9796, 3887, 1465, 535, 23808, 0, 0, 32636, 13777, 5293, 1868,
            628, 19200, 0, 0, 29523, 22622, 17086, 12713, 9462, 23040, 0, 0, 32053, 25812, 19613,
            14610, 10887, 19968, 0, 0, 2486, 305, 125, 79, 48, 23040, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 14405, 2798, 1028, 439, 239, 19200, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 21665, 10839, 5885, 3430, 2153, 0, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 22758, 16787, 12643, 10051, 8223, 6656, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 30571, 26155, 20224, 16427, 13355, 8192, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 31791, 27639, 23894, 20434, 16689, 3840, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 31442, 29023, 26995, 24862, 22443, 8960, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 1081, 66, 30, 26, 22, 1280, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 9667, 1343, 474, 283, 208, 19456, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 18725, 6282, 2831, 1851, 1132, 1536, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 21178, 11215, 6679, 4145, 2987, 8192, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 29423, 23081, 17708, 13531, 10822, 8448, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 14787, 2505, 1425, 933, 540, 13312, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 32227, 12859, 7074, 1197, 61, 14336, 0, 0,
            32763, 29760, 14259, 6107, 2268, 1536, 0, 0, 26488, 16124, 10571, 5382, 2457, 7936, 0,
            0, 29479, 23066, 14049, 11901, 8602, 10752, 0, 0, 30335, 24414, 17438, 12653, 9530,
            512, 0, 0, 32747, 23468, 19611, 16704, 10661, 1792, 0, 0, 29709, 27239, 22079, 18098,
            16108, 22272, 0, 0, 32732, 28353, 23078, 20565, 17012, 2560, 0, 0, 30240, 25580, 22209,
            20722, 17053, 23040, 0, 0, 32540, 30851, 28067, 24006, 19898, 4352, 0, 0, 31450, 27784,
            25894, 20967, 19936, 21760, 0, 0, 31996, 31225, 28138, 24754, 22736, 23040, 0, 0,
            31027, 28076, 26563, 24292, 21946, 21760, 0, 0, 32481, 31119, 28322, 25956, 23877,
            2560, 0, 0, 31949, 30700, 28828, 27151, 26604, 23808, 0, 0, 32748, 31324, 30019, 29327,
            27468, 23552, 0, 0, 10141, 2661, 814, 73, 36, 1536, 0, 0, 23134, 9298, 1120, 224, 112,
            10240, 0, 0, 17960, 5468, 1720, 413, 221, 7936, 0, 0, 32764, 6062, 1374, 178, 51, 4096,
            0, 0, 18657, 6928, 3092, 1572, 668, 512, 0, 0, 30528, 14347, 6038, 3199, 1803, 1280, 0,
            0, 29448, 16116, 9525, 4968, 3158, 1536, 0, 0, 29527, 20824, 14464, 10068, 6016, 768,
            0, 0, 29993, 22366, 15973, 11348, 8613, 20992, 0, 0, 32726, 25221, 19005, 14460, 10443,
            21248, 0, 0, 31242, 23285, 17472, 12536, 10035, 1792, 0, 0, 28998, 26633, 21594, 15630,
            12237, 23808, 0, 0, 31202, 28560, 25275, 22787, 21461, 19200, 0, 0, 32758, 30061,
            27421, 24752, 21559, 23296, 0, 0, 3717, 157, 36, 32, 28, 20736, 0, 0, 21028, 1162, 95,
            32, 28, 3840, 0, 0, 9686, 1363, 251, 32, 28, 3840, 0, 0, 30813, 3483, 374, 83, 36,
            3840, 0, 0, 16041, 4294, 1307, 361, 58, 19200, 0, 0, 31725, 8184, 2447, 869, 312,
            19200, 0, 0, 25083, 12079, 5215, 2254, 1141, 23040, 0, 0, 32456, 17127, 7868, 3486,
            1424, 19968, 0, 0, 29833, 24132, 19023, 15107, 12253, 19456, 0, 0, 32746, 26763, 21647,
            17588, 14553, 20736, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 32161, 29734, 24879, 16991, 9102, 19200, 0, 0, 32222,
            31676, 27307, 24030, 13107, 19200, 0, 0, 32286, 23130, 21685, 21203, 19275, 19200, 0,
            0, 31928, 30667, 28987, 20165, 16384, 12800, 0, 0, 32495, 25122, 24849, 22391, 19115,
            12800, 0, 0, 32378, 31793, 31208, 21065, 17359, 12800, 0, 0, 31949, 31403, 30583,
            27034, 26214, 12800, 0, 0, 32412, 32234, 31878, 31165, 25288, 12800, 0, 0, 32342,
            30640, 28512, 27236, 26385, 12800, 0, 0, 32542, 32316, 31638, 29378, 28248, 12800, 0,
            0, 31832, 30583, 29335, 28711, 27463, 0, 0, 0, 32555, 32342, 31917, 31066, 30853,
            12800, 0, 0, 31638, 25988, 21469, 19209, 16949, 0, 0, 0, 31928, 31508, 31088, 30247,
            29407, 12800, 0, 0, 31928, 30247, 29827, 28987, 26046, 19200, 0, 0, 32161, 31858,
            30948, 30341, 30037, 6400, 0, 0, 30008, 22884, 13624, 6322, 4007, 19200, 0, 0, 26390,
            23971, 18473, 7037, 2419, 12800, 0, 0, 31746, 27586, 22697, 18245, 12626, 2560, 0, 0,
            31143, 27190, 18097, 13485, 8917, 10240, 0, 0, 31275, 18725, 16147, 13026, 11872,
            10240, 0, 0, 32689, 26976, 22136, 18249, 15551, 19200, 0, 0, 30872, 26810, 21123,
            18415, 16519, 0, 0, 0, 31795, 29524, 26604, 24657, 21737, 0, 0, 0, 29991, 27769, 24437,
            22216, 19439, 19200, 0, 0, 31969, 30370, 27573, 25175, 21579, 6400, 0, 0, 30997, 27454,
            23912, 20369, 17712, 19200, 0, 0, 30720, 26624, 18432, 16384, 14336, 12800, 0, 0,
            32259, 29033, 24788, 22751, 21053, 19200, 0, 0, 32231, 30619, 27217, 26680, 24352,
            19200, 0, 0, 7911, 679, 78, 52, 36, 0, 0, 0, 22357, 4323, 209, 46, 36, 4608, 0, 0,
            16923, 2479, 216, 108, 36, 10240, 0, 0, 24995, 3422, 906, 249, 36, 10240, 0, 0, 23002,
            8481, 4048, 1799, 386, 20992, 0, 0, 32183, 12448, 3724, 745, 319, 7168, 0, 0, 25141,
            14124, 8051, 3249, 989, 0, 0, 0, 30050, 17668, 6342, 3020, 1208, 0, 0, 0, 30317, 24511,
            20899, 16212, 13245, 3072, 0, 0, 32512, 28117, 22187, 18944, 16427, 23552, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 24825,
            18575, 11993, 8192, 18471, 10368, 6530, 23296, 22211, 14085, 10218, 23040, 24479,
            16700, 14314, 23552, 27510, 22038, 19059, 23040, 28835, 24602, 22088, 23040, 30303,
            27443, 26143, 23040, 21903, 16338, 13077, 1536, 18197, 10035, 6662, 3840, 18696, 9747,
            6797, 19200, 21210, 12515, 9533, 19968, 24165, 16568, 13302, 23808, 26127, 19682,
            16156, 19968, 28528, 23725, 20822, 23808, 16937, 23808, 19136, 19200, 13727, 19200,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 22851, 15708, 23040, 0, 18927, 10840, 23296, 0, 21540, 13661, 23040, 0, 21574,
            14671, 3840, 0, 18939, 11216, 23296, 0, 17143, 10045, 256, 0, 22604, 17709, 256, 0,
            21681, 16778, 0, 0, 20584, 14284, 7936, 0, 22410, 16232, 11762, 3840, 21948, 14549,
            9887, 23296, 22668, 17081, 12575, 19200, 22380, 17216, 12899, 19200, 25301, 18097,
            14389, 23040, 27700, 24161, 20533, 3840, 29223, 26199, 23499, 23808, 21922, 15542,
            11325, 0, 19370, 12413, 8478, 3840, 20858, 13972, 9693, 256, 20209, 13886, 9691, 19456,
            24035, 15273, 11207, 23040, 28688, 25122, 21519, 1280, 29364, 26648, 23926, 19200,
            25440, 20312, 16061, 23296, 23996, 18311, 13854, 512, 24573, 19059, 14800, 512, 21802,
            16964, 13271, 1792, 27394, 18859, 14776, 1792, 30454, 28198, 25288, 7936, 31123, 29381,
            27635, 19456, 4425, 2878, 1791, 23808, 12167, 6575, 4004, 23808, 13278, 8977, 5720,
            19200, 16345, 13275, 10761, 19968, 20592, 15080, 11698, 256, 21514, 17702, 13808, 256,
            25633, 23174, 21020, 256, 1871, 974, 590, 23808, 11782, 4546, 2347, 3840, 14109, 8592,
            4834, 0, 17135, 14102, 11544, 768, 23075, 16890, 12132, 256, 22685, 18679, 14253, 1536,
            26503, 24416, 22245, 256, 389, 204, 135, 19200, 10591, 3294, 2003, 256, 14230, 9316,
            5967, 256, 18062, 16178, 14529, 19200, 25814, 20468, 17105, 1792, 27558, 25486, 21681,
            1536, 30154, 28987, 27813, 19200, 17208, 23808, 7993, 23808, 25228, 23808, 4924, 0,
            29223, 19200, 3888, 20992, 27882, 20480, 590, 1536, 31564, 19200, 17958, 768, 6118,
            19200, 27705, 23040, 3556, 3840, 30774, 19968, 3662, 23040, 29501, 23040, 650, 0,
            32231, 23808, 21235, 7936, 4059, 19456, 30673, 23040, 1170, 23040, 32437, 23808, 1008,
            23296, 32449, 19968, 257, 19968, 32708, 11008, 31329, 19968, 26577, 0, 18158, 256,
            32588, 12800, 16384, 0, 16384, 0, 25120, 23040, 16620, 23040, 8203, 23040, 16384, 0,
            16384, 0, 16384, 0, 0, 0, 21845, 10923, 0, 0, 1554, 331, 23808, 0, 880, 321, 19968, 0,
            2156, 695, 23808, 0, 5864, 666, 170, 0, 17019, 3870, 1158, 23040, 23662, 11439, 5806,
            23040, 27940, 19845, 13785, 19200, 4989, 362, 79, 23040, 15354, 2691, 743, 23040,
            23540, 10472, 5001, 20736, 28204, 20034, 13624, 23040, 3530, 279, 75, 20480, 12949,
            1915, 546, 6400, 23454, 13450, 7422, 1536, 29708, 22503, 16680, 1280, 12754, 6227,
            3216, 1792, 12094, 5088, 2439, 19968, 16540, 8475, 4454, 19200, 23188, 16485, 11809,
            19200, 0, 0, 0, 0, 3818, 1325, 759, 511, 19200, 0, 0, 0, 2852, 849, 544, 327, 1536, 0,
            0, 0, 3866, 1963, 1189, 952, 512, 0, 0, 0, 26214, 19661, 13107, 6554, 0, 0, 0, 0,
            18692, 6304, 2830, 1460, 940, 1536, 0, 0, 25248, 11541, 5002, 2456, 1291, 19200, 0, 0,
            28391, 19478, 12957, 8548, 5704, 23040, 0, 0, 31086, 27629, 24167, 20795, 17722, 23040,
            0, 0, 17533, 4163, 1401, 617, 317, 1536, 0, 0, 22512, 8182, 2993, 1303, 631, 23808, 0,
            0, 26850, 17139, 10451, 6166, 3667, 23040, 0, 0, 30753, 27064, 22933, 19063, 15469,
            19456, 0, 0, 6348, 813, 456, 338, 242, 19200, 0, 0, 16394, 3208, 1237, 745, 477, 7680,
            0, 0, 25571, 16814, 11782, 7834, 5031, 1536, 0, 0, 27948, 23280, 21067, 18703, 16520,
            2816, 0, 0,
        ],
    },
    CdfCoefContext {
        data: [
            2472, 1280, 29897, 19200, 27118, 19456, 19363, 6656, 13237, 256, 2582, 1280, 23990,
            7936, 15262, 0, 6301, 0, 16384, 0, 1238, 7680, 30407, 19968, 28467, 19200, 18108, 7936,
            13630, 1536, 1293, 1280, 27737, 0, 16714, 7936, 5721, 1280, 16384, 0, 1406, 6400,
            29777, 19200, 25965, 256, 12826, 8192, 10751, 1536, 443, 1280, 27266, 0, 15709, 7936,
            5111, 7936, 16384, 0, 5538, 15872, 32164, 20480, 28660, 0, 17028, 15872, 13899, 6912,
            642, 8192, 28560, 7936, 13806, 8192, 4453, 7936, 16384, 0, 9706, 15872, 32028, 8448,
            23257, 10752, 10474, 15872, 11261, 23808, 822, 14592, 30362, 15872, 14623, 7936, 7885,
            8448, 16384, 0, 4, 0, 22179, 23296, 15568, 1792, 12047, 256, 9457, 1536, 3862, 1280,
            28731, 6656, 17822, 6656, 8639, 0, 640, 19968, 191, 7936, 19146, 23808, 16565, 23040,
            13356, 23040, 9002, 19200, 3179, 768, 29994, 6656, 17913, 6656, 7792, 0, 1030, 19200,
            353, 15872, 17346, 23808, 14027, 23296, 11828, 19200, 7101, 19456, 1652, 0, 29487,
            7936, 15011, 7936, 5061, 256, 3169, 1792, 586, 15872, 18878, 23040, 15229, 4608, 11623,
            3840, 5935, 23808, 1186, 256, 28575, 6912, 11072, 8192, 3640, 1536, 5927, 15872, 1087,
            15872, 22922, 8192, 11299, 8192, 8514, 1792, 3700, 23552, 1032, 8192, 23893, 15872,
            6841, 15360, 3682, 15360, 16384, 0, 30929, 29773, 25972, 17642, 7680, 0, 0, 0, 31414,
            30981, 27955, 23441, 7680, 0, 0, 0, 24470, 20899, 15471, 8199, 7680, 0, 0, 0, 31625,
            30990, 28914, 24602, 19431, 7936, 0, 0, 31659, 31335, 29964, 27116, 21544, 7936, 0, 0,
            24083, 21356, 16282, 10423, 4838, 7936, 0, 0, 31829, 31387, 29626, 26232, 19151, 10969,
            7936, 0, 31430, 31106, 29991, 27500, 23584, 17032, 7936, 0, 23370, 20958, 15723, 10231,
            5320, 1973, 7936, 0, 32114, 31700, 30511, 27188, 20406, 11313, 6701, 8192, 30916,
            30525, 29214, 27219, 23683, 18164, 11209, 8192, 23055, 20622, 15284, 9950, 5396, 2380,
            957, 7936, 31978, 31584, 30550, 27746, 21336, 12479, 9079, 14592, 29770, 29405, 28240,
            26397, 23518, 19243, 14038, 8192, 23157, 20760, 15484, 10236, 6024, 3057, 1038, 7936,
            31457, 30749, 29190, 25892, 18987, 9227, 7846, 15872, 27353, 26842, 25121, 22655,
            19687, 15684, 12259, 14592, 22862, 20286, 15194, 10111, 5113, 2534, 947, 8192, 32134,
            30991, 28895, 26475, 20115, 8943, 8056, 14592, 27874, 26949, 24549, 21746, 18362,
            13849, 11289, 14592, 23552, 20219, 15138, 11045, 6906, 4008, 2328, 9472, 14442, 0, 0,
            0, 21845, 10923, 0, 0, 21845, 10923, 0, 0, 21845, 10923, 0, 0, 6740, 2040, 768, 0,
            21845, 10923, 0, 0, 1691, 663, 21760, 0, 879, 117, 23808, 0, 1492, 230, 23808, 0,
            21845, 10923, 0, 0, 144, 16, 23808, 0, 80, 12, 23808, 0, 73, 12, 23808, 0, 21845,
            10923, 0, 0, 91, 25, 17408, 0, 717, 29, 1792, 0, 477, 20, 8192, 0, 21845, 10923, 0, 0,
            58, 12, 19968, 0, 68, 12, 3328, 0, 7779, 486, 15872, 0, 20261, 6691, 2708, 7680, 25218,
            7670, 2218, 7680, 24759, 12053, 5447, 768, 29545, 15304, 6118, 768, 28463, 19618,
            12624, 23808, 30816, 22640, 14444, 768, 29670, 23182, 17188, 23808, 31679, 25573,
            18958, 23808, 31040, 26664, 22395, 23808, 31533, 28032, 23085, 23808, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 5206, 798, 470, 19200, 24576, 16384, 8192, 0, 20803, 9506, 4286,
            19200, 24576, 16384, 8192, 0, 26514, 17977, 12299, 19968, 24576, 16384, 8192, 0, 31122,
            26149, 22072, 23808, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192,
            0, 7434, 801, 147, 23040, 17186, 1728, 306, 19968, 13861, 2296, 454, 23040, 31815,
            5823, 963, 19200, 19252, 5860, 1864, 19200, 31219, 10832, 3226, 0, 24471, 11777, 5331,
            19968, 32211, 17170, 7507, 0, 28788, 21142, 15170, 768, 31850, 24695, 17368, 768, 6377,
            733, 173, 19200, 15096, 1426, 275, 0, 13188, 2117, 449, 19200, 32179, 5175, 868, 19200,
            19034, 5575, 1725, 0, 31144, 10067, 2851, 0, 24457, 11529, 4918, 768, 32258, 16797,
            6966, 0, 28551, 20024, 13257, 768, 32051, 23687, 15817, 768, 7674, 699, 152, 1280,
            14929, 990, 128, 1280, 13096, 1954, 456, 19200, 30743, 4286, 725, 19200, 17968, 4580,
            1326, 0, 31547, 8713, 2195, 0, 23773, 9948, 3776, 768, 31601, 14852, 5493, 768, 27924,
            17970, 10645, 19968, 31929, 22177, 13349, 768, 1923, 179, 55, 0, 24576, 16384, 8192, 0,
            13359, 2966, 904, 19200, 24576, 16384, 8192, 0, 21654, 9897, 4920, 0, 24576, 16384,
            8192, 0, 26676, 16566, 10339, 1280, 24576, 16384, 8192, 0, 29521, 23089, 17741, 23040,
            24576, 16384, 8192, 0, 5504, 146, 20, 19200, 19586, 726, 40, 19200, 9919, 749, 86,
            19200, 32277, 2824, 228, 19200, 15150, 2701, 507, 19200, 30907, 6808, 1278, 19200,
            22732, 8386, 2770, 19200, 31421, 13837, 4602, 19968, 27717, 18065, 11421, 19200, 32509,
            22168, 13681, 0, 3173, 58, 20, 19200, 12839, 215, 20, 0, 8047, 380, 46, 19200, 31286,
            1855, 143, 19200, 14039, 2048, 283, 0, 31123, 5326, 791, 0, 21961, 7130, 2019, 19200,
            31618, 12381, 3541, 768, 27222, 16281, 9201, 0, 32365, 20519, 11396, 0, 2073, 30, 20,
            20480, 7707, 79, 20, 0, 6221, 188, 21, 19200, 31434, 983, 60, 19200, 11772, 1071, 106,
            0, 29086, 3371, 376, 19968, 19559, 4677, 963, 768, 31928, 9396, 1846, 768, 25379,
            12709, 5763, 0, 32436, 17472, 7675, 0, 486, 42, 20, 3840, 24576, 16384, 8192, 0, 9557,
            1130, 264, 23040, 24576, 16384, 8192, 0, 18788, 6100, 2380, 256, 24576, 16384, 8192, 0,
            24973, 13480, 6827, 1536, 24576, 16384, 8192, 0, 28891, 21068, 14878, 256, 24576,
            16384, 8192, 0, 3888, 88, 20, 0, 20341, 421, 20, 23040, 8743, 687, 64, 19200, 30703,
            2041, 111, 19456, 12896, 1999, 373, 0, 31558, 5221, 807, 19456, 22358, 7999, 2951, 256,
            30521, 13540, 4963, 256, 28771, 21223, 15816, 19200, 32622, 25070, 18080, 256, 1863,
            35, 20, 19200, 14000, 134, 20, 19456, 5874, 240, 37, 19456, 30790, 1093, 84, 19456,
            12018, 1546, 356, 256, 29509, 4015, 695, 256, 21820, 7530, 2543, 0, 32035, 12639, 4079,
            256, 28773, 20166, 14114, 0, 31771, 23552, 16208, 19200, 1056, 18, 14, 19200, 1616, 50,
            20, 19200, 4677, 126, 20, 19200, 27551, 762, 66, 19968, 9882, 952, 121, 0, 30410, 2928,
            374, 19200, 19152, 5038, 1317, 0, 31746, 9709, 2425, 0, 26742, 15614, 8939, 19200,
            31931, 20140, 11325, 23040, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0,
            4899, 180, 36, 256, 20834, 1090, 48, 19968, 11995, 1340, 141, 19200, 31955, 3432, 360,
            0, 16089, 3789, 933, 1536, 29943, 8219, 2117, 256, 24375, 11384, 5493, 256, 32673,
            17081, 8017, 1536, 29744, 23785, 19553, 19200, 32292, 26837, 21093, 23040, 2975, 53,
            20, 7936, 17631, 632, 33, 0, 9071, 940, 133, 256, 31521, 2827, 294, 7936, 16843, 4088,
            1113, 1536, 30129, 7750, 2075, 1536, 24729, 11388, 5078, 20480, 30714, 16171, 6775, 0,
            29202, 22201, 16860, 23040, 32539, 25479, 18630, 256, 1486, 16, 12, 19200, 696, 40, 20,
            23040, 5829, 241, 35, 19200, 26183, 1143, 99, 19968, 12890, 1929, 371, 19968, 31209,
            4954, 815, 19968, 21325, 7022, 2087, 19968, 32294, 12253, 3771, 19968, 27338, 17264,
            10500, 23808, 32284, 21487, 13053, 23808, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 8578, 2208, 1192, 7680, 8402, 1847, 1010, 19968, 11213, 2910, 1672,
            768, 16107, 6194, 3815, 19968, 20780, 11030, 7289, 23808, 23848, 15322, 10554, 23808,
            26966, 20474, 15269, 19968, 4173, 842, 348, 186, 23296, 0, 0, 0, 4262, 948, 259, 82, 0,
            0, 0, 0, 4088, 802, 265, 142, 0, 0, 0, 0, 5177, 658, 190, 56, 19200, 0, 0, 0, 4218,
            758, 303, 175, 256, 0, 0, 0, 1514, 266, 108, 55, 19200, 0, 0, 0, 1168, 219, 80, 33,
            19200, 0, 0, 0, 1021, 168, 56, 28, 19968, 0, 0, 0, 5529, 1683, 885, 521, 1792, 0, 0, 0,
            932, 244, 128, 82, 0, 0, 0, 0, 475, 221, 141, 57, 11008, 0, 0, 0, 7802, 4681, 3641,
            780, 12800, 0, 0, 0, 9897, 2039, 1086, 768, 9472, 0, 0, 0, 714, 94, 33, 28, 23040, 0,
            0, 0, 26214, 19661, 13107, 6554, 0, 0, 0, 0, 26214, 19661, 13107, 6554, 0, 0, 0, 0,
            24793, 10182, 5745, 2808, 15872, 0, 0, 0, 1400, 422, 140, 30, 1536, 0, 0, 0, 26214,
            19661, 13107, 6554, 0, 0, 0, 0, 26214, 19661, 13107, 6554, 0, 0, 0, 0, 30654, 11627,
            7399, 2114, 529, 3840, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 32219, 19181,
            9660, 4001, 2358, 2560, 0, 0, 32764, 26926, 12897, 5843, 2466, 256, 0, 0, 28615, 19887,
            11882, 7616, 4303, 1280, 0, 0, 32764, 22881, 15694, 9528, 5846, 256, 0, 0, 29259,
            23107, 17546, 12331, 7940, 768, 0, 0, 32764, 27209, 19597, 13659, 9819, 256, 0, 0,
            29881, 25055, 20925, 17071, 13436, 4608, 0, 0, 32764, 27646, 23169, 18026, 13800,
            19456, 0, 0, 29940, 26553, 22465, 19544, 16388, 4608, 0, 0, 32764, 29837, 25607, 22262,
            18538, 4608, 0, 0, 31154, 27106, 24289, 21402, 19346, 4608, 0, 0, 32764, 30998, 28757,
            25541, 23419, 4352, 0, 0, 31461, 28824, 26464, 23541, 21123, 21248, 0, 0, 32764, 30103,
            27989, 25445, 23166, 23808, 0, 0, 31710, 29826, 28371, 26965, 25906, 19968, 0, 0,
            32760, 31424, 30241, 28232, 26613, 19968, 0, 0, 18807, 5041, 1220, 336, 128, 7680, 0,
            0, 30060, 9131, 1465, 433, 183, 256, 0, 0, 24300, 11128, 4770, 1867, 753, 23040, 0, 0,
            32764, 16106, 5931, 1931, 656, 23040, 0, 0, 26380, 15719, 8349, 4385, 2175, 23040, 0,
            0, 32764, 20231, 11504, 6088, 2693, 1280, 0, 0, 28076, 19528, 12347, 7459, 4286, 19968,
            0, 0, 32764, 23538, 16269, 10436, 6265, 0, 0, 0, 29326, 22259, 16509, 11537, 8151, 0,
            0, 0, 32764, 26510, 19920, 14606, 10148, 23040, 0, 0, 29979, 24662, 19495, 15078,
            11348, 19968, 0, 0, 32764, 27350, 22320, 17320, 13106, 21248, 0, 0, 30967, 27967,
            24982, 21777, 19614, 23808, 0, 0, 32743, 29606, 26359, 23513, 20696, 768, 0, 0, 14676,
            2924, 728, 197, 49, 19200, 0, 0, 23604, 6662, 1593, 447, 166, 19968, 0, 0, 21425, 8068,
            2954, 1165, 553, 23808, 0, 0, 32746, 13968, 4843, 1629, 565, 23040, 0, 0, 25798, 15060,
            7986, 4107, 1990, 23808, 0, 0, 32730, 20508, 11112, 5595, 2527, 19200, 0, 0, 27999,
            19599, 12975, 7959, 4514, 19968, 0, 0, 32623, 23952, 15849, 9891, 5782, 19968, 0, 0,
            29963, 24613, 19825, 15409, 11658, 19968, 0, 0, 32202, 27717, 22337, 17478, 13323,
            19968, 0, 0, 11615, 2937, 1269, 719, 492, 19200, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 20941, 8096, 3699, 2149, 1434, 23808, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 25798, 15974, 9719, 5807, 3853, 19200, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 26661, 19211, 13614, 9658, 7149, 19200, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 30066, 24783, 19858, 15428, 12216, 19968, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 30775, 27168, 23329, 19725, 16511, 23040, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 31499, 28781, 26060, 23249, 20988, 23808, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 6138, 692, 236, 96, 37, 19200, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 18829, 7435, 2780, 1232, 626, 23040, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 25996, 17228, 10710, 6594, 3967, 19200, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 26772, 19046, 13618, 9845, 6896, 19968, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 30396, 25966, 21765, 17913, 14751, 19968,
            0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 15465, 1442, 1242, 392, 58, 2816, 0,
            0, 32508, 16384, 10663, 5461, 3901, 17408, 0, 0, 30923, 15679, 6652, 2718, 1148, 19200,
            0, 0, 32764, 24959, 11582, 4798, 1981, 19200, 0, 0, 23147, 11966, 6316, 3380, 1680, 0,
            0, 0, 32764, 17292, 8669, 4489, 2595, 256, 0, 0, 27226, 19025, 12869, 8032, 4822,
            19200, 0, 0, 32764, 24301, 15820, 9996, 6297, 0, 0, 0, 29068, 22405, 17208, 12487,
            9042, 19200, 0, 0, 32764, 26730, 20883, 15570, 11405, 3840, 0, 0, 30350, 25571, 20708,
            17163, 13491, 23808, 0, 0, 32764, 28110, 23551, 19300, 15389, 19968, 0, 0, 30964,
            26454, 23640, 20050, 17229, 23296, 0, 0, 31396, 31120, 26743, 23112, 19545, 19968, 0,
            0, 31033, 27922, 24779, 21982, 19281, 19968, 0, 0, 32764, 29445, 26315, 23141, 20433,
            23808, 0, 0, 31696, 29755, 27890, 25985, 24250, 23808, 0, 0, 32758, 30842, 28973,
            27036, 25168, 23808, 0, 0, 14744, 2279, 517, 142, 36, 23040, 0, 0, 12872, 8044, 1111,
            234, 36, 1280, 0, 0, 21108, 6138, 1944, 581, 170, 19200, 0, 0, 32764, 11339, 3166, 785,
            224, 0, 0, 0, 20282, 7804, 3188, 1265, 520, 3840, 0, 0, 32764, 13473, 5138, 1946, 850,
            256, 0, 0, 25841, 15149, 8327, 4434, 2329, 19968, 0, 0, 32764, 19774, 10767, 5596,
            2841, 19200, 0, 0, 28227, 20168, 13617, 8654, 5405, 23808, 0, 0, 32764, 24137, 16517,
            10847, 6961, 0, 0, 0, 29304, 22916, 17083, 12180, 8662, 19968, 0, 0, 32764, 26188,
            19956, 14689, 10490, 0, 0, 0, 30683, 26879, 23466, 20144, 17506, 23808, 0, 0, 32699,
            29463, 25877, 22291, 19117, 19968, 0, 0, 9020, 898, 174, 47, 36, 23040, 0, 0, 21985,
            2770, 390, 86, 36, 19968, 0, 0, 15035, 2685, 556, 163, 43, 19200, 0, 0, 32581, 6775,
            1233, 284, 85, 19200, 0, 0, 19941, 6514, 2061, 656, 212, 19200, 0, 0, 32676, 11344,
            3603, 1147, 364, 19200, 0, 0, 25117, 13133, 6104, 2759, 1152, 19968, 0, 0, 32741,
            17787, 8236, 3491, 1381, 19200, 0, 0, 29165, 22491, 16857, 12373, 8898, 19968, 0, 0,
            32418, 25972, 19561, 14350, 10388, 768, 0, 0, 4181, 642, 242, 125, 73, 19200, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 16131, 4041, 1446, 671, 387, 23040, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 23003, 11450, 5936, 3181, 1958, 19200, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 25819, 17478, 11551, 7879, 5597, 0, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 29164, 22610, 16973, 12537, 9420, 0, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 30456, 25491, 20866, 16709, 13410, 19200, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 31152, 28055, 24846, 21817, 19093, 23808,
            0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 2496, 177, 65, 32, 28, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 12990, 2542, 703, 270, 122, 19200, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 21686, 9423, 4225, 2135, 1175, 19200, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 25050, 14758, 8711, 5159, 3170, 19200, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 29208, 22550, 16993, 12742, 9744, 19200, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 10296, 1362, 353, 151, 82, 9472, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 28189, 11979, 5568, 2411, 1203, 0, 0, 0,
            32764, 19964, 8234, 3527, 1463, 1792, 0, 0, 22215, 9806, 4786, 2554, 1374, 256, 0, 0,
            32764, 15538, 7651, 3926, 2365, 0, 0, 0, 27524, 19496, 13004, 8414, 5436, 3840, 0, 0,
            32764, 24258, 16642, 10827, 6959, 0, 0, 0, 29505, 22824, 17572, 12913, 9879, 19968, 0,
            0, 32764, 26595, 21085, 15822, 11528, 19200, 0, 0, 30815, 25623, 21244, 17567, 14541,
            1280, 0, 0, 32478, 28314, 23332, 19227, 15404, 19200, 0, 0, 31046, 26892, 23455, 19669,
            17075, 19200, 0, 0, 32764, 29038, 25148, 21637, 18324, 19200, 0, 0, 31103, 27955,
            25193, 22311, 19891, 0, 0, 0, 32764, 29673, 26544, 23277, 20306, 23040, 0, 0, 31718,
            29309, 27399, 25344, 23613, 23808, 0, 0, 32643, 31185, 29363, 27347, 25494, 3840, 0, 0,
            7092, 784, 163, 56, 36, 19200, 0, 0, 9964, 6759, 1067, 195, 36, 0, 0, 0, 18874, 5317,
            1623, 540, 129, 3840, 0, 0, 32764, 8856, 2373, 630, 158, 19200, 0, 0, 18046, 5895,
            2214, 867, 386, 20736, 0, 0, 32764, 12909, 5706, 2279, 976, 1536, 0, 0, 26369, 15801,
            8897, 4957, 2740, 19968, 0, 0, 32764, 19654, 11020, 6061, 3074, 0, 0, 0, 28563, 20027,
            13321, 8806, 5962, 19456, 0, 0, 32764, 24262, 17112, 11354, 7072, 19968, 0, 0, 29202,
            22445, 16512, 11944, 8672, 19200, 0, 0, 32764, 25784, 19766, 14486, 10273, 23040, 0, 0,
            30993, 26828, 22860, 19163, 16586, 0, 0, 0, 32735, 28684, 24931, 21651, 18462, 20480,
            0, 0, 6262, 310, 53, 32, 28, 23040, 0, 0, 24394, 2028, 168, 39, 35, 23808, 0, 0, 12252,
            1650, 260, 69, 36, 19200, 0, 0, 32759, 4805, 695, 131, 36, 19200, 0, 0, 17156, 4441,
            1158, 314, 81, 20480, 0, 0, 32742, 8702, 2325, 630, 168, 20480, 0, 0, 24309, 11546,
            4961, 2036, 825, 19968, 0, 0, 32742, 16105, 6727, 2647, 946, 19200, 0, 0, 28600, 20725,
            14511, 9889, 6734, 19200, 0, 0, 32724, 24359, 17146, 11775, 7972, 0, 0, 0, 2118, 249,
            95, 45, 36, 19200, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 15239, 3140, 940,
            409, 223, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 22226, 11653, 6450, 3607,
            1963, 1792, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 22521, 17000, 13057,
            10472, 8740, 7936, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 30371, 25319,
            20275, 16178, 13044, 14336, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 30899,
            27191, 23279, 19933, 17137, 14336, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0,
            31540, 28800, 26731, 24002, 21967, 14080, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 813, 52, 28, 24, 20, 19200, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 10075,
            1059, 301, 175, 109, 19200, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 18033,
            5891, 2375, 998, 443, 256, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 23378,
            12133, 6862, 4035, 2556, 1536, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 28365,
            20970, 14667, 10175, 7300, 1280, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0,
            15270, 3344, 1543, 875, 636, 15872, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0,
            28303, 13365, 7520, 3376, 1669, 1792, 0, 0, 32764, 21118, 8985, 3591, 1772, 1792, 0, 0,
            23616, 11766, 6357, 3571, 1930, 1536, 0, 0, 32381, 17599, 9129, 5251, 3543, 1792, 0, 0,
            28505, 19972, 14643, 9552, 6800, 19456, 0, 0, 32764, 23957, 16751, 11377, 7865, 256, 0,
            0, 29805, 25076, 19648, 15331, 12026, 19200, 0, 0, 32764, 27009, 21431, 16640, 12961,
            19968, 0, 0, 30387, 25485, 21708, 19593, 17111, 19968, 0, 0, 32738, 29127, 25564,
            21295, 17147, 19456, 0, 0, 31454, 26916, 24898, 21711, 19210, 19200, 0, 0, 30922,
            30642, 27577, 23370, 20342, 19200, 0, 0, 30930, 27154, 24611, 21745, 19374, 23808, 0,
            0, 32057, 31893, 28207, 26762, 24137, 7936, 0, 0, 31602, 29534, 27070, 24751, 23152,
            23808, 0, 0, 32743, 31714, 30619, 29686, 28706, 0, 0, 0, 6479, 794, 179, 61, 36, 1536,
            0, 0, 17167, 5471, 742, 189, 36, 7680, 0, 0, 18046, 4736, 1361, 303, 108, 23552, 0, 0,
            32764, 7282, 1905, 483, 116, 20736, 0, 0, 18625, 7017, 3322, 1514, 675, 19200, 0, 0,
            32714, 13640, 6011, 2821, 1386, 256, 0, 0, 27280, 16867, 10278, 6004, 3551, 19200, 0,
            0, 32707, 20271, 12029, 6911, 4087, 1536, 0, 0, 28746, 21598, 15326, 11086, 7843,
            19200, 0, 0, 32764, 24878, 17881, 12450, 8303, 19200, 0, 0, 29757, 23576, 18167, 13273,
            10387, 0, 0, 0, 32440, 26477, 20744, 15940, 12432, 256, 0, 0, 31205, 27884, 24763,
            21801, 19516, 23040, 0, 0, 32754, 29504, 26094, 23090, 20267, 23040, 0, 0, 4450, 217,
            31, 27, 23, 19200, 0, 0, 24645, 1236, 88, 32, 28, 19456, 0, 0, 11530, 1619, 259, 61,
            36, 19200, 0, 0, 32630, 4415, 636, 109, 36, 0, 0, 0, 16451, 4152, 1068, 297, 62, 256,
            0, 0, 32123, 8790, 2645, 827, 274, 21248, 0, 0, 24591, 11601, 5133, 2273, 951, 23808,
            0, 0, 32528, 16663, 7473, 3228, 1320, 19200, 0, 0, 29375, 22832, 17500, 13281, 10301,
            19456, 0, 0, 32668, 25737, 19595, 14806, 11400, 256, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 18575, 4986, 1447, 764, 161,
            12800, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 31558, 19449, 9786, 5388, 1988,
            9472, 0, 0, 32764, 25478, 11830, 6015, 2236, 8192, 0, 0, 26639, 13751, 8449, 5442,
            3546, 8192, 0, 0, 32660, 20504, 15174, 10450, 7607, 14592, 0, 0, 29096, 16406, 15095,
            12691, 9930, 6656, 0, 0, 31379, 28702, 21133, 15146, 10694, 1792, 0, 0, 30373, 23387,
            20749, 18378, 15599, 10240, 0, 0, 32645, 29223, 27247, 20561, 16844, 8448, 0, 0, 30684,
            27010, 23527, 20895, 18441, 23808, 0, 0, 32754, 28627, 24529, 22603, 19649, 23808, 0,
            0, 31258, 27843, 25003, 22504, 20473, 4608, 0, 0, 32344, 30442, 27556, 23719, 20663,
            23808, 0, 0, 31458, 28277, 25824, 23391, 21208, 4352, 0, 0, 31972, 30676, 28538, 26469,
            23308, 4608, 0, 0, 32193, 30686, 29411, 28045, 27264, 23808, 0, 0, 32361, 31585, 30193,
            28984, 27705, 23040, 0, 0, 10909, 3015, 1153, 183, 66, 7936, 0, 0, 29257, 3611, 936,
            201, 67, 16640, 0, 0, 19299, 6124, 2182, 1071, 605, 6912, 0, 0, 32725, 8277, 2257,
            1119, 612, 8192, 0, 0, 21251, 8841, 4101, 2175, 1117, 256, 0, 0, 32743, 15322, 8333,
            4497, 2443, 1536, 0, 0, 26710, 16536, 10718, 6550, 4856, 256, 0, 0, 32600, 23864,
            15371, 9450, 5593, 19200, 0, 0, 29552, 23193, 17097, 12955, 9430, 19456, 0, 0, 32703,
            25971, 20357, 14375, 10544, 256, 0, 0, 30063, 24187, 20508, 16115, 12519, 23040, 0, 0,
            32372, 27513, 21633, 16327, 12553, 0, 0, 0, 31575, 29200, 26628, 24130, 22654, 23808,
            0, 0, 32757, 30121, 27631, 25498, 23467, 19200, 0, 0, 5091, 171, 30, 26, 22, 6656, 0,
            0, 23667, 1652, 51, 32, 28, 512, 0, 0, 14872, 2561, 511, 115, 36, 19200, 0, 0, 32443,
            5819, 1002, 151, 36, 4096, 0, 0, 19761, 6429, 2312, 810, 274, 19200, 0, 0, 32130,
            11236, 3600, 1188, 422, 20480, 0, 0, 26336, 14132, 7084, 3027, 1351, 0, 0, 0, 32369,
            18746, 9854, 4842, 2280, 256, 0, 0, 30308, 25402, 20955, 17362, 14730, 23040, 0, 0,
            32627, 27629, 23072, 19119, 15887, 19200, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 20776, 14791, 8921, 9472, 18539, 10439,
            6693, 23040, 21325, 12378, 9948, 19456, 24371, 16545, 13504, 23040, 26941, 20885,
            18115, 23040, 28352, 23609, 21104, 23040, 29956, 26744, 25382, 23808, 16013, 9009,
            6068, 1280, 15475, 6828, 4250, 23808, 17221, 7471, 5464, 23808, 20184, 10543, 8390,
            23808, 23583, 15251, 12791, 23808, 25753, 18807, 16024, 23808, 28259, 23159, 20910,
            23808, 16228, 23808, 17964, 23808, 14456, 23808, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16095, 9766, 19200, 0, 12878,
            6835, 23040, 0, 14413, 7173, 19200, 0, 13149, 6903, 0, 0, 10347, 4932, 0, 0, 10750,
            4881, 0, 0, 10373, 5098, 7936, 0, 8493, 4112, 7936, 0, 10173, 4742, 256, 0, 20943,
            13984, 9794, 0, 21924, 15106, 10478, 0, 22152, 15809, 11465, 23040, 20951, 15146,
            11104, 23040, 24501, 17145, 12866, 23040, 27418, 22967, 18306, 1280, 29325, 26183,
            23209, 19200, 18829, 12006, 8317, 7936, 16525, 9549, 6054, 7936, 17694, 10558, 6784,
            1536, 16661, 10043, 6472, 1536, 21875, 12495, 7942, 1536, 27123, 22097, 17668, 7680,
            28433, 24089, 20276, 7936, 18518, 11605, 7827, 9472, 15551, 8834, 5335, 8192, 15678,
            8775, 5194, 9472, 13043, 7343, 4071, 9472, 20068, 9003, 4517, 9472, 26226, 20913,
            15660, 9472, 27667, 22300, 17325, 9472, 4733, 1875, 1012, 19968, 14671, 5811, 3292,
            19200, 17693, 10211, 5875, 0, 21136, 15793, 12514, 0, 27109, 20761, 16323, 0, 28913,
            24914, 20357, 256, 30408, 28576, 26900, 0, 1759, 445, 194, 19968, 11426, 3090, 1317,
            19968, 15828, 7693, 3500, 0, 20342, 14968, 11235, 0, 26689, 19669, 14196, 256, 28519,
            24005, 19207, 1536, 30295, 28137, 25845, 1280, 689, 154, 62, 19200, 10134, 2113, 826,
            0, 16064, 7689, 2851, 7936, 19973, 15729, 12039, 1536, 27406, 21556, 14428, 9472,
            29255, 25852, 20074, 7936, 30885, 29228, 26912, 1536, 15758, 0, 6936, 0, 25050, 768,
            3231, 256, 23843, 7936, 2173, 19200, 28091, 23040, 297, 23040, 29745, 256, 15240, 6400,
            4960, 0, 26546, 0, 3021, 256, 29920, 7936, 1133, 19200, 30255, 19200, 254, 19200,
            32294, 4608, 13611, 7936, 2217, 7936, 29980, 7936, 2016, 9472, 32067, 6656, 203, 3840,
            32409, 2048, 253, 22272, 32545, 9472, 31427, 23808, 25000, 19200, 16724, 256, 32664,
            15360, 16384, 0, 16384, 0, 24342, 0, 15849, 0, 7520, 0, 24320, 12800, 5605, 12800,
            5174, 12800, 0, 0, 21845, 10923, 0, 0, 1173, 181, 23808, 0, 502, 58, 23808, 0, 481, 70,
            23808, 0, 6504, 486, 101, 19200, 16300, 3236, 856, 19968, 23853, 11121, 5237, 0, 28427,
            20353, 13986, 19200, 5597, 295, 54, 23040, 14221, 2089, 471, 19200, 23045, 9731, 4207,
            0, 28458, 20369, 14023, 19200, 3021, 161, 35, 19200, 11421, 1193, 259, 23040, 22220,
            10470, 4433, 20480, 30644, 23059, 15170, 23040, 8326, 2941, 1233, 19200, 10278, 3814,
            1512, 23808, 14886, 7098, 3391, 23808, 22104, 15033, 10331, 19200, 0, 0, 0, 0, 2925,
            585, 206, 93, 19200, 0, 0, 0, 2793, 1037, 668, 504, 3072, 0, 0, 0, 2672, 819, 308, 157,
            6912, 0, 0, 0, 26214, 19661, 13107, 6554, 0, 0, 0, 0, 17406, 5118, 1841, 754, 371,
            1536, 0, 0, 23212, 9769, 4035, 1764, 826, 19200, 0, 0, 27530, 18142, 11201, 6753, 4041,
            19968, 0, 0, 30572, 26256, 21988, 17921, 14474, 23808, 0, 0, 17199, 4041, 1062, 345,
            118, 0, 0, 0, 21262, 6944, 2251, 820, 325, 19200, 0, 0, 26557, 15996, 9067, 5036, 2807,
            23040, 0, 0, 30307, 25529, 21013, 16899, 13558, 23040, 0, 0, 5817, 632, 212, 114, 72,
            19200, 0, 0, 15077, 2553, 824, 369, 218, 19200, 0, 0, 23419, 13461, 7383, 3741, 1947,
            1536, 0, 0, 24240, 17657, 14311, 11092, 9001, 9472, 0, 0,
        ],
    },
    CdfCoefContext {
        data: [
            4747, 768, 28093, 19200, 26361, 19200, 19898, 0, 14699, 256, 6040, 7680, 28564, 1536,
            20915, 19200, 13289, 0, 16384, 0, 2468, 0, 28041, 768, 27435, 19200, 19308, 1536,
            15344, 1536, 3954, 7680, 27991, 0, 20246, 0, 12329, 0, 16384, 0, 1470, 6400, 26432, 0,
            25280, 19456, 13575, 7936, 11363, 7936, 1277, 1280, 27045, 0, 17713, 256, 9250, 256,
            16384, 0, 961, 14336, 31375, 19200, 29219, 512, 14194, 8192, 12973, 8192, 976, 9216,
            26827, 7936, 16308, 8192, 7574, 7936, 16384, 0, 490, 15616, 30186, 7936, 18776, 7936,
            6775, 8192, 6485, 19712, 712, 0, 25779, 8192, 14944, 8192, 8537, 8192, 16384, 0, 4, 0,
            23384, 23296, 20523, 1792, 17810, 19200, 14688, 7680, 9669, 7680, 30577, 23040, 23094,
            256, 15231, 256, 181, 23040, 39, 4608, 20245, 23808, 18924, 23808, 16689, 23808, 11764,
            23040, 6795, 0, 30908, 3840, 23142, 256, 14653, 256, 850, 6400, 41, 11008, 18524,
            23808, 16960, 23296, 14681, 19200, 9702, 23040, 5151, 0, 30836, 0, 20494, 256, 8811,
            1536, 2761, 1792, 163, 14336, 18334, 23552, 11143, 19968, 11442, 512, 7011, 1280, 2709,
            2048, 30283, 6656, 17727, 1536, 6295, 1280, 6873, 16128, 206, 14336, 17628, 1792, 8959,
            1792, 6682, 7936, 3385, 512, 1613, 4096, 28375, 13056, 15090, 8448, 7161, 14336, 16384,
            0, 28822, 26362, 19443, 6764, 7680, 0, 0, 0, 30152, 29366, 24911, 19362, 7680, 0, 0, 0,
            19090, 15406, 9212, 4211, 7680, 0, 0, 0, 29491, 27988, 23513, 16224, 10915, 7936, 0, 0,
            31113, 30404, 28089, 22739, 13813, 6656, 0, 0, 17219, 13761, 8117, 3595, 1026, 1536, 0,
            0, 30744, 29529, 25799, 19695, 11151, 5125, 7936, 0, 31254, 30831, 28958, 25041, 19297,
            9585, 7936, 0, 17809, 14524, 8447, 3591, 995, 271, 256, 0, 31096, 30168, 27102, 20782,
            11172, 4035, 1917, 7936, 30667, 30163, 28299, 24712, 19643, 13277, 6389, 7936, 17727,
            14489, 8338, 3833, 1223, 329, 96, 1536, 31212, 30248, 27626, 22183, 13261, 4361, 2197,
            8192, 29160, 28687, 26966, 23770, 19761, 14442, 9030, 8192, 18761, 15707, 9946, 5535,
            2572, 869, 185, 1536, 31114, 30048, 27451, 22203, 13462, 2978, 1893, 8192, 25531,
            24788, 22604, 19038, 14753, 9116, 5631, 8192, 18265, 15619, 10176, 5733, 2755, 1069,
            242, 1792, 30667, 29464, 26282, 20229, 10987, 2427, 2030, 8192, 21419, 20537, 17801,
            14236, 10362, 6105, 4466, 14592, 17687, 14895, 9713, 5517, 2715, 1277, 463, 8192,
            13095, 19968, 0, 0, 21845, 10923, 0, 0, 21845, 10923, 0, 0, 21845, 10923, 0, 0, 3810,
            574, 23808, 0, 21845, 10923, 0, 0, 636, 33, 6400, 0, 213, 23, 23808, 0, 310, 39, 23808,
            0, 21845, 10923, 0, 0, 151, 14, 23808, 0, 69, 12, 23808, 0, 73, 12, 23808, 0, 21845,
            10923, 0, 0, 84, 12, 23808, 0, 216, 12, 2560, 0, 179, 12, 19200, 0, 21845, 10923, 0, 0,
            81, 12, 23808, 0, 52, 12, 23296, 0, 1264, 53, 14336, 0, 16124, 2848, 558, 0, 24296,
            4933, 715, 2048, 20084, 4776, 810, 3840, 31416, 8783, 1413, 0, 25833, 11982, 4154,
            23040, 31277, 18593, 7304, 4608, 28484, 19684, 12621, 23808, 32262, 23937, 14980,
            23040, 30295, 16693, 13602, 23040, 30698, 28284, 24490, 10752, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 1631, 181, 83, 19200, 24576, 16384, 8192, 0, 19117, 7251, 2373, 0,
            24576, 16384, 8192, 0, 24898, 14491, 7488, 19968, 24576, 16384, 8192, 0, 29335, 22782,
            15916, 4352, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 7487,
            222, 29, 23040, 18842, 1127, 69, 19200, 13295, 1345, 154, 23040, 32670, 4662, 460,
            23040, 18523, 4558, 1007, 19968, 32582, 9624, 2082, 19200, 24013, 10214, 3647, 19968,
            32456, 15736, 5605, 19968, 27561, 17726, 10418, 19968, 32385, 22283, 13079, 19968,
            5071, 131, 22, 23040, 12940, 488, 39, 0, 11873, 1059, 167, 23808, 32062, 3671, 338,
            19200, 18097, 3952, 760, 768, 32221, 9021, 1681, 19200, 23845, 9671, 3058, 23808,
            32551, 15418, 5044, 19200, 27422, 16722, 8625, 19968, 32406, 20669, 10704, 19968, 6104,
            244, 39, 0, 12839, 527, 36, 1280, 12339, 1222, 181, 19968, 31897, 3544, 341, 19200,
            17677, 3466, 587, 23808, 32348, 8544, 1453, 19200, 23118, 8159, 2215, 23808, 32052,
            13869, 3970, 19968, 26540, 14521, 6757, 23808, 32280, 19808, 9202, 23808, 1310, 110,
            26, 0, 24576, 16384, 8192, 0, 12075, 1922, 472, 23040, 24576, 16384, 8192, 0, 19997,
            7455, 2917, 0, 24576, 16384, 8192, 0, 25166, 13744, 7167, 0, 24576, 16384, 8192, 0,
            28076, 18692, 12417, 3840, 24576, 16384, 8192, 0, 6122, 150, 20, 19200, 19783, 745, 40,
            19200, 11090, 823, 93, 23808, 32722, 3119, 203, 0, 15955, 2830, 464, 19200, 32034,
            7280, 1250, 0, 22721, 8195, 2448, 19968, 32088, 14027, 4360, 19968, 27340, 16758, 9421,
            19200, 32486, 21133, 11752, 19968, 3276, 57, 20, 23040, 9912, 187, 20, 23040, 8954,
            295, 36, 19200, 32263, 1926, 114, 19200, 14798, 2104, 226, 0, 32177, 5780, 785, 0,
            22037, 7122, 1853, 19200, 32052, 12787, 3507, 19968, 26871, 15195, 7688, 19200, 32590,
            19814, 10043, 23040, 1828, 28, 20, 0, 5275, 75, 20, 1280, 7211, 197, 30, 23040, 31612,
            1232, 76, 23040, 13092, 1330, 137, 19200, 30915, 4373, 502, 19968, 20600, 5446, 1120,
            23808, 32394, 10906, 2342, 19968, 25860, 13274, 5697, 19968, 32655, 17947, 7592, 23040,
            455, 31, 20, 6400, 24576, 16384, 8192, 0, 9057, 762, 148, 19200, 24576, 16384, 8192, 0,
            16727, 3776, 1133, 0, 24576, 16384, 8192, 0, 22778, 9131, 3555, 1280, 24576, 16384,
            8192, 0, 27006, 16715, 10268, 1280, 24576, 16384, 8192, 0, 5584, 96, 20, 256, 22155,
            516, 30, 19200, 10298, 677, 52, 19200, 31819, 2530, 125, 20480, 14833, 2346, 355, 0,
            32094, 6032, 760, 20480, 21757, 7156, 2125, 23040, 31771, 12811, 3825, 23040, 28014,
            19250, 13152, 19200, 32738, 22741, 14542, 19456, 3034, 39, 20, 0, 14900, 216, 20, 0,
            7600, 203, 29, 19456, 32243, 1494, 79, 19456, 13613, 1827, 275, 19200, 30782, 5028,
            684, 19200, 21809, 7252, 2303, 19200, 32535, 12613, 3646, 20736, 28087, 18265, 11434,
            0, 32285, 22089, 13883, 19200, 861, 16, 12, 0, 894, 49, 20, 19200, 6269, 170, 32,
            23040, 28441, 1156, 90, 23808, 11804, 1245, 169, 19200, 31317, 3940, 505, 23040, 19946,
            5485, 1399, 19968, 32432, 10900, 2708, 19200, 26516, 15135, 8069, 23808, 32303, 19789,
            10354, 23808, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 5255,
            119, 20, 1536, 20235, 688, 41, 0, 10501, 910, 83, 20480, 32293, 2883, 244, 3840, 15095,
            2574, 545, 256, 31125, 7095, 1544, 256, 22746, 8733, 3110, 19200, 32492, 13891, 5017,
            1536, 28239, 19576, 13853, 19456, 32483, 23556, 15793, 19456, 2801, 61, 20, 1536,
            17442, 392, 22, 3840, 8417, 524, 51, 256, 31119, 1711, 84, 0, 14936, 2360, 387, 1536,
            30892, 6210, 1072, 7936, 22269, 7925, 2687, 19200, 31740, 13308, 4226, 256, 27718,
            18178, 11541, 19200, 32676, 21835, 13322, 1536, 1164, 16, 12, 19200, 605, 46, 20,
            23040, 6231, 183, 29, 19200, 27250, 1112, 73, 23040, 12284, 1372, 167, 19200, 31740,
            4289, 541, 19968, 19961, 5477, 1348, 23808, 32299, 10582, 2505, 19200, 26046, 14507,
            7476, 23040, 32711, 19137, 9888, 19200, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 2871, 376, 138, 7680, 5284, 655, 282, 768, 8789, 1489, 740, 768, 13642,
            3771, 2008, 768, 18439, 7528, 4356, 0, 21907, 11995, 6907, 19200, 25494, 17724, 11105,
            0, 3195, 702, 291, 143, 19456, 0, 0, 0, 3941, 600, 125, 33, 23040, 0, 0, 0, 3406, 469,
            115, 46, 19200, 0, 0, 0, 3003, 311, 57, 28, 23040, 0, 0, 0, 3444, 477, 151, 54, 0, 0,
            0, 0, 830, 116, 40, 28, 19200, 0, 0, 0, 819, 95, 30, 26, 19200, 0, 0, 0, 966, 102, 24,
            20, 19968, 0, 0, 0, 4201, 898, 330, 139, 1536, 0, 0, 0, 668, 105, 36, 28, 19200, 0, 0,
            0, 120, 44, 24, 20, 21248, 0, 0, 0, 7203, 768, 295, 59, 15360, 0, 0, 0, 6356, 2163,
            1004, 538, 9472, 0, 0, 0, 601, 70, 24, 20, 23040, 0, 0, 0, 26214, 19661, 13107, 6554,
            0, 0, 0, 0, 26214, 19661, 13107, 6554, 0, 0, 0, 0, 8311, 3547, 1861, 1042, 15872, 0, 0,
            0, 716, 78, 31, 27, 23040, 0, 0, 0, 26214, 19661, 13107, 6554, 0, 0, 0, 0, 26214,
            19661, 13107, 6554, 0, 0, 0, 0, 29407, 13443, 8402, 1680, 840, 12800, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 31136, 17431, 8618, 4265, 2205, 512, 0, 0, 32764,
            27473, 11939, 4642, 1918, 0, 0, 0, 26136, 16705, 9470, 5728, 3047, 768, 0, 0, 32764,
            21394, 13261, 7845, 4200, 6400, 0, 0, 27859, 21678, 14930, 10383, 6489, 3840, 0, 0,
            32733, 26751, 16906, 10288, 6309, 0, 0, 0, 29179, 22957, 18237, 13714, 10073, 768, 0,
            0, 32764, 26404, 22913, 15841, 11177, 0, 0, 0, 30025, 25324, 20350, 17710, 13728, 0, 0,
            0, 32762, 29898, 24273, 20241, 16075, 4608, 0, 0, 31172, 26390, 22558, 17828, 15599,
            23808, 0, 0, 32764, 31142, 29678, 25249, 23050, 4608, 0, 0, 32120, 28227, 25180, 21196,
            18126, 1280, 0, 0, 32763, 28875, 26693, 23363, 20652, 4608, 0, 0, 31249, 29318, 27713,
            26595, 25598, 2048, 0, 0, 32763, 30201, 29062, 25235, 23655, 23040, 0, 0, 18480, 3963,
            1085, 185, 68, 19968, 0, 0, 32704, 8252, 1363, 397, 113, 1536, 0, 0, 24415, 10321,
            3719, 1189, 453, 19968, 0, 0, 32764, 15786, 4770, 1242, 347, 0, 0, 0, 25270, 13966,
            7050, 3163, 1349, 19200, 0, 0, 32764, 18776, 9018, 4376, 1675, 0, 0, 0, 26837, 17629,
            10586, 5350, 2794, 19968, 0, 0, 32764, 20562, 11611, 6185, 3766, 0, 0, 0, 28351, 20360,
            13203, 7831, 5025, 0, 0, 0, 32762, 23975, 15638, 10676, 5913, 256, 0, 0, 29071, 22475,
            16127, 11423, 7526, 19968, 0, 0, 32764, 25217, 18586, 12101, 7121, 4608, 0, 0, 28980,
            22676, 17288, 12237, 9200, 19456, 0, 0, 32738, 27985, 22054, 16372, 11905, 0, 0, 0,
            13960, 2204, 354, 60, 36, 23808, 0, 0, 24427, 6619, 912, 140, 42, 768, 0, 0, 19579,
            5354, 1143, 242, 56, 23040, 0, 0, 32673, 11103, 2516, 547, 154, 768, 0, 0, 22931,
            10226, 3878, 1441, 470, 19968, 0, 0, 32762, 16315, 6256, 2040, 460, 19200, 0, 0, 25751,
            14361, 7556, 3116, 1146, 19968, 0, 0, 32737, 20806, 10151, 4557, 1659, 19200, 0, 0,
            27322, 18474, 11430, 6468, 3091, 19968, 0, 0, 32612, 24548, 15728, 8927, 4254, 19968,
            0, 0, 7965, 1482, 689, 387, 228, 19200, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 19947, 6554, 2718, 1395, 796, 23808, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 24872, 15504, 8864, 4918, 3016, 19200, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 25723, 17998, 12773, 9109, 6660, 19968, 0, 0, 27307, 21845, 16384, 10923, 5461, 0,
            0, 0, 30458, 26350, 20618, 15900, 12137, 19968, 0, 0, 27307, 21845, 16384, 10923, 5461,
            0, 0, 0, 31096, 27235, 22738, 19033, 15201, 23808, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 31549, 28244, 25740, 22352, 19380, 23808, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 3080, 343, 117, 37, 33, 19200, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 16912, 6184, 1982, 715, 198, 23040, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 23945, 14878, 8314, 4426, 2153, 19200, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 25767, 17437, 11435, 7283, 4396, 23808, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 29226, 22468, 17494, 12903, 9497, 23040, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 12308, 429, 255, 106, 36, 3328, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 32485, 15594, 6188, 2393, 1130, 19200, 0, 0, 32764, 27192, 11023,
            4555, 1947, 19200, 0, 0, 21720, 10598, 6283, 3571, 1847, 0, 0, 0, 32764, 16569, 7675,
            3629, 2264, 0, 0, 0, 26391, 19257, 12989, 7666, 4636, 0, 0, 0, 32764, 25391, 14646,
            9174, 5568, 19968, 0, 0, 28268, 22481, 16873, 11588, 8096, 0, 0, 0, 32752, 27077,
            20506, 14966, 11073, 0, 0, 0, 29978, 24925, 20164, 15837, 12204, 23808, 0, 0, 32764,
            27947, 22921, 18788, 14490, 23296, 0, 0, 31387, 25329, 21804, 17966, 14695, 19456, 0,
            0, 31246, 30318, 26149, 22269, 18611, 4096, 0, 0, 30743, 27125, 23833, 20618, 17925,
            23040, 0, 0, 32544, 29851, 26107, 22256, 19431, 23040, 0, 0, 31400, 28943, 26114,
            23730, 21677, 23040, 0, 0, 32727, 30186, 27456, 25048, 22289, 23040, 0, 0, 12358, 1092,
            254, 76, 36, 20480, 0, 0, 7137, 6422, 463, 119, 36, 1536, 0, 0, 23751, 6397, 1948, 480,
            144, 19200, 0, 0, 32764, 12126, 2875, 630, 142, 0, 0, 0, 20811, 8397, 3334, 1163, 439,
            23040, 0, 0, 32764, 13053, 4731, 1823, 687, 256, 0, 0, 26181, 15376, 8219, 4003, 1858,
            19200, 0, 0, 32764, 19751, 9922, 4758, 2205, 19200, 0, 0, 27948, 19692, 12533, 7494,
            4401, 23040, 0, 0, 32764, 23251, 14746, 9178, 5263, 19200, 0, 0, 28929, 21726, 15616,
            10441, 6952, 23808, 0, 0, 32764, 25334, 18210, 12273, 8048, 23040, 0, 0, 29590, 23720,
            18750, 14522, 11312, 23808, 0, 0, 32727, 28181, 23176, 18280, 13784, 19200, 0, 0, 8166,
            379, 68, 32, 28, 19200, 0, 0, 25142, 2478, 179, 38, 34, 19200, 0, 0, 15562, 2317, 364,
            72, 36, 23040, 0, 0, 32764, 6609, 888, 137, 36, 19200, 0, 0, 19969, 6051, 1545, 384,
            90, 19200, 0, 0, 32764, 11192, 3165, 740, 173, 0, 0, 0, 24845, 12092, 5008, 1859, 676,
            19968, 0, 0, 32758, 17448, 7417, 2880, 957, 19968, 0, 0, 28216, 19575, 12679, 7810,
            4498, 19968, 0, 0, 32739, 23664, 15689, 9724, 5565, 19968, 0, 0, 3736, 441, 173, 86,
            48, 19200, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 15803, 3482, 1117, 461,
            241, 23040, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 23422, 11379, 5451, 2794,
            1441, 23040, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 26183, 17119, 11075,
            7094, 4724, 19200, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 29351, 22675,
            16609, 11580, 8162, 23040, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 30464,
            25312, 20475, 16205, 12501, 23808, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0,
            30957, 27484, 23915, 20491, 16999, 23808, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 1793, 89, 30, 26, 22, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 12423,
            2043, 490, 125, 42, 23808, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 20525,
            7757, 2980, 1185, 508, 23040, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 24274,
            12840, 6168, 3267, 1626, 23040, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27776,
            18844, 12410, 8131, 5244, 23040, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 8174,
            379, 127, 50, 36, 9472, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 30410, 13551,
            5771, 2119, 975, 256, 0, 0, 32764, 21778, 8268, 3899, 1550, 1280, 0, 0, 20321, 8440,
            4202, 2299, 1300, 256, 0, 0, 32764, 14209, 6839, 3316, 1931, 256, 0, 0, 26709, 18418,
            11667, 7230, 4484, 0, 0, 0, 32764, 24142, 14821, 8958, 5147, 256, 0, 0, 29043, 22480,
            16681, 12102, 8752, 19200, 0, 0, 32764, 26235, 20480, 14920, 10355, 20480, 0, 0, 30597,
            25266, 20596, 16881, 13612, 0, 0, 0, 32761, 27674, 22849, 18056, 13881, 23040, 0, 0,
            30586, 26313, 22569, 18932, 15626, 19200, 0, 0, 32764, 28627, 24468, 20414, 16811,
            19200, 0, 0, 31129, 27536, 24396, 21323, 18419, 19200, 0, 0, 32758, 29691, 26223,
            22322, 19259, 0, 0, 0, 31684, 28464, 26047, 23210, 21121, 19200, 0, 0, 32223, 30922,
            28723, 26260, 24149, 3840, 0, 0, 8424, 858, 218, 86, 36, 22016, 0, 0, 6257, 5956, 511,
            163, 36, 1536, 0, 0, 21010, 5576, 1466, 382, 75, 19456, 0, 0, 32764, 9897, 2222, 457,
            96, 19456, 0, 0, 18633, 6234, 2273, 724, 293, 256, 0, 0, 32764, 12723, 5555, 2391, 981,
            1280, 0, 0, 25692, 14505, 7725, 4081, 2087, 19968, 0, 0, 32764, 19304, 10432, 5302,
            2624, 0, 0, 0, 28135, 19113, 12048, 7499, 5036, 23040, 0, 0, 32764, 24089, 16413,
            10496, 6075, 23040, 0, 0, 29020, 21769, 15586, 10693, 7353, 19200, 0, 0, 32764, 25260,
            18571, 13042, 8660, 23040, 0, 0, 30584, 25308, 20524, 16364, 13295, 19200, 0, 0, 32699,
            27402, 22425, 17994, 14251, 19456, 0, 0, 7699, 389, 53, 32, 28, 23040, 0, 0, 27639,
            2246, 132, 32, 28, 19200, 0, 0, 13704, 1927, 271, 58, 36, 19200, 0, 0, 32764, 5431,
            726, 113, 36, 0, 0, 0, 17424, 4630, 1132, 277, 61, 0, 0, 0, 32758, 9034, 2381, 576,
            130, 0, 0, 0, 24215, 11156, 4524, 1733, 627, 23808, 0, 0, 32764, 16099, 6401, 2302,
            706, 19200, 0, 0, 28061, 19012, 12039, 7319, 4231, 19200, 0, 0, 32759, 22970, 14752,
            8969, 5230, 19200, 0, 0, 2296, 338, 132, 64, 38, 19200, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 16028, 3336, 1044, 462, 238, 23040, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 22998, 11373, 5949, 3123, 1728, 0, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 26885, 18932, 13308, 9886, 7344, 1536, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 29513, 23026, 17655, 12791, 9559, 0, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 30450, 26034, 21306, 17276, 13799, 23296, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 31424, 27882, 24278, 21621, 18965, 256, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 798, 33, 28, 24, 20, 3840, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 11002, 1153, 219, 86, 36, 19200, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 18697, 5231, 1606, 588, 204, 19200, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 23374, 10317, 4448, 2144, 1149, 23808, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 26411, 16670, 10685, 6688, 4067, 19456, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 10098, 1728, 706, 372, 274, 15872, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 26564, 13881, 6662, 2774, 1241, 256, 0, 0, 32764,
            19552, 8530, 3550, 1590, 0, 0, 0, 22038, 9887, 4839, 2684, 1424, 6400, 0, 0, 32764,
            14005, 6588, 3741, 2415, 6656, 0, 0, 28349, 18564, 12858, 7945, 5175, 1536, 0, 0,
            32764, 23022, 15240, 8948, 5517, 0, 0, 0, 29516, 24120, 18186, 14238, 10811, 7936, 0,
            0, 32764, 25827, 19449, 14282, 9663, 19200, 0, 0, 30575, 23849, 19537, 16592, 13366,
            19200, 0, 0, 31811, 28541, 24089, 18716, 14228, 0, 0, 0, 31713, 27012, 23639, 20194,
            17930, 6656, 0, 0, 31946, 28585, 24608, 19779, 15785, 19200, 0, 0, 30696, 25473, 20831,
            16778, 13960, 23040, 0, 0, 31472, 31110, 28346, 27196, 24503, 6656, 0, 0, 31035, 28087,
            25088, 22114, 20240, 19200, 0, 0, 32764, 31090, 29774, 27913, 26231, 19200, 0, 0, 7879,
            874, 192, 76, 36, 1536, 0, 0, 25279, 4745, 328, 66, 36, 3072, 0, 0, 19348, 4686, 1287,
            348, 75, 512, 0, 0, 32764, 8572, 2060, 422, 86, 1280, 0, 0, 18610, 6667, 2497, 1008,
            402, 1280, 0, 0, 32764, 12431, 5299, 2257, 960, 1280, 0, 0, 26223, 15335, 8168, 4198,
            2280, 3840, 0, 0, 32764, 18467, 9701, 5168, 2720, 0, 0, 0, 28157, 20087, 13343, 8649,
            5400, 19200, 0, 0, 32762, 24003, 16357, 10578, 6346, 23040, 0, 0, 29475, 22248, 16642,
            11339, 9065, 0, 0, 0, 32755, 25468, 18491, 13600, 9320, 19200, 0, 0, 30304, 25425,
            20904, 17030, 14350, 23040, 0, 0, 32683, 28576, 24419, 20377, 16973, 0, 0, 0, 6602,
            266, 40, 32, 28, 0, 0, 0, 28207, 1642, 95, 32, 28, 19456, 0, 0, 13092, 1787, 278, 56,
            36, 19200, 0, 0, 32763, 4851, 520, 91, 36, 256, 0, 0, 17195, 4126, 850, 196, 50, 256,
            0, 0, 32735, 8766, 2309, 626, 133, 20480, 0, 0, 24050, 10607, 3898, 1380, 444, 19456,
            0, 0, 32731, 15707, 6388, 2335, 778, 19200, 0, 0, 28194, 19442, 12761, 8104, 5258,
            19200, 0, 0, 32693, 23528, 15759, 10265, 6639, 20480, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 16940, 5312, 2902, 1816,
            1256, 15872, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 28446, 14890, 7510, 3431,
            1822, 7936, 0, 0, 32764, 20783, 9466, 4811, 2273, 1536, 0, 0, 22891, 10644, 5784, 3287,
            1845, 256, 0, 0, 32764, 14761, 9226, 4906, 3044, 1792, 0, 0, 27872, 16834, 12320, 9783,
            7216, 1536, 0, 0, 31886, 27522, 18182, 11839, 7602, 7936, 0, 0, 29871, 21071, 16913,
            12781, 10503, 256, 0, 0, 32764, 27416, 24483, 17885, 12970, 256, 0, 0, 30218, 25553,
            21440, 17549, 14784, 768, 0, 0, 32764, 28498, 23875, 20730, 17767, 4608, 0, 0, 30792,
            26830, 22720, 19520, 17548, 256, 0, 0, 32694, 29896, 26887, 24049, 20565, 768, 0, 0,
            31211, 27586, 25081, 22727, 20238, 4608, 0, 0, 32466, 29595, 26704, 23622, 20629, 4096,
            0, 0, 31727, 29933, 28156, 26149, 25067, 19200, 0, 0, 32484, 31146, 28789, 27146,
            25451, 19200, 0, 0, 9309, 942, 245, 62, 36, 8192, 0, 0, 28398, 4029, 466, 70, 36, 7680,
            0, 0, 18557, 5224, 1460, 516, 121, 0, 0, 0, 32764, 8315, 2218, 559, 175, 256, 0, 0,
            19219, 6768, 2824, 1164, 520, 256, 0, 0, 32764, 12893, 5853, 2765, 1288, 1536, 0, 0,
            26080, 14309, 8177, 4667, 2943, 256, 0, 0, 31812, 22593, 13468, 7683, 4460, 256, 0, 0,
            28619, 20495, 14744, 10564, 7579, 0, 0, 0, 32764, 24861, 18153, 12255, 8491, 0, 0, 0,
            29684, 23406, 18253, 13708, 10682, 0, 0, 0, 31887, 26956, 20776, 15877, 11539, 256, 0,
            0, 30498, 26674, 23332, 19722, 17703, 23040, 0, 0, 32764, 30140, 26644, 23726, 21355,
            256, 0, 0, 6555, 184, 53, 32, 28, 7936, 0, 0, 23173, 1593, 105, 32, 28, 20736, 0, 0,
            13668, 2217, 417, 93, 36, 20480, 0, 0, 32726, 5341, 810, 128, 36, 256, 0, 0, 17861,
            5365, 1761, 605, 183, 0, 0, 0, 32694, 9385, 2728, 820, 276, 1536, 0, 0, 24628, 11628,
            5245, 2231, 968, 256, 0, 0, 32167, 17020, 7765, 3437, 1491, 256, 0, 0, 28890, 21538,
            15473, 11032, 8114, 19200, 0, 0, 32501, 24929, 18160, 12946, 9269, 19200, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 19449,
            11686, 6043, 9472, 17710, 9205, 5456, 19200, 20675, 11216, 8387, 23296, 22921, 13854,
            11157, 19456, 25784, 18561, 14784, 19200, 27188, 21141, 17357, 19200, 28861, 24178,
            22085, 20736, 12910, 6269, 4030, 7936, 13160, 4641, 2339, 0, 15290, 5378, 3322, 0,
            17920, 7644, 5207, 0, 21392, 11686, 8358, 19200, 23589, 14906, 10850, 23040, 26333,
            19468, 15108, 19200, 15193, 19200, 18544, 19968, 12967, 23808, 16384, 0, 16384, 0,
            16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 15261, 8095,
            23040, 0, 13765, 7487, 23040, 0, 14050, 5623, 0, 0, 10089, 3509, 3840, 0, 8523, 2477,
            0, 0, 7178, 1717, 0, 0, 5924, 1590, 1536, 0, 4244, 955, 256, 0, 3338, 671, 256, 0,
            17182, 8959, 4288, 7936, 19631, 10430, 4992, 6656, 19808, 11779, 5761, 256, 18281,
            10764, 5896, 256, 23791, 13262, 6936, 256, 26079, 19312, 11808, 1792, 29108, 24725,
            19301, 0, 13518, 6948, 3730, 7936, 12289, 5171, 2129, 7936, 13484, 5968, 2731, 6656,
            13648, 6092, 2735, 7936, 17969, 7949, 3512, 7936, 22727, 14669, 8666, 7936, 26109,
            19040, 12785, 7936, 13787, 8421, 5371, 8192, 10685, 4570, 2236, 8192, 11179, 4422,
            2052, 8192, 10192, 4042, 1655, 8192, 15436, 5161, 2066, 9472, 21980, 14488, 8562, 8192,
            25499, 17634, 10814, 15872, 3597, 1427, 699, 768, 13671, 5269, 2902, 19200, 16108,
            9229, 4382, 0, 19748, 13782, 10204, 1280, 26006, 19299, 13771, 7936, 27538, 23316,
            17592, 8192, 29486, 26847, 24884, 7936, 1262, 296, 101, 19200, 12365, 3028, 1025, 768,
            17830, 7845, 2684, 0, 21877, 13698, 8570, 7680, 27956, 19891, 12326, 7936, 29499,
            24733, 18191, 7936, 30395, 27611, 24499, 7936, 397, 73, 23, 19200, 11170, 1719, 377, 0,
            18253, 6274, 1535, 7936, 21529, 13603, 8194, 7936, 28631, 20378, 11621, 8192, 30110,
            25766, 18767, 7936, 30377, 27231, 24064, 6656, 12203, 0, 4290, 6400, 24757, 3840, 1199,
            14336, 22831, 7936, 602, 19968, 28408, 21248, 53, 9728, 30515, 11008, 11152, 6656,
            3294, 6400, 24599, 6400, 895, 14336, 26516, 7936, 408, 4608, 30310, 0, 49, 13312,
            32086, 17408, 9952, 7936, 2237, 6656, 27068, 7936, 1261, 15872, 31229, 15872, 196,
            6656, 31753, 8192, 74, 8960, 32356, 9472, 31991, 23808, 25897, 19200, 17148, 0, 31622,
            8960, 18768, 6400, 8192, 12800, 28232, 23040, 19733, 19200, 11013, 19200, 26862, 8960,
            14232, 6400, 6302, 12800, 0, 0, 21845, 10923, 0, 0, 682, 77, 23808, 0, 230, 25, 23808,
            0, 256, 38, 23808, 0, 5840, 311, 48, 19200, 16296, 2753, 573, 19200, 23169, 9863, 4143,
            19200, 27902, 19152, 12333, 19200, 5057, 278, 42, 19200, 16389, 2601, 571, 19200,
            23683, 10622, 4734, 256, 28875, 21409, 15203, 19200, 2110, 84, 20, 23040, 10597, 892,
            132, 23040, 22042, 9233, 3575, 4352, 24576, 16384, 8192, 0, 6123, 1615, 517, 19968,
            9448, 3141, 1116, 23040, 14503, 6728, 3105, 19200, 21628, 14264, 9555, 256, 0, 0, 0, 0,
            1804, 305, 95, 35, 19200, 0, 0, 0, 1037, 145, 38, 28, 256, 0, 0, 0, 1889, 315, 52, 28,
            4096, 0, 0, 0, 26214, 19661, 13107, 6554, 0, 0, 0, 0, 17915, 4576, 1368, 493, 211, 256,
            0, 0, 22269, 7793, 2632, 965, 369, 19200, 0, 0, 27225, 17041, 10009, 5688, 3155, 19200,
            0, 0, 30554, 26134, 21589, 17234, 13479, 23040, 0, 0, 17736, 4166, 1347, 534, 220, 0,
            0, 0, 21911, 7885, 2883, 1165, 513, 0, 0, 0, 27700, 18493, 11789, 7284, 4430, 0, 0, 0,
            30943, 27194, 23331, 19484, 15955, 23808, 0, 0, 4100, 318, 72, 32, 28, 3840, 0, 0,
            15382, 1857, 383, 116, 36, 23040, 0, 0, 23297, 11774, 5478, 2256, 984, 3840, 0, 0,
            25557, 19068, 13620, 9133, 6089, 0, 0, 0,
        ],
    },
    CdfCoefContext {
        data: [
            11325, 4096, 28080, 0, 28290, 23040, 25180, 0, 22992, 256, 18086, 256, 32347, 23040,
            30129, 19456, 27733, 10240, 16384, 0, 5246, 0, 27388, 19968, 27583, 23040, 22575, 0,
            19657, 256, 10522, 7936, 31451, 0, 26802, 23040, 22442, 19200, 16384, 0, 2571, 1536,
            24232, 0, 25707, 19200, 16791, 1536, 15352, 1536, 4735, 1536, 30432, 0, 24501, 19456,
            18964, 19456, 16384, 0, 210, 14336, 28972, 0, 28283, 19456, 15796, 8192, 14991, 9472,
            2889, 8960, 29245, 256, 22429, 512, 15058, 1792, 16384, 0, 85, 23808, 26390, 8192,
            19140, 512, 8222, 19456, 6243, 23040, 1097, 19200, 27732, 7936, 21559, 8192, 15732,
            1792, 16384, 0, 14, 12800, 19817, 23808, 16868, 23808, 18456, 4096, 15187, 3840, 13689,
            4608, 32261, 23808, 29386, 7168, 25727, 4608, 286, 20736, 13, 17408, 21143, 23808,
            22403, 23808, 21528, 23808, 18908, 19200, 14099, 0, 32148, 23808, 28194, 19456, 21275,
            21248, 1014, 19200, 19, 23808, 19274, 23808, 18773, 23040, 18045, 23040, 12918, 0,
            8692, 256, 31952, 19200, 24757, 1536, 14011, 2816, 748, 768, 71, 9472, 19843, 23040,
            18163, 20480, 17710, 19712, 9027, 4608, 7158, 1536, 31475, 1280, 20830, 256, 9777,
            8192, 6330, 16640, 124, 9472, 16726, 20992, 8712, 1792, 8565, 1792, 4805, 1280, 3310,
            1280, 29964, 14592, 13638, 11008, 6457, 15360, 16384, 0, 27739, 20722, 6751, 315, 7936,
            0, 0, 0, 28908, 27030, 23874, 14535, 7936, 0, 0, 0, 3708, 2423, 556, 63, 6912, 0, 0, 0,
            25579, 21036, 10995, 2993, 708, 7936, 0, 0, 28935, 25134, 17228, 8084, 2093, 7936, 0,
            0, 6518, 4315, 1271, 172, 36, 8192, 0, 0, 29003, 26435, 19428, 11937, 3938, 479, 7936,
            0, 27723, 25361, 18842, 11859, 5753, 1104, 7936, 0, 8566, 6054, 2145, 397, 40, 36,
            1536, 0, 28646, 25928, 19490, 11862, 4637, 1318, 463, 7936, 28193, 26705, 21830, 15577,
            9642, 4883, 1184, 7936, 9278, 6907, 2763, 672, 67, 48, 44, 256, 29194, 27085, 21164,
            13157, 5424, 1916, 1216, 7936, 25571, 24819, 20354, 14766, 9653, 5344, 2377, 8192,
            9385, 7021, 2922, 821, 155, 48, 44, 1536, 29015, 27134, 22621, 15229, 6295, 567, 370,
            1536, 21572, 20499, 16409, 10420, 5538, 2039, 963, 8192, 10528, 8217, 3726, 1223, 270,
            48, 44, 1792, 26930, 23847, 18314, 11606, 4880, 493, 344, 7936, 17391, 15848, 12125,
            7593, 4182, 1474, 760, 8192, 9701, 7142, 3160, 1113, 303, 81, 52, 1792, 12404, 768, 0,
            0, 21845, 10923, 0, 0, 21845, 10923, 0, 0, 21845, 10923, 0, 0, 1410, 21, 4608, 0,
            21845, 10923, 0, 0, 379, 142, 19200, 0, 126, 12, 23808, 0, 139, 12, 4608, 0, 21845,
            10923, 0, 0, 82, 12, 23808, 0, 42, 12, 23808, 0, 44, 12, 3840, 0, 21845, 10923, 0, 0,
            68, 12, 23808, 0, 191, 12, 10240, 0, 142, 15, 22528, 0, 21845, 10923, 0, 0, 60, 12,
            23808, 0, 165, 19, 23296, 0, 124, 12, 10752, 0, 14363, 2766, 213, 10240, 17944, 1560,
            780, 12800, 17371, 1184, 395, 19200, 31421, 3292, 449, 16640, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 796, 298, 20,
            7168, 24576, 16384, 8192, 0, 10537, 756, 47, 10240, 24576, 16384, 8192, 0, 28087,
            16384, 2341, 12800, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192,
            0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 6734, 96, 20, 23808, 20192, 593, 23,
            23040, 10217, 396, 20, 23808, 32748, 1790, 50, 3840, 14963, 1488, 120, 23808, 31211,
            4654, 343, 768, 19476, 4092, 621, 23808, 32213, 9279, 1535, 0, 22429, 10000, 3333,
            8960, 32010, 17007, 6391, 8960, 3626, 42, 20, 3840, 15070, 145, 20, 6400, 7784, 146,
            20, 23808, 32168, 979, 23, 3840, 14527, 763, 28, 19968, 29715, 3934, 195, 23808, 21186,
            3212, 587, 4608, 27011, 7528, 1107, 8448, 29696, 11264, 3584, 16640, 32125, 20560,
            6425, 8960, 2853, 36, 20, 19968, 8179, 27, 20, 0, 7696, 115, 21, 3840, 30002, 360, 25,
            19968, 13704, 721, 80, 23040, 26560, 3074, 186, 19200, 16650, 3631, 443, 23040, 29144,
            6213, 740, 1536, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 603, 79, 20, 19200,
            24576, 16384, 8192, 0, 12152, 1240, 155, 19968, 24576, 16384, 8192, 0, 15673, 3082,
            279, 4608, 24576, 16384, 8192, 0, 19488, 9239, 722, 19200, 24576, 16384, 8192, 0,
            31043, 29319, 1725, 0, 24576, 16384, 8192, 0, 5516, 81, 20, 0, 20518, 374, 21, 0, 9815,
            423, 36, 23808, 32668, 1687, 57, 19200, 14479, 1638, 152, 23040, 31725, 5243, 475,
            3840, 20738, 5412, 995, 19200, 31440, 11018, 2268, 4608, 24314, 10711, 3688, 23040,
            32456, 16231, 5540, 19456, 3129, 29, 20, 0, 8309, 211, 20, 19968, 8512, 139, 20, 19200,
            32182, 1105, 42, 1280, 13851, 1185, 60, 0, 31152, 4184, 298, 19200, 19113, 3223, 361,
            19200, 31372, 8908, 1299, 23040, 23498, 8100, 1972, 23296, 31080, 14330, 3789, 23296,
            1672, 17, 13, 0, 3826, 52, 20, 1280, 7018, 124, 20, 19200, 32303, 526, 27, 23040,
            12099, 422, 27, 23040, 29883, 2778, 104, 19200, 17020, 2174, 136, 23040, 32396, 6348,
            495, 23040, 22766, 6985, 1310, 20736, 31899, 12474, 2749, 23552, 255, 16, 12, 0, 24576,
            16384, 8192, 0, 8212, 420, 52, 23040, 24576, 16384, 8192, 0, 13207, 2171, 307, 256,
            24576, 16384, 8192, 0, 21079, 4982, 1341, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192,
            0, 24576, 16384, 8192, 0, 6340, 67, 20, 1280, 24284, 400, 21, 0, 10081, 361, 28, 19200,
            32378, 1807, 52, 1280, 14374, 1370, 98, 19200, 31915, 5385, 468, 19200, 20030, 4728,
            926, 19200, 31724, 10827, 2250, 19200, 25778, 13768, 6594, 19968, 32650, 18753, 7977,
            19200, 3942, 27, 20, 7936, 13473, 255, 20, 1280, 7888, 94, 24, 19456, 30222, 1076, 27,
            20480, 13209, 1274, 124, 19456, 31215, 3961, 317, 20736, 20101, 5063, 1028, 1280,
            32062, 10144, 2047, 0, 25110, 11878, 4854, 19200, 32345, 16344, 7134, 23296, 1436, 16,
            12, 0, 134, 38, 20, 19200, 6744, 112, 22, 19200, 26328, 751, 47, 19968, 10818, 640, 35,
            23040, 30267, 2829, 229, 19200, 17231, 2670, 356, 19200, 31817, 7485, 1120, 768, 24407,
            8952, 2675, 19456, 31294, 14293, 4076, 23296, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 5429, 60, 20, 20736, 21196, 374, 20, 2048, 8890, 220, 24, 1280,
            32307, 1644, 63, 0, 13442, 1276, 100, 19200, 32104, 4467, 394, 19200, 19648, 5227,
            1122, 19456, 32218, 10264, 2206, 19456, 26403, 14875, 7860, 3840, 32160, 20198, 10466,
            23040, 3384, 36, 20, 1536, 18951, 194, 20, 0, 8248, 243, 21, 19456, 30993, 929, 29,
            1536, 13433, 1021, 80, 1536, 29202, 3888, 406, 1536, 20371, 5341, 1181, 256, 32259,
            10174, 2215, 0, 25620, 13549, 6453, 19200, 32091, 19058, 9004, 19456, 1532, 16, 12,
            20480, 150, 37, 20, 23040, 5700, 93, 20, 19200, 26823, 657, 24, 23040, 9916, 561, 37,
            19200, 30591, 2486, 198, 19200, 18287, 3634, 634, 0, 30179, 7848, 1344, 0, 24597,
            11148, 4497, 19200, 32599, 16094, 6072, 19200, 24576, 16384, 8192, 0, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576,
            16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0,
            24576, 16384, 8192, 0, 1267, 147, 30, 14080, 3117, 268, 70, 1536, 5564, 615, 182, 8192,
            10239, 2017, 767, 7936, 15720, 5427, 2185, 3840, 20210, 8732, 4151, 1536, 23267, 13808,
            7770, 3328, 2159, 355, 131, 52, 1280, 0, 0, 0, 2435, 158, 24, 20, 256, 0, 0, 0, 1701,
            271, 92, 57, 256, 0, 0, 0, 706, 20, 16, 12, 9216, 0, 0, 0, 1479, 198, 54, 28, 256, 0,
            0, 0, 520, 59, 24, 20, 19200, 0, 0, 0, 534, 49, 24, 20, 19200, 0, 0, 0, 319, 28, 24,
            20, 768, 0, 0, 0, 1420, 262, 114, 44, 1536, 0, 0, 0, 467, 65, 24, 20, 23040, 0, 0, 0,
            76, 29, 24, 20, 1792, 0, 0, 0, 12288, 6144, 4096, 2048, 12800, 0, 0, 0, 2636, 554, 214,
            101, 1792, 0, 0, 0, 471, 57, 24, 20, 23040, 0, 0, 0, 26214, 19661, 13107, 6554, 0, 0,
            0, 0, 26214, 19661, 13107, 6554, 0, 0, 0, 0, 4545, 1120, 457, 241, 9472, 0, 0, 0, 584,
            73, 24, 20, 23040, 0, 0, 0, 26214, 19661, 13107, 6554, 0, 0, 0, 0, 26214, 19661, 13107,
            6554, 0, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 32668, 16047, 4492, 1508, 370, 256, 0, 0, 32764, 25782, 9557,
            3000, 876, 256, 0, 0, 26644, 12022, 6109, 2471, 678, 20480, 0, 0, 32764, 12318, 5862,
            2784, 716, 10752, 0, 0, 30285, 22887, 12114, 4195, 1151, 1792, 0, 0, 28290, 27598,
            12761, 3521, 1667, 3072, 0, 0, 28366, 20174, 11126, 7947, 3057, 15360, 0, 0, 32649,
            20539, 16978, 10092, 5343, 7168, 0, 0, 27594, 20696, 10348, 8623, 6899, 0, 0, 0, 32040,
            29855, 26943, 11651, 10194, 23040, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 14543, 1706, 109, 32, 28, 7936, 0, 0, 32021,
            7311, 455, 32, 28, 11008, 0, 0, 23340, 2291, 429, 100, 72, 4608, 0, 0, 32764, 11608,
            1692, 107, 36, 0, 0, 0, 18512, 2965, 725, 152, 36, 19200, 0, 0, 32758, 9139, 1228, 219,
            38, 8192, 0, 0, 24233, 7468, 1981, 1219, 305, 21760, 0, 0, 31417, 14019, 3716, 1520,
            169, 23040, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 28913, 23130, 15420,
            13493, 9638, 12800, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 11884, 261, 28, 24, 20, 3840, 0, 0, 21329, 2051, 50, 32,
            28, 21248, 0, 0, 16117, 534, 92, 32, 28, 3840, 0, 0, 29985, 3671, 265, 32, 28, 20480,
            0, 0, 18649, 2945, 604, 151, 76, 3072, 0, 0, 30086, 9470, 1760, 251, 84, 22528, 0, 0,
            22265, 3361, 1260, 840, 420, 6400, 0, 0, 31882, 13284, 2657, 1771, 886, 19200, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0,
            3173, 783, 215, 103, 36, 23808, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 16678,
            5301, 1584, 611, 64, 256, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 20887,
            10192, 6332, 1608, 663, 6912, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27882,
            10923, 8767, 4886, 4599, 15360, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 3228,
            33, 28, 24, 20, 1536, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 11289, 3305,
            257, 32, 28, 23808, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 17712, 6495, 2952,
            590, 295, 6400, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 22249, 2368, 1377,
            441, 55, 3840, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 32682, 11983, 4240,
            1665, 681, 0, 0, 0, 32764, 26701, 8284, 2973, 1153, 0, 0, 0, 21899, 12179, 5814, 2441,
            1263, 0, 0, 0, 32764, 17291, 6663, 3204, 1511, 256, 0, 0, 27854, 17723, 9728, 5051,
            2278, 0, 0, 0, 32764, 22461, 13375, 6952, 3385, 3840, 0, 0, 29949, 22389, 15473, 9537,
            5560, 19200, 0, 0, 29829, 26530, 18296, 11446, 7410, 256, 0, 0, 30258, 24196, 19047,
            13118, 8153, 23296, 0, 0, 32764, 26210, 19910, 16237, 9921, 256, 0, 0, 30670, 24395,
            21275, 16234, 11686, 2560, 0, 0, 32397, 29468, 24069, 18299, 13605, 19456, 0, 0, 31359,
            26661, 23255, 18909, 14094, 10240, 0, 0, 30886, 29558, 24687, 19926, 15720, 21760, 0,
            0, 31988, 27307, 24966, 21845, 19505, 0, 0, 0, 32231, 27933, 24710, 22024, 18801,
            23040, 0, 0, 11726, 814, 101, 32, 28, 4608, 0, 0, 4632, 4480, 142, 48, 36, 14592, 0, 0,
            24917, 4674, 986, 91, 36, 19968, 0, 0, 32764, 10833, 1439, 137, 36, 256, 0, 0, 20006,
            6300, 1659, 354, 75, 23040, 0, 0, 32764, 11212, 3217, 719, 125, 0, 0, 0, 22748, 9902,
            3510, 1312, 373, 23040, 0, 0, 32764, 15192, 5322, 1751, 365, 0, 0, 0, 25420, 13354,
            5924, 2202, 827, 23040, 0, 0, 32764, 20460, 9988, 4194, 1489, 19200, 0, 0, 26311,
            15028, 8571, 4183, 1866, 19968, 0, 0, 31999, 20966, 12088, 6768, 2683, 3840, 0, 0,
            28143, 18696, 11808, 7380, 4330, 10240, 0, 0, 32583, 24276, 16522, 11907, 7200, 23040,
            0, 0, 8277, 205, 28, 24, 20, 23040, 0, 0, 22575, 1703, 76, 32, 28, 19200, 0, 0, 14745,
            1114, 85, 32, 28, 19968, 0, 0, 32764, 4539, 275, 32, 28, 0, 0, 0, 17642, 3099, 383, 51,
            36, 768, 0, 0, 32764, 7458, 1023, 106, 36, 0, 0, 0, 20965, 5917, 1149, 190, 36, 23040,
            0, 0, 32764, 11421, 2460, 406, 36, 19200, 0, 0, 24355, 10645, 3866, 1314, 284, 23296,
            0, 0, 32235, 16953, 5935, 1677, 430, 256, 0, 0, 1917, 196, 66, 32, 28, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 16870, 3076, 612, 195, 46, 19200, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 23493, 11737, 5176, 1673, 509, 19968, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 25182, 15904, 9986, 5096, 2491, 21248, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27989, 18432, 11264, 7509, 5461, 6400, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 735, 24, 20, 16, 12, 768, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 10863, 1086, 79, 32, 28, 19200, 0, 0, 27307, 21845, 16384,
            10923, 5461, 0, 0, 0, 16545, 4458, 825, 103, 64, 512, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 22181, 7310, 2773, 756, 252, 19200, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923,
            5461, 0, 0, 0, 12024, 1195, 336, 193, 36, 9472, 0, 0, 30720, 8192, 6144, 4096, 2048,
            12800, 0, 0, 31256, 11985, 4231, 1535, 738, 0, 0, 0, 32764, 23082, 7303, 2943, 1099, 0,
            0, 0, 21350, 9889, 4325, 2179, 1077, 0, 0, 0, 32764, 14157, 5797, 2588, 1279, 256, 0,
            0, 26837, 17875, 11454, 6467, 3638, 0, 0, 0, 32764, 22283, 12708, 6041, 2804, 512, 0,
            0, 28257, 21392, 15644, 10440, 6238, 23040, 0, 0, 32659, 28218, 19550, 12907, 8190,
            1536, 0, 0, 30366, 23576, 18384, 13463, 9778, 19200, 0, 0, 32764, 27445, 22222, 16786,
            11920, 19456, 0, 0, 29738, 24699, 20174, 15560, 12057, 768, 0, 0, 32764, 28543, 23071,
            18449, 14522, 19200, 0, 0, 30545, 26399, 22482, 19173, 14445, 21248, 0, 0, 32593,
            29807, 25394, 21013, 17158, 768, 0, 0, 31401, 26588, 23109, 19612, 17224, 23040, 0, 0,
            32263, 30328, 26424, 22484, 19120, 23552, 0, 0, 10445, 648, 182, 45, 36, 1536, 0, 0,
            4091, 4061, 195, 32, 28, 7936, 0, 0, 23701, 4307, 965, 122, 36, 23040, 0, 0, 32764,
            9055, 1268, 140, 36, 1536, 0, 0, 18328, 5306, 1498, 368, 97, 19200, 0, 0, 32764, 11078,
            3939, 1138, 315, 1280, 0, 0, 24707, 11800, 4918, 2109, 820, 23808, 0, 0, 32764, 16022,
            6860, 2791, 936, 1280, 0, 0, 26948, 16317, 8985, 4475, 2113, 23040, 0, 0, 32764, 21772,
            12160, 6071, 2726, 1280, 0, 0, 27915, 18391, 11815, 6975, 3731, 19200, 0, 0, 32764,
            22656, 14404, 8060, 4149, 19200, 0, 0, 29240, 21839, 15184, 9759, 6139, 19968, 0, 0,
            32763, 24591, 16847, 11241, 7269, 19200, 0, 0, 8011, 149, 28, 24, 20, 256, 0, 0, 23931,
            1669, 80, 32, 28, 19968, 0, 0, 12993, 1021, 101, 32, 28, 19200, 0, 0, 32764, 3835, 257,
            36, 32, 0, 0, 0, 15663, 2780, 416, 64, 36, 19200, 0, 0, 32763, 6656, 1027, 135, 36, 0,
            0, 0, 22137, 7877, 2270, 601, 130, 23808, 0, 0, 32764, 11806, 2888, 551, 79, 19456, 0,
            0, 25509, 13205, 5914, 2309, 733, 23040, 0, 0, 32607, 19081, 8726, 3443, 1107, 19200,
            0, 0, 1525, 151, 44, 32, 28, 19200, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0,
            16997, 2954, 592, 150, 49, 23040, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0,
            23777, 12433, 5762, 2230, 848, 256, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0,
            21764, 15879, 10238, 6477, 4074, 8192, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0,
            30720, 28672, 16384, 12288, 4096, 12800, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 393, 24, 20, 16, 12, 19200, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 10915,
            620, 49, 32, 28, 23040, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 18668, 4172,
            918, 209, 83, 21760, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 21448, 7149,
            3575, 1192, 596, 19200, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845,
            16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 15182, 3519,
            1814, 1131, 825, 15360, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 26161, 13548,
            5519, 1701, 753, 3840, 0, 0, 32764, 20075, 7636, 2708, 1033, 0, 0, 0, 21550, 9712,
            3793, 1479, 723, 1280, 0, 0, 32764, 16157, 6368, 3863, 2116, 256, 0, 0, 27795, 17122,
            10239, 5748, 2534, 19200, 0, 0, 32764, 20982, 13948, 7173, 4107, 19200, 0, 0, 27774,
            21763, 15652, 9575, 7283, 0, 0, 0, 32758, 26948, 18535, 13290, 8402, 19200, 0, 0,
            31441, 23950, 17410, 13799, 10243, 6400, 0, 0, 31251, 26858, 21643, 16419, 11177, 0, 0,
            0, 32645, 27703, 21428, 17618, 15546, 4096, 0, 0, 30982, 26911, 21961, 18477, 12857,
            19200, 0, 0, 29840, 25015, 19837, 15685, 12258, 19200, 0, 0, 32219, 30095, 27055,
            24996, 20089, 768, 0, 0, 31643, 28162, 23463, 20837, 17884, 3328, 0, 0, 32756, 29059,
            26710, 23991, 20836, 21760, 0, 0, 13093, 1483, 244, 70, 36, 2816, 0, 0, 21313, 6028,
            489, 51, 36, 768, 0, 0, 22423, 4557, 963, 124, 36, 768, 0, 0, 32764, 9491, 1559, 223,
            36, 2048, 0, 0, 19209, 6420, 1738, 424, 115, 1536, 0, 0, 32764, 12919, 4305, 1447, 464,
            21248, 0, 0, 25219, 12280, 5610, 2335, 865, 19200, 0, 0, 32764, 17581, 8275, 3489,
            1501, 0, 0, 0, 27849, 17698, 10432, 5550, 2976, 19200, 0, 0, 32472, 23208, 14188, 8128,
            4197, 19200, 0, 0, 28319, 19990, 11829, 5924, 3851, 1280, 0, 0, 32764, 23949, 16469,
            11496, 7263, 19200, 0, 0, 30106, 23797, 17334, 11832, 8526, 19712, 0, 0, 32763, 25398,
            19723, 15003, 11082, 23040, 0, 0, 9392, 154, 28, 24, 20, 1280, 0, 0, 25516, 1712, 70,
            32, 28, 19968, 0, 0, 13810, 1208, 113, 32, 28, 23040, 0, 0, 32761, 4046, 247, 40, 36,
            19456, 0, 0, 17243, 3335, 544, 86, 36, 23040, 0, 0, 32763, 7389, 1160, 170, 36, 256, 0,
            0, 22635, 8097, 2109, 474, 64, 19200, 0, 0, 32574, 13754, 4348, 1272, 295, 19200, 0, 0,
            26731, 14869, 7191, 3284, 1322, 19200, 0, 0, 32093, 20352, 10557, 4737, 2177, 19200, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0,
            0, 12608, 4465, 1758, 833, 509, 16640, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0,
            26381, 11637, 4117, 1382, 532, 13056, 0, 0, 32764, 18425, 6963, 2382, 790, 1280, 0, 0,
            21974, 9117, 4354, 2254, 1145, 6656, 0, 0, 32764, 13976, 6423, 2926, 1335, 6656, 0, 0,
            25518, 13911, 9023, 6274, 3583, 7936, 0, 0, 32709, 26834, 16048, 7228, 3958, 13056, 0,
            0, 27915, 19325, 13423, 9384, 6727, 0, 0, 0, 32764, 25638, 20420, 13836, 8595, 19200,
            0, 0, 30101, 23115, 18905, 13951, 11008, 256, 0, 0, 32764, 27291, 22116, 16628, 13174,
            256, 0, 0, 30173, 24850, 19742, 14948, 12761, 19712, 0, 0, 32260, 29658, 25398, 22203,
            18064, 512, 0, 0, 30807, 26402, 23292, 20474, 17519, 23040, 0, 0, 32015, 30168, 26044,
            21891, 18603, 3840, 0, 0, 31348, 28412, 26148, 23831, 21771, 23040, 0, 0, 32648, 30791,
            28270, 25782, 23022, 19200, 0, 0, 12027, 830, 140, 40, 36, 8960, 0, 0, 23351, 4681,
            332, 67, 36, 768, 0, 0, 20420, 4269, 792, 162, 48, 0, 0, 0, 32764, 8389, 1647, 370, 84,
            0, 0, 0, 19493, 5994, 1929, 591, 233, 4096, 0, 0, 32764, 11339, 3881, 1315, 499, 6656,
            0, 0, 25389, 11562, 5207, 2242, 1055, 256, 0, 0, 32065, 20435, 9890, 4228, 1908, 256,
            0, 0, 27552, 17372, 10584, 5883, 3506, 19200, 0, 0, 32744, 23102, 14409, 8069, 4762, 0,
            0, 0, 28436, 20177, 13852, 9047, 5952, 768, 0, 0, 32269, 25768, 18430, 13451, 9318, 0,
            0, 0, 29174, 23212, 18432, 13678, 10446, 19200, 0, 0, 32751, 29196, 23480, 19444,
            17031, 0, 0, 0, 8759, 231, 28, 24, 20, 19200, 0, 0, 22674, 1302, 62, 32, 28, 0, 0, 0,
            13450, 1077, 92, 32, 28, 20480, 0, 0, 32449, 4184, 456, 49, 36, 19200, 0, 0, 16871,
            3317, 625, 120, 36, 19200, 0, 0, 32549, 7666, 1297, 280, 36, 19200, 0, 0, 22722, 8052,
            2311, 713, 196, 0, 0, 0, 32265, 14006, 4493, 1239, 330, 19200, 0, 0, 27370, 16740,
            9467, 5341, 2826, 19456, 0, 0, 32271, 21620, 12753, 7207, 3809, 19456, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307,
            21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0, 18803,
            11789, 6250, 15872, 15351, 6425, 3334, 1536, 18199, 8304, 4972, 1536, 20236, 9945,
            7097, 2816, 24182, 15477, 10943, 1536, 26442, 19650, 14861, 1536, 28662, 23595, 20145,
            3840, 8593, 3501, 1566, 8960, 10277, 2665, 1105, 256, 12807, 3497, 1610, 1536, 15745,
            5666, 2858, 1536, 18871, 9237, 5317, 256, 21535, 13006, 8077, 1792, 25390, 18223,
            12834, 1792, 12660, 256, 18093, 0, 12221, 23808, 16384, 0, 16384, 0, 16384, 0, 16384,
            0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 16384, 0, 12557, 1351, 1280, 0, 10768, 2459,
            1280, 0, 8149, 737, 8192, 0, 7356, 915, 8192, 0, 5966, 1485, 8192, 0, 3564, 677, 8192,
            0, 2420, 135, 8192, 0, 1674, 82, 10240, 0, 1103, 104, 1792, 0, 451, 301, 150, 15872,
            24576, 16384, 8192, 0, 6144, 4096, 2048, 12800, 669, 446, 223, 12800, 24576, 16384,
            8192, 0, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 1484, 286, 132, 15872, 853, 244,
            41, 15872, 566, 87, 44, 15360, 527, 51, 20, 15360, 2704, 157, 31, 15872, 3416, 374, 53,
            15872, 10892, 1489, 465, 15360, 685, 98, 49, 15360, 614, 137, 68, 15360, 818, 82, 41,
            15360, 352, 34, 20, 15360, 933, 65, 22, 15872, 1827, 186, 31, 15360, 4080, 219, 44,
            15360, 1742, 325, 20, 6400, 10230, 1517, 50, 1280, 10540, 6474, 141, 0, 11865, 9455,
            6906, 9728, 21141, 16701, 423, 6400, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 951,
            187, 33, 6400, 13269, 1749, 118, 0, 18858, 8558, 344, 7936, 20054, 12582, 3175, 15872,
            27946, 20120, 3259, 8192, 30388, 25317, 15994, 19200, 29696, 21977, 17093, 12800, 283,
            34, 20, 19200, 13709, 759, 43, 0, 23459, 4020, 284, 8192, 27046, 15476, 3232, 15872,
            30582, 24131, 6632, 14592, 30817, 26889, 17109, 8448, 30602, 27073, 21177, 9216, 14290,
            7936, 2358, 6656, 29494, 4096, 16384, 0, 16384, 0, 630, 0, 32071, 12800, 16384, 0,
            16384, 0, 8249, 8192, 196, 6656, 32115, 3328, 364, 12800, 16384, 0, 15, 21248, 32690,
            22016, 156, 12800, 16384, 0, 5003, 15872, 45, 19968, 32400, 7936, 630, 12800, 30247,
            12800, 4, 8960, 32746, 13568, 191, 12800, 16384, 0, 32162, 23040, 26459, 0, 19071, 256,
            31967, 2560, 21875, 6400, 12873, 12800, 26547, 19456, 19048, 19200, 12629, 19200,
            25435, 15360, 12723, 6400, 8283, 12800, 0, 0, 21845, 10923, 0, 0, 781, 71, 23808, 0,
            106, 12, 23040, 0, 281, 70, 15360, 0, 6638, 376, 42, 19200, 19038, 3142, 515, 19200,
            23326, 9231, 3516, 1536, 28513, 18782, 11580, 8960, 8483, 735, 109, 0, 20814, 4668,
            1005, 19200, 25369, 13329, 6333, 1280, 28672, 20687, 13429, 19712, 2185, 874, 437,
            23040, 13863, 1260, 630, 6400, 24576, 16384, 8192, 0, 24576, 16384, 8192, 0, 5791,
            1170, 404, 12800, 8047, 2193, 644, 23808, 13965, 6109, 2158, 23040, 21011, 12383, 7484,
            1280, 0, 0, 0, 0, 1423, 257, 92, 43, 19456, 0, 0, 0, 828, 355, 237, 118, 12800, 0, 0,
            0, 26214, 19661, 13107, 6554, 0, 0, 0, 0, 26214, 19661, 13107, 6554, 0, 0, 0, 0, 24782,
            8284, 2298, 645, 290, 3072, 0, 0, 26383, 10500, 2987, 884, 289, 1536, 0, 0, 28205,
            18431, 10391, 5241, 2137, 19200, 0, 0, 31000, 26865, 22038, 16135, 11328, 23040, 0, 0,
            25214, 10341, 3510, 1293, 382, 1280, 0, 0, 26559, 12074, 3982, 1324, 438, 23040, 0, 0,
            28583, 20407, 12881, 7029, 3277, 23808, 0, 0, 31185, 27312, 23066, 17398, 12294, 23040,
            0, 0, 2585, 452, 194, 129, 65, 23040, 0, 0, 17621, 1039, 247, 99, 49, 8960, 0, 0,
            27307, 21845, 16384, 10923, 5461, 0, 0, 0, 27307, 21845, 16384, 10923, 5461, 0, 0, 0,
        ],
    },
];

pub fn cdf_thread_init_static_qcat(qidx: u32) -> u32 {
    (qidx > 90) as u32 + (qidx > 140) as u32 + (qidx > 190) as u32
}

impl CdfContext {
    pub fn init_from_defaults(qcat: usize) -> Self {
        Self {
            coef: DEFAULT_COEF_CDF[qcat].clone(),
            m: DEFAULT_CDF.m.clone(),
            mv: DEFAULT_CDF.mv.clone(),
            dmv: DEFAULT_CDF.mv.clone(),
        }
    }

    pub fn shift(&mut self, src: &CdfContext, n_tiles_log2: u32) {
        let s = n_tiles_log2;
        visit_mode_kf_entries(|o, n| entry_shift(&mut self.m.data, &src.m.data, o, n, s));
        visit_coef_entries(|o, n| entry_shift(&mut self.coef.data, &src.coef.data, o, n, s));
        visit_mv_entries(|o, n| entry_shift(&mut self.dmv.data, &src.dmv.data, o, n, s));
        visit_mode_nonkf_entries(|o, n| entry_shift(&mut self.m.data, &src.m.data, o, n, s));
        visit_mv_entries(|o, n| entry_shift(&mut self.mv.data, &src.mv.data, o, n, s));
    }

    pub fn shift_accumulate(&mut self, src: &CdfContext, n_tiles_log2: u32) {
        let s = n_tiles_log2;
        visit_mode_kf_entries(|o, n| entry_shift_acc(&mut self.m.data, &src.m.data, o, n, s));
        visit_coef_entries(|o, n| entry_shift_acc(&mut self.coef.data, &src.coef.data, o, n, s));
        visit_mv_entries(|o, n| entry_shift_acc(&mut self.dmv.data, &src.dmv.data, o, n, s));
        visit_mode_nonkf_entries(|o, n| entry_shift_acc(&mut self.m.data, &src.m.data, o, n, s));
        visit_mv_entries(|o, n| entry_shift_acc(&mut self.mv.data, &src.mv.data, o, n, s));
    }

    pub fn reset_count(&mut self, is_key_or_intra: bool) {
        visit_mode_kf_entries(|o, n| entry_reset_count(&mut self.m.data, o, n));
        visit_coef_entries(|o, n| entry_reset_count(&mut self.coef.data, o, n));
        visit_mv_entries(|o, n| entry_reset_count(&mut self.dmv.data, o, n));
        if !is_key_or_intra {
            visit_mode_nonkf_entries(|o, n| entry_reset_count(&mut self.m.data, o, n));
            visit_mv_entries(|o, n| entry_reset_count(&mut self.mv.data, o, n));
        }
    }

    pub fn pri_sec_average(
        &mut self,
        src1_m: &CdfModeContext,
        src1_coef: &CdfCoefContext,
        src1_mv: &CdfMvContext,
        src1_dmv: &CdfMvContext,
        src2_m: &CdfModeContext,
        src2_coef: &CdfCoefContext,
        src2_mv: &CdfMvContext,
        src2_dmv: &CdfMvContext,
    ) {
        fn avg(dst: &mut [u16], s1: &[u16], s2: &[u16]) {
            for i in 0..dst.len() {
                dst[i] = ((s1[i] as u32 * 7 + s2[i] as u32 + 4) >> 3) as u16;
            }
        }
        avg(&mut self.m.data, &src1_m.data, &src2_m.data);
        avg(&mut self.coef.data, &src1_coef.data, &src2_coef.data);
        avg(&mut self.mv.data, &src1_mv.data, &src2_mv.data);
        avg(&mut self.dmv.data, &src1_dmv.data, &src2_dmv.data);
    }
}

#[inline(always)]
fn entry_shift(dst: &mut [u16], src: &[u16], off: usize, n1d: usize, shift: u32) {
    for n in 0..n1d {
        dst[off + n] = src[off + n] >> shift;
    }
    let cp = off + n1d;
    let [count, para] = src[cp].to_ne_bytes();
    dst[cp] = u16::from_ne_bytes([count >> shift, para]);
}

#[inline(always)]
fn entry_shift_acc(dst: &mut [u16], src: &[u16], off: usize, n1d: usize, shift: u32) {
    for n in 0..n1d {
        dst[off + n] += src[off + n] >> shift;
    }
    let cp = off + n1d;
    let src_count = src[cp].to_ne_bytes()[0];
    let mut bytes = dst[cp].to_ne_bytes();
    bytes[0] = bytes[0].wrapping_add(src_count >> shift);
    dst[cp] = u16::from_ne_bytes(bytes);
}

#[inline(always)]
fn entry_reset_count(data: &mut [u16], off: usize, n1d: usize) {
    let cp = off + n1d;
    let mut bytes = data[cp].to_ne_bytes();
    bytes[0] = ((bytes[0] as u16 * 3) >> 2) as u8;
    data[cp] = u16::from_ne_bytes(bytes);
}

fn visit_mv_entries(mut f: impl FnMut(usize, usize)) {
    for j in 0..7usize {
        f(j * 8, (9 + j) >> 1);
    } // shell_lower (variable n1d)
    for j in 0..7usize {
        f(56 + j * 8, (10 + j).min(14) >> 1);
    } // shell_upper (variable n1d)
    f(112, 1); // shell_set
    f(114, 1); // shell_tip
    for j in 0..2 {
        f(116 + j * 2, 1);
    } // shell_offset_low
    f(120, 1); // shell_offset_cl2
    for j in 0..16 {
        f(122 + j * 2, 1);
    } // shell_offset_hi
    for j in 0..2 {
        f(154 + j * 2, 1);
    } // col_component
    for j in 0..4 {
        f(158 + j * 2, 1);
    } // col_index
}

fn visit_mode_kf_entries(mut f: impl FnMut(usize, usize)) {
    // restoration
    for j in 0..2 {
        f(j * 2, 1);
    } // rst_switchable
    f(6, 1); // rst_ns_wiener
    f(4, 1); // rst_pc_wiener
    for j in 0..2 {
        f(8 + j * 2, 1);
    } // wiener_ns_len
    f(12, 1); // wiener_ns_sym
    f(16, 3); // wiener_ns_cf
    // partitioning
    for i in 0..2 {
        for j in 0..64 {
            f(20 + i * 128 + j * 2, 1);
        }
    } // part_split
    for j in 0..8 {
        f(276 + j * 2, 1);
    } // part_square
    for i in 0..2 {
        for j in 0..64 {
            f(292 + i * 128 + j * 2, 1);
        }
    } // part_dir
    for i in 0..2 {
        for j in 0..64 {
            f(548 + i * 128 + j * 2, 1);
        }
    } // part_ext
    for i in 0..2 {
        for j in 0..64 {
            f(804 + i * 128 + j * 2, 1);
        }
    } // part_4way
    // intra
    for j in 0..3 {
        f(1068 + j * 2, 1);
    } // intrabc
    f(1074, 1); // gdf
    for j in 0..4 {
        f(1076 + j * 2, 1);
    } // cdef_idx0
    for j in 0..6 {
        f(1088 + j * 8, 1 + j);
    } // cdef_idx (variable n1d)
    for i in 0..3 {
        for j in 0..4 {
            f(1136 + i * 8 + j * 2, 1);
        }
    } // ccso
    for j in 0..6 {
        f(1160 + j * 2, 1);
    } // skip_txfm
    for j in 0..2 {
        f(1172 + j * 2, 1);
    } // dpcm
    for j in 0..2 {
        f(1176 + j * 2, 1);
    } // dpcm_dir
    f(1180, 3); // intra_y_set
    for j in 0..3 {
        f(1184 + j * 8, 7);
    } // intra_y_idx0
    for j in 0..3 {
        f(1208 + j * 8, 5);
    } // intra_y_idx1
    for i in 0..4 {
        for j in 0..6 {
            f(1232 + i * 12 + j * 2, 1);
        }
    } // fsc
    for j in 0..3 {
        f(1280 + j * 4, 3);
    } // mrl_index
    for j in 0..3 {
        f(1292 + j * 2, 1);
    } // multi_mrl
    f(1298, 1); // pal_y
    f(1304, 6); // pal_sz
    for j in 0..3 {
        f(1312 + j * 2, 1);
    } // dip
    f(1320, 5); // dip_mode
    for j in 0..3 {
        f(1328 + j * 2, 1);
    } // cfl
    for j in 0..2 {
        f(1336 + j * 8, 7);
    } // intra_uv_mode
    f(1352, 1); // mhccp
    for j in 0..4 {
        f(1356 + j * 4, 2);
    } // mhccp_filter_dir
    f(1372, 1); // cfl_type
    f(1376, 7); // cfl_sign
    for j in 0..6 {
        f(1384 + j * 8, 7);
    } // cfl_alpha
    for j in 0..4 {
        f(1432 + j * 4, 2);
    } // pal_idx_identity
    for k in 0..7 {
        for j in 0..5 {
            f(1448 + k * 40 + j * 8, k + 1);
        }
    } // pal_idx (variable n1d)
    f(1728, 1); // intrabc_mode
    f(1730, 1); // intrabc_precision
    for j in 0..3 {
        f(1732 + j * 2, 1);
    } // morph_pred
    // tx
    for i in 0..4 {
        for j in 0..2 {
            f(1738 + i * 4 + j * 2, 1);
        }
    } // txsz_lossless
    for i in 0..2 {
        for j in 0..2 {
            for k in 0..9 {
                f(1754 + i * 36 + j * 18 + k * 2, 1);
            }
        }
    } // tx_split
    for i in 0..2 {
        for j in 0..2 {
            for k in 0..14 {
                f(1832 + i * 224 + j * 112 + k * 8, 6);
            }
        }
    } // tx_part_2d
    for i in 0..2 {
        for j in 0..2 {
            for k in 0..2 {
                f(2280 + i * 8 + j * 4 + k * 2, 1);
            }
        }
    } // tx_part_1d
    f(2296, 1); // txtp_lossless
    for j in 0..2 {
        f(2298 + j * 2, 1);
    } // txtp_long32_dct
    for j in 0..4 {
        f(2304 + j * 4, 3);
    } // txtp_intra_short_1d
    for i in 0..3 {
        for j in 0..4 {
            f(2320 + i * 16 + j * 4, 3);
        }
    } // txtp_inter_short_1d
    for j in 0..4 {
        f(2368 + j * 8, 6);
    } // txtp_ext
    for j in 0..4 {
        f(2400 + j * 2, 1);
    } // txtp_ext_reduced
    for i in 0..2 {
        for j in 0..3 {
            for k in 0..4 {
                f(2408 + i * 24 + j * 8 + k * 2, 1);
            }
        }
    } // txtp_inter_tx_set
    for i in 0..2 {
        for j in 0..3 {
            f(2456 + i * 24 + j * 8, 7);
        }
    } // txtp_inter_set0
    for j in 0..3 {
        f(2504 + j * 8, 7);
    } // txtp_inter_set1
    for j in 0..3 {
        f(2528 + j * 4, 3);
    } // txtp_inter_set2
    for i in 0..3 {
        for j in 0..4 {
            f(2540 + i * 8 + j * 2, 1);
        }
    } // txtp_inter_dct_idtx
    for i in 0..3 {
        for j in 0..4 {
            f(2564 + i * 16 + j * 4, 3);
        }
    } // txtp_inter_dct_idtx_iddct
    for i in 0..2 {
        for j in 0..5 {
            f(2612 + i * 20 + j * 4, 3);
        }
    } // stx
    f(2652, 3); // stx_set_adst
    f(2656, 6); // stx_set
    f(2664, 6); // cctx
    // seg (all-frames)
    for j in 0..3 {
        f(2672 + j * 2, 1);
    } // seg_id_ext
    for i in 0..2 {
        for j in 0..3 {
            f(2680 + i * 24 + j * 8, 7);
        }
    } // seg_id
    f(2728, 7); // delta_q
}

fn visit_mode_nonkf_entries(mut f: impl FnMut(usize, usize)) {
    for j in 0..4 {
        f(1060 + j * 2, 1);
    } // region_type
    for j in 0..3 {
        f(2736 + j * 2, 1);
    } // skip_mode
    for j in 0..3 {
        f(2742 + j * 2, 1);
    } // skip_mode_drl_idx
    for j in 0..4 {
        f(2748 + j * 2, 1);
    } // intra
    for j in 0..3 {
        f(2756 + j * 2, 1);
    } // tip
    for j in 0..5 {
        f(2762 + j * 2, 1);
    } // comp
    for i in 0..3 {
        for j in 0..6 {
            f(2772 + i * 12 + j * 2, 1);
        }
    } // single_ref
    for i in 0..3 {
        for j in 0..6 {
            f(2808 + i * 12 + j * 2, 1);
        }
    } // comp0_ref
    for i in 0..3 {
        for j in 0..2 {
            for k in 0..6 {
                f(2844 + i * 24 + j * 12 + k * 2, 1);
            }
        }
    } // comp1_ref
    f(2916, 1); // tip_mode
    for j in 0..5 {
        f(2918 + j * 2, 1);
    } // warp
    f(2928, 1); // warp_newmv
    for j in 0..5 {
        f(2932 + j * 4, 2);
    } // inter_mode
    for i in 0..9 {
        for j in 0..3 {
            f(2952 + i * 6 + j * 2, 1);
        }
    } // amvd
    for j in 0..2 {
        f(3006 + j * 2, 1);
    } // bawp
    for j in 0..3 {
        f(3010 + j * 2, 1);
    } // bawp_explicit
    f(3016, 1); // bawp_explicit_scale
    for j in 0..3 {
        f(3018 + j * 2, 1);
    } // warp_extend
    for j in 0..4 {
        f(3024 + j * 2, 1);
    } // warp_causal
    for j in 0..4 {
        f(3032 + j * 2, 1);
    } // interintra
    for j in 0..4 {
        f(3040 + j * 4, 3);
    } // interintra_mode
    f(3056, 1); // interintra_wedge
    f(3060, 3); // wedge_quad
    for j in 0..4 {
        f(3064 + j * 8, 4);
    } // wedge_angle
    f(3096, 2); // wedge_dist2
    f(3100, 3); // wedge_dist
    for j in 0..3 {
        f(3104 + j * 2, 1);
    } // tip_drl_idx
    f(3112, 2); // jmvd_amvd_scale_mode
    f(3120, 4); // jmvd_scale_mode
    for i in 0..3 {
        for j in 0..5 {
            f(3128 + i * 10 + j * 2, 1);
        }
    } // drl_idx
    for j in 0..3 {
        f(3158 + j * 2, 1);
    } // mvprec_def
    for i in 0..2 {
        for j in 0..3 {
            f(3164 + i * 12 + j * 4, 2);
        }
    } // mvprec_rem
    for j in 0..3 {
        f(3188 + j * 2, 1);
    } // warp_ref_idx
    f(3196, 3); // amvd_joint
    for j in 0..2 {
        f(3200 + j * 8, 7);
    } // amvd_index
    f(3216, 1); // warpmv_with_mvd
    // warp_delta_prec: [N_BS_SIZES=31][2] in the CDF layout (offset 3218..3280).
    // The reserved width must match the cdf_acc layout exactly so every CDF that
    // follows it stays aligned for the per-symbol count decay (reset_count).
    for j in 0..31 {
        f(3218 + j * 2, 1);
    }
    for i in 0..2 {
        for j in 0..2 {
            f(3280 + i * 16 + j * 8, 7);
        }
    } // warp_delta_param [2][2][8] @ 3280
    f(3312, 1); // warp_delta_sign
    for j in 0..4 {
        f(3314 + j * 2, 1);
    } // warp_interintra
    for j in 0..5 {
        f(3324 + j * 4, 3);
    } // comp_mode_sameref
    for j in 0..2 {
        f(3344 + j * 2, 1);
    } // comp_mode_joint
    for j in 0..5 {
        f(3352 + j * 8, 4);
    } // comp_mode
    for j in 0..2 {
        f(3392 + j * 2, 1);
    } // opfl
    for j in 0..11 {
        f(3396 + j * 2, 1);
    } // refine_mv
    for j in 0..12 {
        f(3418 + j * 2, 1);
    } // comp_type_masked
    f(3442, 1); // comp_type_weighted
    for j in 0..4 {
        f(3444 + j * 2, 1);
    } // cwp_idx
    for j in 0..8 {
        f(3452 + j * 4, 2);
    } // filter
    for j in 0..3 {
        f(3484 + j * 2, 1);
    } // seg_pred
}

fn visit_coef_entries(mut f: impl FnMut(usize, usize)) {
    // skip: [2][5][10][2]
    for i in 0..2 {
        for j in 0..5 {
            for k in 0..10 {
                f(i * 100 + j * 20 + k * 2, 1);
            }
        }
    }
    for j in 0..3 {
        f(200 + j * 8, 4);
    } // eob_bin_16
    for j in 0..3 {
        f(224 + j * 8, 5);
    } // eob_bin_32
    for j in 0..3 {
        f(248 + j * 8, 6);
    } // eob_bin_64
    for j in 0..3 {
        f(272 + j * 8, 7);
    } // eob_bin_128
    for j in 0..3 {
        f(296 + j * 8, 7);
    } // eob_bin_256
    for j in 0..3 {
        f(320 + j * 8, 7);
    } // eob_bin_512
    for j in 0..3 {
        f(344 + j * 8, 7);
    } // eob_bin_1024
    f(368, 1); // eob_hi_bit
    // eob_base_y_tok_hf: [5][4][4]
    for i in 0..5 {
        for j in 0..4 {
            f(372 + i * 16 + j * 4, 2);
        }
    }
    // base_y_tok_hf: [5][20][2][4]
    for i in 0..5 {
        for j in 0..20 {
            for k in 0..2 {
                f(452 + i * 160 + j * 8 + k * 4, 3);
            }
        }
    }
    for j in 0..7 {
        f(1252 + j * 4, 3);
    } // br_y_tok_hf
    // eob_base_y_tok_lf: [5][4][8]
    for i in 0..5 {
        for j in 0..4 {
            f(1280 + i * 32 + j * 8, 4);
        }
    }
    // base_y_tok_lf: [5][33][2][8]
    for i in 0..5 {
        for j in 0..33 {
            for k in 0..2 {
                f(1440 + i * 528 + j * 16 + k * 8, 5);
            }
        }
    }
    for j in 0..14 {
        f(4080 + j * 4, 3);
    } // br_y_tok_lf
    // dc_sign: [2][2][3][2]
    for i in 0..2 {
        for j in 0..2 {
            for k in 0..3 {
                f(4136 + i * 12 + j * 6 + k * 2, 1);
            }
        }
    }
    // bob_base_y_tok: [3][3][4]
    for i in 0..3 {
        for j in 0..3 {
            f(4160 + i * 12 + j * 4, 2);
        }
    }
    // br_y_tok_idtx: [3][7][4]
    for i in 0..3 {
        for j in 0..7 {
            f(4196 + i * 28 + j * 4, 3);
        }
    }
    // base_y_tok_idtx: [3][7][4]
    for i in 0..3 {
        for j in 0..7 {
            f(4280 + i * 28 + j * 4, 3);
        }
    }
    // sign_idtx: [3][9][2]
    for i in 0..3 {
        for j in 0..9 {
            f(4364 + i * 18 + j * 2, 1);
        }
    }
    for j in 0..12 {
        f(4418 + j * 2, 1);
    } // skip_v
    for j in 0..4 {
        f(4444 + j * 4, 2);
    } // eob_base_uv_tok_hf
    for j in 0..12 {
        f(4460 + j * 4, 3);
    } // base_uv_tok_hf
    for j in 0..4 {
        f(4508 + j * 4, 3);
    } // br_uv_tok_hf
    for j in 0..4 {
        f(4528 + j * 8, 4);
    } // eob_base_uv_tok_lf
    for j in 0..12 {
        f(4560 + j * 8, 5);
    } // base_uv_tok_lf
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_cdf_struct_sizes() {
        assert_eq!(std::mem::size_of::<CdfModeContext>(), 6992);
        assert_eq!(std::mem::size_of::<CdfCoefContext>(), 9312);
        assert_eq!(std::mem::size_of::<CdfMvContext>(), 336);
        assert_eq!(std::mem::size_of::<CdfDefaultContext>(), 7328);
    }

    #[test]
    fn test_default_cdf_first_values() {
        assert_eq!(DEFAULT_CDF.m.data[0], 7226);
        assert_eq!(DEFAULT_CDF.m.data[1], 15872);
        assert_eq!(DEFAULT_CDF.mv.data[0], 28308);
    }

    #[test]
    fn test_qcat_calculation() {
        assert_eq!(cdf_thread_init_static_qcat(50), 0);
        assert_eq!(cdf_thread_init_static_qcat(100), 1);
        assert_eq!(cdf_thread_init_static_qcat(150), 2);
        assert_eq!(cdf_thread_init_static_qcat(200), 3);
    }

    #[test]
    fn test_init_from_defaults() {
        let ctx = CdfContext::init_from_defaults(0);
        assert_eq!(ctx.m.data[0], 7226);
        assert_eq!(ctx.coef.data[0], 7009);
    }

    fn make_count_para(count: u8, para: u8) -> u16 {
        u16::from_ne_bytes([count, para])
    }

    #[test]
    fn test_entry_shift_probs_and_count() {
        let mut dst = [0u16; 4];
        let src = [1000, 2000, 3000, make_count_para(80, 5)];
        entry_shift(&mut dst, &src, 0, 3, 2);
        assert_eq!(dst[0], 250);
        assert_eq!(dst[1], 500);
        assert_eq!(dst[2], 750);
        let [count, para] = dst[3].to_ne_bytes();
        assert_eq!(count, 20);
        assert_eq!(para, 5);
    }

    #[test]
    fn test_entry_shift_acc_accumulates() {
        let mut dst = [100u16, 200, make_count_para(10, 7)];
        let src = [400u16, 800, make_count_para(40, 7)];
        entry_shift_acc(&mut dst, &src, 0, 2, 1);
        assert_eq!(dst[0], 300);
        assert_eq!(dst[1], 600);
        let [count, para] = dst[2].to_ne_bytes();
        assert_eq!(count, 30);
        assert_eq!(para, 7);
    }

    #[test]
    fn test_entry_reset_count() {
        let mut data = [1000u16, make_count_para(100, 12)];
        entry_reset_count(&mut data, 0, 1);
        assert_eq!(data[0], 1000);
        let [count, para] = data[1].to_ne_bytes();
        assert_eq!(count, 75);
        assert_eq!(para, 12);
    }

    #[test]
    fn test_visit_mv_entry_count() {
        let mut count = 0usize;
        visit_mv_entries(|_off, _n1d| count += 1);
        assert_eq!(count, 7 + 7 + 1 + 1 + 2 + 1 + 16 + 2 + 4);
    }

    #[test]
    fn test_visit_mv_shell_lower_n1d() {
        let mut entries = Vec::new();
        visit_mv_entries(|off, n1d| entries.push((off, n1d)));
        assert_eq!(entries[0], (0, 4)); // shell_lower[0]: (9+0)>>1=4
        assert_eq!(entries[1], (8, 5)); // shell_lower[1]: (9+1)>>1=5
        assert_eq!(entries[6], (48, 7)); // shell_lower[6]: (9+6)>>1=7
    }

    #[test]
    fn test_visit_mv_no_out_of_bounds() {
        visit_mv_entries(|off, n1d| {
            assert!(
                off + n1d < 168,
                "MV entry off={off} n1d={n1d} exceeds array size 168"
            );
        });
    }

    #[test]
    fn test_visit_mode_kf_no_out_of_bounds() {
        visit_mode_kf_entries(|off, n1d| {
            assert!(
                off + n1d < 3496,
                "Mode kf entry off={off} n1d={n1d} exceeds 3496"
            );
        });
    }

    #[test]
    fn test_visit_mode_nonkf_no_out_of_bounds() {
        visit_mode_nonkf_entries(|off, n1d| {
            assert!(
                off + n1d < 3496,
                "Mode nonkf entry off={off} n1d={n1d} exceeds 3496"
            );
        });
    }

    #[test]
    fn test_visit_coef_no_out_of_bounds() {
        visit_coef_entries(|off, n1d| {
            assert!(
                off + n1d < 4656,
                "Coef entry off={off} n1d={n1d} exceeds 4656"
            );
        });
    }

    #[test]
    fn test_cdf_shift_from_defaults() {
        let src = CdfContext::init_from_defaults(0);
        let mut dst = CdfContext::init_from_defaults(0);
        dst.shift(&src, 1);
        assert_eq!(dst.m.data[0], src.m.data[0] >> 1);
        assert_eq!(dst.coef.data[0], src.coef.data[0] >> 1);
    }

    #[test]
    fn test_cdf_shift_accumulate_from_defaults() {
        let src = CdfContext::init_from_defaults(0);
        let mut dst = CdfContext::init_from_defaults(0);
        let orig_m0 = dst.m.data[0];
        let orig_c0 = dst.coef.data[0];
        dst.shift_accumulate(&src, 1);
        assert_eq!(dst.m.data[0], orig_m0 + (src.m.data[0] >> 1));
        assert_eq!(dst.coef.data[0], orig_c0 + (src.coef.data[0] >> 1));
    }

    #[test]
    fn test_cdf_reset_count_keyframe() {
        let mut ctx = CdfContext::init_from_defaults(0);
        let cp_before_mv = ctx.mv.data[113]; // shell_set count_para
        ctx.reset_count(true);
        assert_eq!(ctx.mv.data[113], cp_before_mv); // mv not touched for kf
    }

    #[test]
    fn test_cdf_reset_count_nonkeyframe() {
        let mut ctx = CdfContext::init_from_defaults(0);
        ctx.reset_count(false);
        // both dmv and mv should be processed
    }

    #[test]
    fn test_cdf_pri_sec_average() {
        let s1 = CdfContext::init_from_defaults(0);
        let s2 = CdfContext::init_from_defaults(1);
        let mut dst = CdfContext::init_from_defaults(0);
        dst.pri_sec_average(
            &s1.m, &s1.coef, &s1.mv, &s1.dmv, &s2.m, &s2.coef, &s2.mv, &s2.dmv,
        );
        let expected = ((s1.m.data[0] as u32 * 7 + s2.m.data[0] as u32 + 4) >> 3) as u16;
        assert_eq!(dst.m.data[0], expected);
    }

    #[test]
    fn test_visit_mode_pal_idx_variable_n1d() {
        let mut pal_entries = Vec::new();
        visit_mode_kf_entries(|off, n1d| {
            if off >= 1448 && off < 1448 + 7 * 40 {
                pal_entries.push((off, n1d));
            }
        });
        assert_eq!(pal_entries.len(), 35); // 7 * 5
        assert_eq!(pal_entries[0].1, 1); // k=0: n1d=1
        assert_eq!(pal_entries[5].1, 2); // k=1: n1d=2
        assert_eq!(pal_entries[30].1, 7); // k=6: n1d=7
    }

    #[test]
    fn test_visit_mode_cdef_idx_variable_n1d() {
        let mut cdef_entries = Vec::new();
        visit_mode_kf_entries(|off, n1d| {
            if off >= 1088 && off < 1088 + 6 * 8 {
                cdef_entries.push((off, n1d));
            }
        });
        assert_eq!(cdef_entries.len(), 6);
        for j in 0..6 {
            assert_eq!(cdef_entries[j], (1088 + j * 8, 1 + j));
        }
    }

    #[test]
    fn test_coef_accessors_offsets() {
        let mut c = CdfCoefContext::default();
        c.data[0] = 42;
        assert_eq!(c.skip(0, 0, 0)[0], 42);
        c.data[200] = 99;
        assert_eq!(c.eob_bin_16(0)[0], 99);
        c.data[224] = 77;
        assert_eq!(c.eob_bin_32(0)[0], 77);
        c.data[4136] = 11;
        assert_eq!(c.dc_sign(0, 0, 0)[0], 11);
        c.data[4418] = 55;
        assert_eq!(c.skip_v(0)[0], 55);
        c.data[4560] = 33;
        assert_eq!(c.base_uv_tok_lf(0)[0], 33);
    }
}