version.c (96032B)
1 /// @file version.c 2 /// 3 /// Nvim was forked from Vim 7.4.160. 4 /// Vim originated from Stevie version 3.6 (Fish disk 217) by GRWalter (Fred). 5 6 #include <assert.h> 7 #include <limits.h> 8 #include <stdbool.h> 9 #include <stdio.h> 10 #include <stdlib.h> 11 #include <string.h> 12 13 #include "auto/versiondef.h" // version info generated by the build system 14 #include "auto/versiondef_git.h" 15 #include "nvim/api/private/helpers.h" 16 #include "nvim/ascii_defs.h" 17 #include "nvim/buffer.h" 18 #include "nvim/buffer_defs.h" 19 #include "nvim/charset.h" 20 #include "nvim/drawscreen.h" 21 #include "nvim/ex_cmds_defs.h" 22 #include "nvim/getchar.h" 23 #include "nvim/gettext_defs.h" 24 #include "nvim/globals.h" 25 #include "nvim/grid.h" 26 #include "nvim/grid_defs.h" 27 #include "nvim/highlight.h" 28 #include "nvim/highlight_defs.h" 29 #include "nvim/lua/executor.h" 30 #include "nvim/mbyte.h" 31 #include "nvim/memory.h" 32 #include "nvim/message.h" 33 #include "nvim/option_vars.h" 34 #include "nvim/os/os.h" 35 #include "nvim/strings.h" 36 #include "nvim/ui.h" 37 #include "nvim/ui_defs.h" 38 #include "nvim/version.h" 39 #include "nvim/window.h" 40 41 // for ":version", ":intro", and "nvim --version" 42 #ifndef NVIM_VERSION_MEDIUM 43 # define NVIM_VERSION_MEDIUM "v" STR(NVIM_VERSION_MAJOR) \ 44 "." STR(NVIM_VERSION_MINOR) "." STR(NVIM_VERSION_PATCH) \ 45 NVIM_VERSION_PRERELEASE 46 #endif 47 #define NVIM_VERSION_LONG "NVIM " NVIM_VERSION_MEDIUM // NOLINT(bugprone-suspicious-missing-comma) 48 49 char *Versions[] = { "8.1", "8.2", "9.0", "9.1", "9.2" }; 50 char *longVersion = NVIM_VERSION_LONG; 51 char *version_buildtype = "Build type: " NVIM_VERSION_BUILD_TYPE; 52 // Reproducible builds: omit compile info in Release builds. #15424 53 #ifndef NDEBUG 54 char *version_cflags = "Compilation: " NVIM_VERSION_CFLAGS; 55 #endif 56 57 #include "version.c.generated.h" 58 59 // clang-format off 60 static const int vim_versions[] = { 801, 802, 900, 901, 902 }; 61 62 static const int num_patches[] = { 2331, 3803, 1574, 1609, 31 }; 63 64 static const int *included_patchsets[] = { 65 (const int[]) { // 801 66 2424, 2423, 2422, 2421, 2420, 2419, 67 // 2418 68 2417, 2416, 69 // 2415 70 2414, 2413, 2412, 2411, 2410, 2409, 2408, 2407, 2406, 2405, 2404, 2403, 2402, 2401, 2400, 71 // 2399 72 2398, 2397, 2396, 2395, 2394, 2393, 2392, 2391, 2390, 2389, 2388, 2387, 73 // 2386 74 2385, 2384, 2383, 2382, 75 // 2381 76 2380, 2379, 2378, 2377, 2376, 2375, 2374, 2373, 2372, 2371, 2370, 2369, 2368, 2367, 2366, 2365, 77 2364, 2363, 78 // 2362 79 2361, 2360, 2359, 2358, 2357, 2356, 2355, 2354, 2353, 2352, 80 // 2351 81 2350, 2349, 2348, 2347, 2346, 2345, 2344, 2343, 2342, 2341, 2340, 2339, 2338, 2337, 2336, 2335, 82 2334, 2333, 2332, 2331, 2330, 2329, 2328, 2327, 2326, 2325, 83 // 2324 84 2323, 2322, 2321, 2320, 2319, 2318, 2317, 2316, 2315, 2314, 2313, 2312, 2311, 2310, 2309, 2308, 85 2307, 2306, 2305, 2304, 2303, 2302, 2301, 2300, 2299, 2298, 2297, 2296, 2295, 86 // 2294 87 2293, 88 // 2292 89 2291, 2290, 2289, 2288, 2287, 2286, 2285, 2284, 2283, 2282, 2281, 2280, 90 // 2279 91 2278, 2277, 2276, 2275, 2274, 92 // 2273 93 2272, 2271, 2270, 2269, 2268, 2267, 2266, 2265, 2264, 2263, 2262, 2261, 2260, 2259, 2258, 2257, 94 2256, 2255, 2254, 2253, 2252, 95 // 2250-2251 96 2249, 2248, 2247, 2246, 2245, 2244, 2243, 2242, 97 // 2241 98 2240, 2239, 2238, 2237, 2236, 2235, 2234, 2233, 99 // 2232 100 2231, 101 // 2230 102 2229, 2228, 2227, 2226, 2225, 2224, 2223, 2222, 2221, 2220, 103 // 2219 104 2218, 2217, 2216, 2215, 2214, 2213, 2212, 2211, 2210, 2209, 105 // 2208 106 2207, 2206, 2205, 2204, 2203, 2202, 2201, 2200, 2199, 2198, 2197, 2196, 107 // 2195 108 2194, 109 // 2192-2193 110 2191, 2190, 111 // 2189 112 2188, 2187, 2186, 2185, 2184, 2183, 2182, 113 // 2181 114 2180, 2179, 2178, 2177, 115 // 2176 116 2175, 2174, 2173, 2172, 2171, 2170, 2169, 2168, 2167, 2166, 2165, 2164, 2163, 2162, 2161, 2160, 117 2159, 118 // 2158 119 2157, 120 // 2155-2156 121 2154, 122 // 2153 123 2152, 2151, 2150, 2149, 2148, 2147, 2146, 2145, 2144, 2143, 124 // 2142 125 2141, 2140, 126 // 2139 127 2138, 2137, 2136, 2135, 2134, 2133, 2132, 2131, 2130, 2129, 2128, 2127, 2126, 2125, 2124, 2123, 128 2122, 129 // 2121 130 2120, 2119, 2118, 2117, 2116, 2115, 2114, 2113, 2112, 2111, 2110, 2109, 2108, 2107, 2106, 2105, 131 2104, 2103, 2102, 2101, 2100, 2099, 2098, 2097, 2096, 2095, 2094, 132 // 2092-2093 133 2091, 2090, 2089, 2088, 2087, 2086, 2085, 2084, 2083, 2082, 2081, 2080, 2079, 2078, 2077, 134 // 2076 135 2075, 2074, 2073, 2072, 2071, 2070, 2069, 2068, 2067, 2066, 2065, 2064, 2063, 2062, 2061, 2060, 136 2059, 2058, 2057, 2056, 2055, 2054, 2053, 2052, 2051, 2050, 2049, 2048, 2047, 2046, 2045, 2044, 137 2043, 2042, 2041, 138 // 2039-2040 139 2038, 2037, 2036, 2035, 2034, 2033, 2032, 2031, 2030, 2029, 2028, 2027, 2026, 2025, 2024, 2023, 140 // 2022 141 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 142 2005, 2004, 2003, 2002, 2001, 2000, 143 // 1999 144 1998, 1997, 1996, 1995, 1994, 1993, 1992, 1991, 1990, 1989, 1988, 1987, 1986, 145 // 1985 146 1984, 1983, 1982, 1981, 1980, 1979, 1978, 1977, 1976, 1975, 1974, 1973, 1972, 1971, 1970, 147 // 1969 148 1968, 1967, 1966, 1965, 1964, 1963, 1962, 1961, 1960, 1959, 1958, 1957, 1956, 1955, 1954, 1953, 149 1952, 1951, 1950, 1949, 1948, 1947, 1946, 1945, 150 // 1944 151 1943, 1942, 1941, 1940, 1939, 1938, 1937, 1936, 1935, 1934, 1933, 1932, 1931, 1930, 1929, 152 // 1928 153 1927, 1926, 1925, 1924, 1923, 1922, 1921, 1920, 1919, 1918, 1917, 1916, 1915, 1914, 1913, 1912, 154 1911, 1910, 1909, 155 // 1908 156 1907, 157 // 1904-1906 158 1903, 1902, 1901, 1900, 1899, 1898, 1897, 1896, 1895, 1894, 1893, 159 // 1892 160 1891, 1890, 1889, 1888, 1887, 1886, 1885, 161 // 1884 162 1883, 163 // 1882 164 1881, 165 // 1880 166 1879, 1878, 1877, 1876, 1875, 1874, 1873, 1872, 1871, 1870, 1869, 1868, 1867, 1866, 1865, 1864, 167 1863, 1862, 1861, 1860, 1859, 1858, 1857, 1856, 1855, 1854, 1853, 1852, 168 // 1851 169 1850, 1849, 1848, 1847, 1846, 1845, 1844, 1843, 1842, 1841, 1840, 1839, 1838, 1837, 1836, 1835, 170 1834, 1833, 1832, 1831, 1830, 1829, 1828, 1827, 1826, 1825, 1824, 1823, 1822, 1821, 1820, 171 // 1819 172 1818, 1817, 1816, 1815, 1814, 173 // 1813 174 1812, 1811, 1810, 1809, 1808, 1807, 1806, 1805, 1804, 1803, 1802, 1801, 1800, 175 // 1799 176 1798, 1797, 1796, 1795, 1794, 1793, 1792, 1791, 1790, 1789, 1788, 177 // 1787 178 1786, 1785, 179 // 1784 180 1783, 1782, 1781, 1780, 1779, 1778, 1777, 1776, 1775, 1774, 1773, 1772, 1771, 181 // 1770 182 1769, 1768, 1767, 1766, 1765, 1764, 1763, 1762, 1761, 1760, 1759, 1758, 1757, 1756, 1755, 1754, 183 1753, 1752, 1751, 1750, 1749, 1748, 1747, 1746, 1745, 1744, 1743, 1742, 1741, 1740, 1739, 1738, 184 1737, 1736, 1735, 1734, 1733, 1732, 1731, 1730, 1729, 1728, 1727, 1726, 1725, 1724, 1723, 1722, 185 1721, 1720, 1719, 186 // 1718 187 1717, 1716, 1715, 188 // 1713-1714 189 1712, 1711, 1710, 1709, 1708, 1707, 1706, 1705, 1704, 1703, 1702, 1701, 1700, 1699, 1698, 1697, 190 1696, 1695, 1694, 1693, 1692, 1691, 191 // 1690 192 1689, 1688, 1687, 1686, 1685, 1684, 1683, 1682, 1681, 1680, 1679, 1678, 1677, 1676, 1675, 1674, 193 // 1673 194 1672, 1671, 1670, 1669, 1668, 1667, 1666, 1665, 1664, 1663, 1662, 1661, 1660, 195 // 1659 196 1658, 1657, 1656, 1655, 1654, 1653, 1652, 1651, 1650, 1649, 1648, 1647, 1646, 1645, 1644, 1643, 197 1642, 1641, 1640, 1639, 1638, 1637, 1636, 1635, 1634, 1633, 1632, 1631, 1630, 1629, 198 // 1628 199 1627, 200 // 1626 201 1625, 1624, 1623, 1622, 1621, 1620, 1619, 1618, 1617, 1616, 1615, 1614, 1613, 202 // 1612 203 1611, 1610, 204 // 1609 205 1608, 206 // 1607 207 1606, 1605, 1604, 1603, 1602, 1601, 1600, 1599, 1598, 208 // 1597 209 1596, 1595, 1594, 1593, 1592, 1591, 1590, 210 // 1589 211 1588, 1587, 1586, 1585, 1584, 1583, 1582, 1581, 212 // 1580 213 1579, 1578, 214 // 1577 215 1576, 1575, 216 // 1574 217 1573, 1572, 1571, 1570, 1569, 1568, 1567, 1566, 1565, 1564, 1563, 1562, 218 // 1561 219 1560, 220 // 1558-1559 221 1557, 1556, 1555, 1554, 222 // 1553 223 1552, 1551, 1550, 1549, 224 // 1548 225 1547, 1546, 1545, 1544, 1543, 1542, 1541, 1540, 1539, 226 // 1537-1538 227 1536, 1535, 1534, 1533, 1532, 1531, 1530, 1529, 1528, 1527, 1526, 228 // 1525 229 1524, 230 // 1523 231 1522, 1521, 1520, 1519, 1518, 1517, 1516, 1515, 1514, 1513, 1512, 1511, 1510, 1509, 1508, 1507, 232 1506, 1505, 1504, 1503, 1502, 1501, 1500, 1499, 1498, 1497, 1496, 1495, 1494, 1493, 1492, 1491, 233 1490, 1489, 1488, 1487, 1486, 1485, 1484, 1483, 1482, 1481, 1480, 1479, 1478, 1477, 1476, 1475, 234 1474, 235 // 1473 236 1472, 1471, 1470, 1469, 1468, 1467, 1466, 1465, 1464, 1463, 1462, 1461, 1460, 1459, 1458, 1457, 237 1456, 1455, 1454, 1453, 1452, 1451, 1450, 1449, 1448, 1447, 1446, 1445, 1444, 1443, 1442, 1441, 238 1440, 1439, 1438, 1437, 1436, 1435, 1434, 1433, 1432, 1431, 1430, 1429, 1428, 1427, 1426, 1425, 239 1424, 1423, 1422, 1421, 1420, 1419, 1418, 240 // 1417 241 1416, 1415, 1414, 1413, 1412, 1411, 1410, 1409, 1408, 1407, 1406, 1405, 1404, 1403, 1402, 1401, 242 1400, 1399, 1398, 1397, 1396, 1395, 1394, 1393, 1392, 1391, 1390, 1389, 1388, 1387, 1386, 1385, 243 1384, 1383, 1382, 1381, 1380, 1379, 1378, 1377, 1376, 1375, 1374, 1373, 1372, 1371, 1370, 1369, 244 1368, 1367, 1366, 1365, 1364, 1363, 1362, 1361, 1360, 1359, 1358, 1357, 1356, 1355, 1354, 1353, 245 1352, 1351, 1350, 1349, 1348, 1347, 1346, 1345, 1344, 1343, 1342, 1341, 1340, 1339, 1338, 1337, 246 1336, 1335, 1334, 1333, 1332, 1331, 1330, 1329, 1328, 1327, 1326, 1325, 1324, 1323, 1322, 1321, 247 1320, 1319, 1318, 1317, 1316, 1315, 1314, 1313, 1312, 1311, 1310, 1309, 1308, 1307, 1306, 1305, 248 1304, 1303, 1302, 1301, 1300, 1299, 1298, 1297, 1296, 1295, 1294, 1293, 1292, 1291, 1290, 1289, 249 1288, 1287, 1286, 1285, 1284, 1283, 1282, 1281, 1280, 1279, 1278, 1277, 1276, 1275, 1274, 1273, 250 1272, 1271, 1270, 1269, 1268, 1267, 1266, 1265, 1264, 1263, 1262, 1261, 1260, 1259, 1258, 1257, 251 1256, 1255, 1254, 1253, 1252, 1251, 1250, 1249, 1248, 1247, 1246, 1245, 1244, 1243, 1242, 1241, 252 1240, 1239, 1238, 1237, 1236, 1235, 1234, 1233, 1232, 1231, 1230, 1229, 1228, 1227, 1226, 1225, 253 // 1224 254 1223, 1222, 1221, 1220, 1219, 255 // 1218 256 1217, 1216, 1215, 1214, 1213, 1212, 1211, 1210, 1209, 1208, 1207, 1206, 1205, 1204, 1203, 1202, 257 1201, 1200, 1199, 1198, 1197, 1196, 1195, 1194, 1193, 1192, 1191, 1190, 1189, 1188, 1187, 1186, 258 1185, 1184, 1183, 1182, 1181, 1180, 1179, 1178, 1177, 1176, 1175, 1174, 1173, 1172, 1171, 1170, 259 1169, 1168, 1167, 1166, 1165, 1164, 1163, 1162, 1161, 1160, 1159, 1158, 1157, 1156, 1155, 1154, 260 1153, 1152, 1151, 1150, 1149, 1148, 1147, 1146, 1145, 1144, 1143, 1142, 1141, 1140, 1139, 1138, 261 1137, 1136, 1135, 1134, 1133, 1132, 1131, 1130, 1129, 1128, 1127, 1126, 1125, 1124, 1123, 1122, 262 1121, 1120, 1119, 1118, 1117, 1116, 1115, 1114, 1113, 1112, 1111, 1110, 1109, 1108, 1107, 1106, 263 1105, 1104, 1103, 1102, 1101, 1100, 1099, 1098, 1097, 1096, 1095, 1094, 1093, 1092, 1091, 1090, 264 1089, 1088, 1087, 1086, 1085, 1084, 1083, 1082, 1081, 1080, 1079, 1078, 1077, 1076, 1075, 1074, 265 1073, 1072, 1071, 1070, 1069, 1068, 1067, 1066, 1065, 1064, 1063, 1062, 1061, 1060, 1059, 1058, 266 1057, 1056, 1055, 1054, 1053, 1052, 1051, 1050, 1049, 1048, 1047, 1046, 1045, 267 // 1044 268 1043, 1042, 1041, 1040, 1039, 1038, 1037, 1036, 1035, 1034, 1033, 1032, 1031, 1030, 1029, 1028, 269 1027, 1026, 1025, 1024, 1023, 1022, 1021, 1020, 1019, 1018, 1017, 1016, 1015, 1014, 1013, 1012, 270 1011, 1010, 1009, 1008, 1007, 1006, 1005, 1004, 1003, 1002, 1001, 1000, 999, 998, 997, 996, 271 995, 994, 993, 992, 991, 990, 989, 988, 987, 986, 985, 984, 983, 982, 981, 980, 272 979, 978, 977, 976, 975, 974, 973, 972, 971, 970, 969, 968, 967, 966, 965, 964, 273 963, 962, 961, 960, 959, 958, 957, 956, 955, 954, 274 // 953 275 952, 951, 950, 949, 948, 947, 946, 945, 944, 943, 942, 941, 940, 939, 938, 937, 276 936, 935, 934, 933, 932, 931, 930, 929, 928, 927, 926, 925, 924, 923, 922, 921, 277 920, 919, 918, 917, 916, 915, 914, 913, 912, 911, 910, 909, 908, 907, 906, 905, 278 904, 903, 902, 901, 900, 899, 898, 897, 896, 895, 279 // 894 280 893, 892, 891, 890, 889, 888, 887, 886, 885, 884, 883, 882, 881, 880, 879, 878, 281 877, 282 // 876 283 875, 874, 873, 872, 871, 870, 869, 868, 867, 866, 865, 864, 284 // 863 285 862, 861, 860, 859, 858, 857, 856, 855, 854, 853, 852, 851, 850, 849, 848, 847, 286 846, 845, 844, 843, 842, 841, 840, 839, 838, 837, 836, 835, 834, 833, 832, 831, 287 830, 829, 828, 827, 826, 825, 824, 823, 822, 821, 820, 819, 818, 817, 816, 815, 288 814, 813, 812, 811, 810, 809, 808, 807, 806, 805, 804, 803, 802, 801, 800, 799, 289 798, 797, 796, 795, 794, 793, 792, 791, 790, 789, 788, 787, 786, 785, 784, 783, 290 782, 781, 780, 779, 778, 777, 776, 775, 774, 773, 772, 771, 770, 769, 291 // 768 292 767, 766, 765, 764, 763, 762, 761, 760, 759, 758, 757, 756, 755, 754, 753, 752, 293 751, 750, 749, 748, 747, 746, 745, 744, 743, 742, 741, 740, 739, 738, 737, 736, 294 735, 734, 733, 732, 731, 730, 729, 728, 727, 726, 725, 724, 723, 722, 721, 720, 295 719, 718, 717, 716, 715, 714, 713, 712, 711, 710, 709, 708, 707, 706, 705, 704, 296 703, 702, 701, 700, 699, 698, 697, 696, 695, 694, 693, 692, 691, 690, 689, 688, 297 687, 686, 685, 684, 683, 682, 681, 680, 679, 678, 677, 676, 675, 674, 673, 672, 298 671, 670, 669, 668, 667, 666, 665, 664, 663, 662, 661, 660, 659, 658, 657, 656, 299 655, 654, 653, 652, 651, 650, 649, 648, 647, 646, 645, 644, 643, 642, 641, 640, 300 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, 629, 628, 627, 626, 625, 624, 301 623, 622, 621, 620, 619, 618, 617, 616, 615, 614, 613, 612, 611, 610, 609, 608, 302 607, 606, 605, 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, 594, 593, 592, 303 591, 590, 589, 588, 587, 586, 585, 584, 583, 582, 581, 580, 579, 578, 577, 576, 304 575, 574, 573, 572, 571, 570, 569, 568, 567, 566, 565, 564, 563, 562, 561, 560, 305 559, 558, 557, 556, 555, 554, 553, 552, 551, 550, 549, 548, 547, 546, 545, 544, 306 543, 542, 541, 540, 539, 538, 537, 536, 535, 534, 533, 532, 531, 530, 529, 528, 307 527, 526, 525, 524, 523, 522, 521, 520, 519, 518, 517, 516, 515, 514, 513, 512, 308 511, 510, 509, 508, 507, 506, 505, 504, 503, 502, 501, 500, 499, 498, 497, 496, 309 495, 494, 493, 492, 491, 490, 489, 488, 487, 486, 485, 484, 483, 482, 481, 480, 310 479, 478, 477, 476, 475, 474, 473, 472, 471, 470, 469, 468, 467, 466, 465, 464, 311 463, 462, 461, 460, 459, 458, 457, 456, 455, 454, 453, 452, 451, 450, 449, 448, 312 447, 446, 445, 444, 443, 442, 441, 440, 439, 438, 437, 436, 435, 434, 433, 432, 313 431, 430, 429, 428, 427, 426, 425, 424, 423, 422, 421, 420, 419, 418, 417, 416, 314 415, 414, 413, 412, 411, 410, 409, 408, 407, 406, 405, 404, 403, 402, 401, 400, 315 399, 398, 397, 396, 395, 394, 393, 392, 391, 390, 389, 388, 387, 386, 385, 384, 316 383, 382, 381, 380, 379, 378, 377, 376, 375, 374, 373, 372, 371, 370, 369, 368, 317 367, 366, 365, 364, 363, 362, 361, 360, 359, 358, 357, 356, 355, 354, 353, 352, 318 351, 350, 349, 348, 347, 346, 345, 344, 343, 342, 341, 340, 339, 338, 337, 336, 319 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, 325, 324, 323, 322, 321, 320, 320 319, 318, 317, 316, 315, 314, 313, 312, 311, 310, 309, 308, 307, 306, 305, 304, 321 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, 290, 289, 288, 322 287, 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, 276, 275, 274, 273, 272, 323 271, 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, 260, 259, 258, 257, 256, 324 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 325 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 326 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 327 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192, 328 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 329 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, 330 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 331 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 332 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 333 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 334 95, 94, 93, 92, 91, 90, 89, 88, 335 // 87 336 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 337 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 338 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 339 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 340 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 341 6, 5, 4, 3, 2, 1, 0, 342 }, 343 (const int[]) { // 802 344 5171, 5170, 345 // 5169 346 5168, 5167, 5166, 5165, 5164, 5163, 5162, 5161, 347 // 5160 348 5159, 5158, 5157, 349 // 5156 350 5155, 5154, 5153, 5152, 5151, 5150, 5149, 5148, 351 // 5147 352 5146, 5145, 353 // 5143-5144 354 5142, 355 // 5139-5141 356 5138, 5137, 357 // 5136 358 5135, 359 // 5134 360 5133, 5132, 361 // 5131 362 5130, 363 // 5127-5129 364 5126, 5125, 365 // 5124 366 5123, 5122, 5121, 5120, 5119, 367 // 5118 368 5117, 5116, 369 // 5111-5115 370 5110, 5109, 5108, 5107, 5106, 5105, 5104, 5103, 5102, 5101, 371 // 5100 372 5099, 5098, 5097, 5096, 5095, 373 // 5093-5094 374 5092, 5091, 5090, 375 // 5089 376 5088, 5087, 5086, 5085, 377 // 5084 378 5083, 5082, 5081, 5080, 5079, 5078, 5077, 5076, 5075, 5074, 5073, 5072, 5071, 5070, 5069, 5068, 379 5067, 5066, 380 // 5065 381 5064, 5063, 382 // 5061-5062 383 5060, 5059, 5058, 384 // 5056-5057 385 5055, 5054, 386 // 5053 387 5052, 388 // 5051 389 5050, 390 // 5048-5049 391 5047, 5046, 5045, 5044, 5043, 5042, 5041, 5040, 392 // 5039 393 5038, 5037, 394 // 5036 395 5035, 5034, 396 // 5032-5033 397 5031, 398 // 5030 399 5029, 400 // 5028 401 5027, 402 // 5026 403 5025, 5024, 5023, 5022, 5021, 404 // 5020 405 5019, 5018, 5017, 5016, 5015, 5014, 5013, 5012, 406 // 5011 407 5010, 5009, 5008, 5007, 408 // 5006 409 5005, 410 // 5003-5004 411 5002, 5001, 412 // 5000 413 4999, 4998, 414 // 4997 415 4996, 4995, 416 // 4994 417 4993, 418 // 4992 419 4991, 4990, 4989, 420 // 4988 421 4987, 4986, 4985, 4984, 422 // 4981-4983 423 4980, 4979, 4978, 4977, 4976, 4975, 4974, 4973, 4972, 424 // 4970-4971 425 4969, 4968, 426 // 4964-4967 427 4963, 428 // 4962 429 4961, 4960, 4959, 430 // 4958 431 4957, 4956, 432 // 4955 433 4954, 4953, 434 // 4952 435 4951, 4950, 4949, 4948, 4947, 4946, 436 // 4945 437 4944, 4943, 438 // 4942 439 4941, 4940, 4939, 4938, 440 // 4937 441 4936, 4935, 4934, 442 // 4933 443 4932, 4931, 4930, 4929, 4928, 444 // 4927 445 4926, 4925, 4924, 4923, 4922, 4921, 4920, 4919, 4918, 4917, 4916, 446 // 4915 447 4914, 448 // 4912-4913 449 4911, 4910, 450 // 4909 451 4908, 4907, 452 // 4906 453 4905, 4904, 4903, 454 // 4902 455 4901, 4900, 4899, 4898, 456 // 4896-4897 457 4895, 458 // 4894 459 4893, 4892, 460 // 4891 461 4890, 4889, 462 // 4886-4888 463 4885, 4884, 4883, 4882, 4881, 464 // 4879-4880 465 4878, 466 // 4875-4877 467 4874, 468 // 4872-4873 469 4871, 470 // 4869-4870 471 4868, 4867, 4866, 4865, 4864, 4863, 4862, 4861, 4860, 4859, 4858, 4857, 4856, 4855, 472 // 4854 473 4853, 474 // 4852 475 4851, 4850, 4849, 4848, 476 // 4847 477 4846, 4845, 4844, 4843, 4842, 4841, 4840, 4839, 4838, 4837, 4836, 4835, 4834, 4833, 478 // 4832 479 4831, 4830, 4829, 4828, 4827, 4826, 4825, 4824, 4823, 480 // 4821-4822 481 4820, 4819, 4818, 4817, 4816, 4815, 482 // 4814 483 4813, 4812, 4811, 4810, 4809, 4808, 4807, 4806, 4805, 484 // 4803-4804 485 4802, 4801, 486 // 4800 487 4799, 488 // 4798 489 4797, 4796, 4795, 4794, 4793, 4792, 4791, 4790, 490 // 4789 491 4788, 4787, 4786, 4785, 492 // 4784 493 4783, 494 // 4782 495 4781, 496 // 4780 497 4779, 4778, 498 // 4777 499 4776, 500 // 4774-4775 501 4773, 4772, 4771, 4770, 4769, 4768, 4767, 4766, 4765, 4764, 4763, 4762, 502 // 4761 503 4760, 4759, 504 // 4758 505 4757, 4756, 506 // 4755 507 4754, 4753, 4752, 508 // 4751 509 4750, 4749, 510 // 4748 511 4747, 4746, 4745, 4744, 4743, 512 // 4742 513 4741, 4740, 4739, 4738, 4737, 514 // 4736 515 4735, 4734, 4733, 4732, 4731, 4730, 4729, 4728, 516 // 4727 517 4726, 4725, 4724, 4723, 4722, 4721, 4720, 4719, 4718, 518 // 4717 519 4716, 4715, 4714, 4713, 520 // 4712 521 4711, 4710, 522 // 4709 523 4708, 4707, 4706, 4705, 4704, 4703, 4702, 4701, 4700, 4699, 524 // 4698 525 4697, 4696, 4695, 526 // 4694 527 4693, 4692, 4691, 4690, 4689, 4688, 4687, 4686, 4685, 528 // 4682-4684 529 4681, 4680, 4679, 4678, 4677, 4676, 4675, 4674, 530 // 4673 531 4672, 4671, 4670, 532 // 4669 533 4668, 4667, 4666, 4665, 4664, 534 // 4662-4663 535 4661, 4660, 536 // 4659 537 4658, 538 // 4656-4657 539 4655, 4654, 540 // 4653 541 4652, 4651, 542 // 4650 543 4649, 544 // 4648 545 4647, 4646, 4645, 4644, 4643, 546 // 4642 547 4641, 4640, 4639, 4638, 4637, 4636, 548 // 4634-4635 549 4633, 4632, 4631, 4630, 4629, 4628, 4627, 4626, 4625, 4624, 4623, 550 // 4622 551 4621, 4620, 552 // 4619 553 4618, 4617, 554 // 4615-4616 555 4614, 4613, 4612, 4611, 556 // 4610 557 4609, 4608, 4607, 558 // 4604-4606 559 4603, 4602, 4601, 4600, 4599, 4598, 560 // 4597 561 4596, 4595, 4594, 4593, 4592, 4591, 4590, 562 // 4588-4589 563 4587, 564 // 4586 565 4585, 566 // 4584 567 4583, 568 // 4582 569 4581, 4580, 4579, 570 // 4578 571 4577, 572 // 4575-4576 573 4574, 574 // 4573 575 4572, 4571, 4570, 4569, 4568, 576 // 4567 577 4566, 4565, 4564, 4563, 4562, 4561, 4560, 4559, 4558, 4557, 4556, 4555, 4554, 4553, 4552, 578 // 4551 579 4550, 4549, 4548, 4547, 4546, 4545, 4544, 4543, 4542, 4541, 580 // 4539-4540 581 4538, 4537, 582 // 4534-4536 583 4533, 4532, 4531, 584 // 4530 585 4529, 4528, 4527, 586 // 4525-4526 587 4524, 4523, 588 // 4522 589 4521, 4520, 590 // 4519 591 4518, 4517, 4516, 592 // 4514-4515 593 4513, 4512, 594 // 4508-4511 595 4507, 596 // 4505-4506 597 4504, 598 // 4503 599 4502, 4501, 600 // 4499-4500 601 4498, 4497, 4496, 4495, 4494, 602 // 4493 603 4492, 4491, 604 // 4489-4490 605 4488, 606 // 4487 607 4486, 4485, 4484, 4483, 4482, 4481, 608 // 4480 609 4479, 4478, 4477, 4476, 4475, 4474, 4473, 610 // 4472 611 4471, 4470, 4469, 4468, 4467, 4466, 4465, 4464, 4463, 4462, 4461, 612 // 4457-4460 613 4456, 4455, 4454, 4453, 4452, 4451, 4450, 614 // 4448-4449 615 4447, 4446, 4445, 4444, 4443, 4442, 616 // 4441 617 4440, 618 // 4439 619 4438, 4437, 4436, 620 // 4435 621 4434, 4433, 4432, 622 // 4429-4431 623 4428, 4427, 624 // 4425-4426 625 4424, 4423, 4422, 4421, 4420, 4419, 4418, 4417, 4416, 626 // 4415 627 4414, 4413, 4412, 4411, 4410, 4409, 628 // 4408 629 4407, 4406, 4405, 4404, 4403, 4402, 4401, 4400, 4399, 4398, 4397, 4396, 4395, 4394, 4393, 4392, 630 4391, 4390, 4389, 4388, 4387, 4386, 4385, 631 // 4384 632 4383, 4382, 633 // 4380-4381 634 4379, 4378, 4377, 4376, 635 // 4375 636 4374, 4373, 637 // 4371-4372 638 4370, 4369, 4368, 639 // 4367 640 4366, 641 // 4365 642 4364, 4363, 4362, 4361, 4360, 4359, 4358, 643 // 4357 644 4356, 4355, 645 // 4354 646 4353, 4352, 4351, 647 // 4350 648 4349, 649 // 4347-4348 650 4346, 4345, 651 // 4344 652 4343, 4342, 4341, 4340, 4339, 4338, 4337, 4336, 4335, 4334, 653 // 4332-4333 654 4331, 655 // 4330 656 4329, 4328, 4327, 4326, 4325, 4324, 4323, 657 // 4321-4322 658 4320, 4319, 4318, 659 // 4317 660 4316, 4315, 4314, 4313, 4312, 4311, 4310, 4309, 661 // 4308 662 4307, 4306, 4305, 663 // 4304 664 4303, 665 // 4301-4302 666 4300, 4299, 4298, 4297, 4296, 667 // 4295 668 4294, 669 // 4293 670 4292, 671 // 4291 672 4290, 4289, 4288, 4287, 673 // 4286 674 4285, 4284, 4283, 675 // 4282 676 4281, 4280, 677 // 4279 678 4278, 679 // 4276-4277 680 4275, 4274, 4273, 4272, 4271, 681 // 4269-4270 682 4268, 4267, 683 // 4263-4266 684 4262, 4261, 685 // 4259-4260 686 4258, 687 // 4255-4257 688 4254, 4253, 689 // 4252 690 4251, 691 // 4250 692 4249, 4248, 4247, 693 // 4246 694 4245, 4244, 695 // 4243 696 4242, 4241, 697 // 4240 698 4239, 4238, 4237, 4236, 4235, 4234, 4233, 699 // 4231-4232 700 4230, 701 // 4229 702 4228, 4227, 703 // 4223-4226 704 4222, 4221, 4220, 4219, 4218, 4217, 4216, 4215, 4214, 4213, 4212, 4211, 4210, 705 // 4209 706 4208, 4207, 4206, 707 // 4205 708 4204, 4203, 709 // 4201-4202 710 4200, 711 // 4199 712 4198, 4197, 4196, 713 // 4195 714 4194, 4193, 715 // 4192 716 4191, 4190, 4189, 4188, 4187, 4186, 4185, 4184, 4183, 4182, 4181, 4180, 4179, 4178, 4177, 4176, 717 // 4174-4175 718 4173, 4172, 719 // 4170-4171 720 4169, 4168, 721 // 4167 722 4166, 4165, 723 // 4164 724 4163, 725 // 4162 726 4161, 4160, 4159, 4158, 727 // 4157 728 4156, 4155, 4154, 729 // 4153 730 4152, 4151, 4150, 731 // 4147-4149 732 4146, 733 // 4145 734 4144, 4143, 4142, 4141, 4140, 4139, 4138, 4137, 735 // 4135-4136 736 4134, 4133, 4132, 4131, 4130, 4129, 737 // 4128 738 4127, 4126, 739 // 4125 740 4124, 741 // 4122-4123 742 4121, 4120, 4119, 743 // 4117-4118 744 4116, 4115, 745 // 4113-4114 746 4112, 747 // 4111 748 4110, 4109, 749 // 4104-4108 750 4103, 4102, 751 // 4101 752 4100, 753 // 4099 754 4098, 4097, 4096, 4095, 4094, 4093, 4092, 4091, 4090, 4089, 4088, 755 // 4086-4087 756 4085, 757 // 4082-4084 758 4081, 4080, 4079, 4078, 4077, 4076, 4075, 4074, 4073, 4072, 4071, 4070, 759 // 4067-4069 760 4066, 4065, 4064, 761 // 4063 762 4062, 4061, 4060, 763 // 4059 764 4058, 4057, 765 // 4056 766 4055, 4054, 767 // 4053 768 4052, 769 // 4050-4051 770 4049, 4048, 771 // 4044-4047 772 4043, 4042, 773 // 4039-4041 774 4038, 4037, 4036, 775 // 4035 776 4034, 4033, 4032, 777 // 4030-4031 778 4029, 4028, 4027, 4026, 779 // 4024-4025 780 4023, 781 // 4022 782 4021, 4020, 783 // 4019 784 4018, 4017, 4016, 4015, 4014, 4013, 785 // 4008-4012 786 4007, 787 // 4003-4006 788 4002, 4001, 789 // 4000 790 3999, 3998, 791 // 3996-3997 792 3995, 793 // 3994 794 3993, 3992, 795 // 3991 796 3990, 3989, 3988, 797 // 3985-3987 798 3984, 799 // 3983 800 3982, 3981, 3980, 801 // 3979 802 3978, 803 // 3975-3977 804 3974, 3973, 805 // 3970-3972 806 3969, 3968, 807 // 3967 808 3966, 809 // 3965 810 3964, 3963, 3962, 811 // 3959-3961 812 3958, 813 // 3957 814 3956, 815 // 3955 816 3954, 3953, 3952, 3951, 3950, 3949, 3948, 3947, 3946, 817 // 3945 818 3944, 3943, 3942, 819 // 3941 820 3940, 3939, 3938, 3937, 3936, 3935, 3934, 3933, 3932, 3931, 821 // 3927-3930 822 3926, 3925, 823 // 3923-3924 824 3922, 3921, 3920, 3919, 825 // 3918 826 3917, 827 // 3916 828 3915, 3914, 829 // 3913 830 3912, 831 // 3910-3911 832 3909, 3908, 833 // 3907 834 3906, 3905, 835 // 3904 836 3903, 837 // 3901-3902 838 3900, 839 // 3899 840 3898, 841 // 3897 842 3896, 843 // 3894-3895 844 3893, 845 // 3892 846 3891, 847 // 3890 848 3889, 3888, 3887, 3886, 3885, 3884, 3883, 3882, 849 // 3881 850 3880, 3879, 3878, 851 // 3877 852 3876, 3875, 3874, 3873, 853 // 3871-3872 854 3870, 3869, 3868, 3867, 855 // 3866 856 3865, 857 // 3864 858 3863, 3862, 3861, 3860, 859 // 3859 860 3858, 861 // 3857 862 3856, 3855, 863 // 3854 864 3853, 3852, 865 // 3851 866 3850, 867 // 3849 868 3848, 869 // 3847 870 3846, 3845, 3844, 3843, 871 // 3842 872 3841, 873 // 3840 874 3839, 3838, 875 // 3835-3837 876 3834, 3833, 877 // 3832 878 3831, 879 // 3830 880 3829, 881 // 3828 882 3827, 3826, 3825, 3824, 3823, 3822, 3821, 3820, 3819, 3818, 883 // 3815-3817 884 3814, 3813, 885 // 3812 886 3811, 887 // 3809-3810 888 3808, 889 // 3807 890 3806, 3805, 3804, 3803, 3802, 891 // 3801 892 3800, 893 // 3798-3799 894 3797, 3796, 3795, 895 // 3794 896 3793, 3792, 3791, 3790, 897 // 3789 898 3788, 3787, 3786, 3785, 3784, 3783, 3782, 3781, 3780, 3779, 3778, 3777, 3776, 3775, 3774, 3773, 899 3772, 900 // 3771 901 3770, 3769, 3768, 3767, 3766, 3765, 902 // 3763-3764 903 3762, 904 // 3760-3761 905 3759, 3758, 3757, 3756, 3755, 3754, 906 // 3753 907 3752, 3751, 908 // 3749-3750 909 3748, 3747, 3746, 3745, 3744, 3743, 3742, 3741, 3740, 3739, 910 // 3738 911 3737, 3736, 3735, 3734, 912 // 3731-3733 913 3730, 3729, 914 // 3727-3728 915 3726, 3725, 3724, 916 // 3720-3723 917 3719, 3718, 3717, 3716, 3715, 3714, 3713, 3712, 3711, 3710, 3709, 3708, 3707, 918 // 3706 919 3705, 920 // 3704 921 3703, 3702, 3701, 922 // 3700 923 3699, 3698, 924 // 3696-3697 925 3695, 926 // 3694 927 3693, 928 // 3692 929 3691, 930 // 3690 931 3689, 3688, 3687, 3686, 3685, 3684, 932 // 3682-3683 933 3681, 3680, 3679, 3678, 3677, 3676, 3675, 3674, 3673, 3672, 3671, 3670, 3669, 934 // 3668 935 3667, 3666, 3665, 3664, 3663, 3662, 3661, 3660, 3659, 3658, 3657, 936 // 3656 937 3655, 3654, 3653, 3652, 938 // 3649-3651 939 3648, 3647, 940 // 3645-3646 941 3644, 3643, 3642, 3641, 3640, 3639, 3638, 942 // 3637 943 3636, 3635, 944 // 3633-3634 945 3632, 946 // 3631 947 3630, 3629, 948 // 3628 949 3627, 3626, 3625, 950 // 3624 951 3623, 3622, 3621, 952 // 3620 953 3619, 3618, 3617, 3616, 3615, 954 // 3614 955 3613, 3612, 3611, 3610, 3609, 956 // 3608 957 3607, 3606, 958 // 3605 959 3604, 3603, 3602, 3601, 3600, 3599, 3598, 960 // 3597 961 3596, 3595, 3594, 3593, 962 // 3592 963 3591, 964 // 3589-3590 965 3588, 3587, 3586, 3585, 3584, 3583, 3582, 3581, 3580, 3579, 966 // 3578 967 3577, 3576, 3575, 3574, 3573, 3572, 3571, 3570, 968 // 3569 969 3568, 3567, 3566, 3565, 3564, 3563, 970 // 3562 971 3561, 972 // 3559-3560 973 3558, 974 // 3557 975 3556, 3555, 3554, 3553, 3552, 3551, 3550, 3549, 976 // 3548 977 3547, 3546, 3545, 978 // 3544 979 3543, 3542, 3541, 3540, 3539, 980 // 3538 981 3537, 982 // 3535-3536 983 3534, 3533, 3532, 3531, 3530, 3529, 3528, 3527, 3526, 3525, 984 // 3524 985 3523, 3522, 3521, 3520, 3519, 3518, 3517, 986 // 3516 987 3515, 3514, 3513, 3512, 988 // 3511 989 3510, 3509, 3508, 3507, 3506, 3505, 3504, 990 // 3502-3503 991 3501, 3500, 3499, 3498, 3497, 3496, 3495, 3494, 3493, 3492, 3491, 3490, 3489, 3488, 3487, 3486, 992 // 3485 993 3484, 3483, 3482, 994 // 3481 995 3480, 996 // 3479 997 3478, 3477, 3476, 3475, 998 // 3474 999 3473, 3472, 3471, 3470, 3469, 3468, 3467, 3466, 3465, 3464, 3463, 3462, 3461, 3460, 3459, 3458, 1000 3457, 1001 // 3456 1002 3455, 3454, 3453, 3452, 3451, 3450, 3449, 3448, 1003 // 3447 1004 3446, 1005 // 3444-3445 1006 3443, 3442, 3441, 3440, 3439, 3438, 3437, 1007 // 3436 1008 3435, 3434, 3433, 3432, 3431, 3430, 1009 // 3429 1010 3428, 1011 // 3427 1012 3426, 3425, 3424, 1013 // 3422-3423 1014 3421, 3420, 3419, 1015 // 3418 1016 3417, 3416, 3415, 3414, 1017 // 3413 1018 3412, 1019 // 3411 1020 3410, 3409, 3408, 3407, 3406, 1021 // 3404-3405 1022 3403, 3402, 1023 // 3401 1024 3400, 3399, 3398, 3397, 1025 // 3396 1026 3395, 3394, 3393, 3392, 3391, 3390, 3389, 3388, 3387, 3386, 3385, 3384, 3383, 3382, 3381, 1027 // 3380 1028 3379, 3378, 3377, 1029 // 3376 1030 3375, 3374, 3373, 3372, 1031 // 3370-3371 1032 3369, 3368, 1033 // 3367 1034 3366, 1035 // 3365 1036 3364, 3363, 3362, 3361, 3360, 1037 // 3359 1038 3358, 3357, 1039 // 3356 1040 3355, 3354, 3353, 1041 // 3351-3352 1042 3350, 3349, 3348, 1043 // 3346-3347 1044 3345, 1045 // 3339-3344 1046 3338, 3337, 3336, 1047 // 3335 1048 3334, 3333, 3332, 3331, 3330, 3329, 3328, 3327, 3326, 3325, 1049 // 3323-3324 1050 3322, 3321, 1051 // 3320 1052 3319, 1053 // 3315-3318 1054 3314, 3313, 3312, 3311, 3310, 3309, 3308, 3307, 3306, 1055 // 3305 1056 3304, 1057 // 3303 1058 3302, 1059 // 3299-3301 1060 3298, 1061 // 3297 1062 3296, 3295, 3294, 3293, 3292, 3291, 3290, 3289, 1063 // 3287-3288 1064 3286, 3285, 3284, 3283, 3282, 3281, 3280, 1065 // 3279 1066 3278, 3277, 1067 // 3273-3276 1068 3272, 1069 // 3271 1070 3270, 1071 // 3268-3269 1072 3267, 3266, 3265, 3264, 3263, 3262, 1073 // 3261 1074 3260, 3259, 1075 // 3258 1076 3257, 3256, 3255, 3254, 3253, 3252, 1077 // 3251 1078 3250, 1079 // 3249 1080 3248, 3247, 3246, 3245, 1081 // 3244 1082 3243, 3242, 1083 // 3237-3241 1084 3236, 1085 // 3234-3235 1086 3233, 1087 // 3232 1088 3231, 3230, 1089 // 3228-3229 1090 3227, 3226, 3225, 3224, 1091 // 3223 1092 3222, 3221, 3220, 3219, 3218, 1093 // 3217 1094 3216, 1095 // 3215 1096 3214, 3213, 3212, 1097 // 3211 1098 3210, 3209, 3208, 3207, 1099 // 3206 1100 3205, 3204, 1101 // 3203 1102 3202, 1103 // 3200-3201 1104 3199, 3198, 1105 // 3197 1106 3196, 3195, 1107 // 3194 1108 3193, 3192, 3191, 1109 // 3188-3190 1110 3187, 1111 // 3185-3186 1112 3184, 1113 // 3182-3183 1114 3181, 1115 // 3179-3180 1116 3178, 1117 // 3175-3177 1118 3174, 1119 // 3173 1120 3172, 1121 // 3169-3171 1122 3168, 3167, 3166, 3165, 3164, 3163, 1123 // 3161-3162 1124 3160, 3159, 3158, 3157, 3156, 3155, 1125 // 3154 1126 3153, 1127 // 3152 1128 3151, 1129 // 3148-3150 1130 3147, 1131 // 3146 1132 3145, 1133 // 3144 1134 3143, 1135 // 3142 1136 3141, 3140, 3139, 3138, 1137 // 3137 1138 3136, 3135, 3134, 1139 // 3133 1140 3132, 3131, 3130, 1141 // 3126-3129 1142 3125, 1143 // 3123-3124 1144 3122, 3121, 3120, 3119, 3118, 1145 // 3117 1146 3116, 3115, 3114, 1147 // 3111-3113 1148 3110, 3109, 3108, 1149 // 3107 1150 3106, 1151 // 3104-3105 1152 3103, 3102, 3101, 1153 // 3099-3100 1154 3098, 3097, 3096, 3095, 3094, 3093, 3092, 1155 // 3090-3091 1156 3089, 3088, 3087, 3086, 3085, 1157 // 3084 1158 3083, 3082, 3081, 3080, 1159 // 3079 1160 3078, 3077, 3076, 3075, 1161 // 3074 1162 3073, 3072, 3071, 3070, 1163 // 3067-3069 1164 3066, 3065, 3064, 3063, 3062, 3061, 1165 // 3058-3060 1166 3057, 1167 // 3056 1168 3055, 1169 // 3054 1170 3053, 3052, 3051, 3050, 3049, 1171 // 3047-3048 1172 3046, 3045, 3044, 3043, 3042, 3041, 3040, 3039, 3038, 3037, 1173 // 3036 1174 3035, 3034, 3033, 3032, 1175 // 3031 1176 3030, 1177 // 3028-3029 1178 3027, 3026, 3025, 1179 // 3021-3024 1180 3020, 3019, 3018, 3017, 3016, 1181 // 3015 1182 3014, 3013, 3012, 3011, 1183 // 3010 1184 3009, 3008, 3007, 3006, 1185 // 3004-3005 1186 3003, 3002, 3001, 3000, 2999, 1187 // 2998 1188 2997, 2996, 2995, 2994, 2993, 2992, 1189 // 2991 1190 2990, 2989, 1191 // 2988 1192 2987, 2986, 2985, 2984, 1193 // 2982-2983 1194 2981, 2980, 2979, 2978, 2977, 2976, 1195 // 2975 1196 2974, 2973, 1197 // 2972 1198 2971, 2970, 2969, 1199 // 2967-2968 1200 2966, 1201 // 2962-2965 1202 2961, 2960, 1203 // 2958-2959 1204 2957, 1205 // 2955-2956 1206 2954, 2953, 2952, 1207 // 2950-2951 1208 2949, 2948, 2947, 2946, 2945, 1209 // 2944 1210 2943, 1211 // 2942 1212 2941, 2940, 2939, 2938, 2937, 2936, 2935, 2934, 2933, 1213 // 2930-2932 1214 2929, 1215 // 2928 1216 2927, 1217 // 2925-2926 1218 2924, 2923, 2922, 2921, 2920, 2919, 2918, 2917, 2916, 1219 // 2915 1220 2914, 2913, 2912, 2911, 2910, 2909, 2908, 2907, 2906, 2905, 2904, 2903, 2902, 2901, 2900, 2899, 1221 2898, 1222 // 2897 1223 2896, 1224 // 2892-2895 1225 2891, 2890, 2889, 1226 // 2888 1227 2887, 2886, 2885, 2884, 2883, 1228 // 2881-2882 1229 2880, 2879, 2878, 2877, 2876, 2875, 1230 // 2874 1231 2873, 1232 // 2872 1233 2871, 2870, 2869, 2868, 1234 // 2866-2867 1235 2865, 1236 // 2864 1237 2863, 2862, 2861, 1238 // 2860 1239 2859, 2858, 2857, 2856, 1240 // 2855 1241 2854, 1242 // 2853 1243 2852, 1244 // 2851 1245 2850, 2849, 2848, 1246 // 2846-2847 1247 2845, 1248 // 2844 1249 2843, 1250 // 2842 1251 2841, 2840, 2839, 2838, 2837, 2836, 2835, 2834, 2833, 2832, 2831, 2830, 2829, 2828, 2827, 2826, 1252 2825, 1253 // 2824 1254 2823, 1255 // 2821-2822 1256 2820, 2819, 2818, 1257 // 2815-2817 1258 2814, 2813, 2812, 1259 // 2811 1260 2810, 2809, 2808, 2807, 1261 // 2805-2806 1262 2804, 1263 // 2802-2803 1264 2801, 1265 // 2799-2800 1266 2798, 2797, 2796, 2795, 2794, 1267 // 2793 1268 2792, 2791, 2790, 2789, 2788, 1269 // 2787 1270 2786, 1271 // 2785 1272 2784, 2783, 2782, 2781, 2780, 2779, 2778, 2777, 2776, 1273 // 2775 1274 2774, 2773, 2772, 1275 // 2771 1276 2770, 2769, 2768, 2767, 2766, 2765, 2764, 1277 // 2763 1278 2762, 2761, 1279 // 2758-2760 1280 2757, 2756, 2755, 1281 // 2751-2754 1282 2750, 2749, 2748, 2747, 1283 // 2742-2746 1284 2741, 1285 // 2739-2740 1286 2738, 2737, 2736, 2735, 2734, 1287 // 2733 1288 2732, 1289 // 2731 1290 2730, 2729, 2728, 2727, 2726, 1291 // 2725 1292 2724, 2723, 2722, 2721, 2720, 2719, 2718, 2717, 2716, 2715, 2714, 2713, 2712, 2711, 1293 // 2710 1294 2709, 1295 // 2708 1296 2707, 2706, 2705, 2704, 2703, 2702, 2701, 2700, 1297 // 2698-2699 1298 2697, 1299 // 2696 1300 2695, 2694, 2693, 2692, 2691, 2690, 2689, 2688, 2687, 2686, 1301 // 2685 1302 2684, 2683, 2682, 1303 // 2679-2681 1304 2678, 1305 // 2675-2677 1306 2674, 2673, 1307 // 2672 1308 2671, 2670, 1309 // 2668-2669 1310 2667, 1311 // 2665-2666 1312 2664, 1313 // 2663 1314 2662, 2661, 1315 // 2660 1316 2659, 2658, 1317 // 2657 1318 2656, 2655, 2654, 2653, 1319 // 2652 1320 2651, 2650, 1321 // 2649 1322 2648, 2647, 2646, 1323 // 2645 1324 2644, 2643, 1325 // 2642 1326 2641, 2640, 2639, 1327 // 2638 1328 2637, 1329 // 2635-2636 1330 2634, 1331 // 2633 1332 2632, 2631, 1333 // 2628-2630 1334 2627, 2626, 2625, 2624, 2623, 2622, 1335 // 2620-2621 1336 2619, 2618, 2617, 1337 // 2616 1338 2615, 1339 // 2614 1340 2613, 2612, 2611, 2610, 2609, 2608, 2607, 2606, 2605, 2604, 1341 // 2603 1342 2602, 2601, 2600, 2599, 1343 // 2597-2598 1344 2596, 2595, 2594, 2593, 2592, 2591, 2590, 2589, 2588, 2587, 2586, 2585, 2584, 1345 // 2583 1346 2582, 1347 // 2581 1348 2580, 1349 // 2578-2579 1350 2577, 1351 // 2576 1352 2575, 2574, 1353 // 2573 1354 2572, 2571, 2570, 1355 // 2565-2569 1356 2564, 1357 // 2562-2563 1358 2561, 2560, 2559, 1359 // 2558 1360 2557, 2556, 2555, 2554, 1361 // 2552-2553 1362 2551, 2550, 2549, 2548, 2547, 1363 // 2546 1364 2545, 1365 // 2544 1366 2543, 2542, 2541, 1367 // 2540 1368 2539, 1369 // 2537-2538 1370 2536, 2535, 2534, 2533, 2532, 1371 // 2525-2531 1372 2524, 2523, 2522, 1373 // 2521 1374 2520, 1375 // 2519 1376 2518, 2517, 2516, 2515, 2514, 2513, 1377 // 2511-2512 1378 2510, 2509, 2508, 2507, 2506, 2505, 2504, 2503, 2502, 1379 // 2501 1380 2500, 2499, 1381 // 2497-2498 1382 2496, 2495, 1383 // 2493-2494 1384 2492, 2491, 2490, 2489, 2488, 2487, 1385 // 2484-2486 1386 2483, 1387 // 2480-2482 1388 2479, 1389 // 2478 1390 2477, 2476, 2475, 2474, 2473, 2472, 2471, 2470, 2469, 2468, 2467, 2466, 2465, 2464, 2463, 2462, 1391 2461, 2460, 2459, 2458, 2457, 2456, 1392 // 2455 1393 2454, 1394 // 2453 1395 2452, 1396 // 2450-2451 1397 2449, 2448, 2447, 2446, 1398 // 2445 1399 2444, 1400 // 2443 1401 2442, 1402 // 2440-2441 1403 2439, 2438, 2437, 2436, 2435, 1404 // 2434 1405 2433, 2432, 2431, 2430, 2429, 1406 // 2428 1407 2427, 2426, 2425, 2424, 2423, 2422, 2421, 2420, 2419, 2418, 1408 // 2415-2417 1409 2414, 2413, 2412, 2411, 2410, 2409, 2408, 2407, 2406, 1410 // 2405 1411 2404, 2403, 2402, 2401, 1412 // 2400 1413 2399, 1414 // 2393-2398 1415 2392, 1416 // 2391 1417 2390, 2389, 2388, 2387, 2386, 2385, 2384, 2383, 2382, 1418 // 2380-2381 1419 2379, 1420 // 2378 1421 2377, 2376, 2375, 2374, 2373, 1422 // 2371-2372 1423 2370, 1424 // 2369 1425 2368, 1426 // 2367 1427 2366, 1428 // 2364-2365 1429 2363, 1430 // 2362 1431 2361, 2360, 2359, 2358, 1432 // 2357 1433 2356, 2355, 2354, 2353, 2352, 2351, 2350, 2349, 2348, 2347, 2346, 2345, 2344, 2343, 2342, 2341, 1434 2340, 1435 // 2338-2339 1436 2337, 2336, 2335, 2334, 2333, 2332, 1437 // 2331 1438 2330, 2329, 2328, 2327, 2326, 1439 // 2325 1440 2324, 2323, 1441 // 2320-2322 1442 2319, 2318, 1443 // 2317 1444 2316, 1445 // 2315 1446 2314, 2313, 2312, 1447 // 2310-2311 1448 2309, 1449 // 2308 1450 2307, 1451 // 2305-2306 1452 2304, 2303, 1453 // 2302 1454 2301, 2300, 2299, 1455 // 2296-2298 1456 2295, 2294, 2293, 1457 // 2292 1458 2291, 1459 // 2290 1460 2289, 2288, 2287, 2286, 2285, 2284, 2283, 1461 // 2282 1462 2281, 2280, 2279, 2278, 2277, 2276, 1463 // 2275 1464 2274, 2273, 1465 // 2271-2272 1466 2270, 2269, 1467 // 2264-2268 1468 2263, 1469 // 2262 1470 2261, 2260, 2259, 2258, 1471 // 2256-2257 1472 2255, 2254, 1473 // 2253 1474 2252, 1475 // 2250-2251 1476 2249, 2248, 2247, 2246, 1477 // 2245 1478 2244, 2243, 1479 // 2242 1480 2241, 2240, 1481 // 2238-2239 1482 2237, 2236, 2235, 2234, 2233, 2232, 2231, 1483 // 2230 1484 2229, 1485 // 2228 1486 2227, 1487 // 2222-2226 1488 2221, 1489 // 2220 1490 2219, 2218, 2217, 1491 // 2216 1492 2215, 1493 // 2212-2214 1494 2211, 2210, 1495 // 2208-2209 1496 2207, 2206, 1497 // 2204-2205 1498 2203, 2202, 2201, 2200, 2199, 2198, 2197, 2196, 1499 // 2193-2195 1500 2192, 2191, 2190, 2189, 1501 // 2187-2188 1502 2186, 2185, 2184, 1503 // 2183 1504 2182, 2181, 2180, 1505 // 2178-2179 1506 2177, 2176, 2175, 2174, 1507 // 2173 1508 2172, 2171, 1509 // 2169-2170 1510 2168, 2167, 2166, 1511 // 2164-2165 1512 2163, 1513 // 2162 1514 2161, 1515 // 2160 1516 2159, 2158, 1517 // 2157 1518 2156, 2155, 2154, 2153, 2152, 2151, 2150, 2149, 1519 // 2148 1520 2147, 1521 // 2146 1522 2145, 2144, 2143, 2142, 2141, 2140, 2139, 2138, 1523 // 2137 1524 2136, 1525 // 2135 1526 2134, 1527 // 2133 1528 2132, 1529 // 2131 1530 2130, 1531 // 2128-2129 1532 2127, 2126, 1533 // 2125 1534 2124, 2123, 1535 // 2122 1536 2121, 1537 // 2120 1538 2119, 2118, 1539 // 2117 1540 2116, 2115, 2114, 2113, 2112, 2111, 2110, 2109, 2108, 2107, 2106, 1541 // 2105 1542 2104, 2103, 2102, 1543 // 2101 1544 2100, 2099, 2098, 1545 // 2097 1546 2096, 2095, 2094, 2093, 1547 // 2092 1548 2091, 1549 // 2090 1550 2089, 2088, 2087, 2086, 2085, 2084, 2083, 1551 // 2082 1552 2081, 2080, 2079, 2078, 2077, 2076, 2075, 1553 // 2074 1554 2073, 2072, 1555 // 2071 1556 2070, 2069, 2068, 2067, 1557 // 2065-2066 1558 2064, 1559 // 2063 1560 2062, 1561 // 2061 1562 2060, 2059, 2058, 1563 // 2057 1564 2056, 1565 // 2055 1566 2054, 1567 // 2052-2053 1568 2051, 2050, 2049, 2048, 2047, 2046, 2045, 2044, 2043, 2042, 2041, 1569 // 2039-2040 1570 2038, 2037, 2036, 1571 // 2034-2035 1572 2033, 2032, 2031, 2030, 2029, 2028, 2027, 2026, 2025, 2024, 2023, 1573 // 2021-2022 1574 2020, 2019, 2018, 1575 // 2017 1576 2016, 1577 // 2015 1578 2014, 2013, 1579 // 2012 1580 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 1581 // 2001 1582 2000, 1999, 1998, 1583 // 1996-1997 1584 1995, 1994, 1993, 1992, 1991, 1585 // 1988-1990 1586 1987, 1986, 1985, 1984, 1983, 1982, 1981, 1980, 1979, 1978, 1587 // 1977 1588 1976, 1975, 1974, 1973, 1972, 1971, 1970, 1969, 1589 // 1968 1590 1967, 1966, 1965, 1964, 1963, 1962, 1961, 1960, 1959, 1958, 1957, 1591 // 1956 1592 1955, 1593 // 1954 1594 1953, 1952, 1595 // 1951 1596 1950, 1949, 1597 // 1948 1598 1947, 1946, 1945, 1944, 1599 // 1943 1600 1942, 1941, 1940, 1939, 1938, 1601 // 1937 1602 1936, 1935, 1603 // 1934 1604 1933, 1932, 1605 // 1930-1931 1606 1929, 1928, 1927, 1926, 1925, 1607 // 1923-1924 1608 1922, 1921, 1920, 1919, 1609 // 1917-1918 1610 1916, 1915, 1611 // 1914 1612 1913, 1912, 1911, 1910, 1909, 1908, 1907, 1906, 1905, 1904, 1903, 1902, 1901, 1900, 1899, 1898, 1613 1897, 1896, 1614 // 1894-1895 1615 1893, 1892, 1616 // 1891 1617 1890, 1618 // 1888-1889 1619 1887, 1886, 1885, 1620 // 1884 1621 1883, 1882, 1881, 1880, 1622 // 1879 1623 1878, 1877, 1624 // 1876 1625 1875, 1874, 1873, 1872, 1871, 1626 // 1870 1627 1869, 1868, 1867, 1866, 1865, 1864, 1863, 1862, 1628 // 1861 1629 1860, 1859, 1630 // 1858 1631 1857, 1856, 1632 // 1853-1855 1633 1852, 1634 // 1851 1635 1850, 1636 // 1849 1637 1848, 1847, 1638 // 1845-1846 1639 1844, 1843, 1842, 1841, 1640 // 1840 1641 1839, 1642 // 1838 1643 1837, 1644 // 1836 1645 1835, 1834, 1833, 1646 // 1832 1647 1831, 1830, 1829, 1828, 1827, 1648 // 1824-1826 1649 1823, 1822, 1650 // 1821 1651 1820, 1652 // 1819 1653 1818, 1817, 1816, 1815, 1654 // 1813-1814 1655 1812, 1656 // 1811 1657 1810, 1658 // 1809 1659 1808, 1660 // 1807 1661 1806, 1805, 1804, 1803, 1802, 1801, 1800, 1799, 1798, 1797, 1662 // 1795-1796 1663 1794, 1793, 1792, 1791, 1790, 1664 // 1789 1665 1788, 1787, 1786, 1785, 1784, 1783, 1666 // 1782 1667 1781, 1780, 1779, 1778, 1777, 1776, 1775, 1774, 1773, 1772, 1668 // 1771 1669 1770, 1670 // 1769 1671 1768, 1767, 1766, 1765, 1764, 1763, 1762, 1761, 1760, 1759, 1758, 1757, 1756, 1672 // 1755 1673 1754, 1674 // 1752-1753 1675 1751, 1750, 1749, 1748, 1747, 1746, 1745, 1676 // 1744 1677 1743, 1742, 1741, 1740, 1739, 1738, 1737, 1736, 1735, 1734, 1733, 1678 // 1732 1679 1731, 1730, 1680 // 1729 1681 1728, 1727, 1726, 1725, 1724, 1682 // 1723 1683 1722, 1721, 1720, 1684 // 1718-1719 1685 1717, 1716, 1715, 1714, 1713, 1686 // 1711-1712 1687 1710, 1709, 1708, 1707, 1706, 1705, 1704, 1703, 1702, 1688 // 1701 1689 1700, 1690 // 1699 1691 1698, 1697, 1696, 1695, 1692 // 1694 1693 1693, 1694 // 1690-1692 1695 1689, 1696 // 1688 1697 1687, 1686, 1698 // 1685 1699 1684, 1700 // 1682-1683 1701 1681, 1680, 1679, 1678, 1677, 1676, 1675, 1674, 1673, 1672, 1702 // 1671 1703 1670, 1704 // 1669 1705 1668, 1667, 1666, 1665, 1706 // 1664 1707 1663, 1708 // 1662 1709 1661, 1660, 1659, 1658, 1710 // 1657 1711 1656, 1655, 1654, 1653, 1652, 1651, 1712 // 1650 1713 1649, 1648, 1647, 1646, 1645, 1714 // 1644 1715 1643, 1642, 1716 // 1641 1717 1640, 1639, 1638, 1718 // 1636-1637 1719 1635, 1634, 1633, 1632, 1631, 1630, 1629, 1720 // 1627-1628 1721 1626, 1625, 1624, 1623, 1622, 1621, 1722 // 1619-1620 1723 1618, 1724 // 1614-1617 1725 1613, 1612, 1726 // 1610-1611 1727 1609, 1608, 1607, 1728 // 1606 1729 1605, 1730 // 1601-1604 1731 1600, 1599, 1598, 1732 // 1597 1733 1596, 1595, 1594, 1734 // 1592-1593 1735 1591, 1736 // 1590 1737 1589, 1588, 1587, 1586, 1585, 1584, 1583, 1738 // 1581-1582 1739 1580, 1579, 1578, 1740 // 1571-1577 1741 1570, 1742 // 1569 1743 1568, 1567, 1566, 1565, 1564, 1744 // 1562-1563 1745 1561, 1560, 1559, 1746 // 1558 1747 1557, 1748 // 1556 1749 1555, 1554, 1553, 1552, 1750 // 1550-1551 1751 1549, 1548, 1547, 1546, 1545, 1544, 1543, 1542, 1752 // 1541 1753 1540, 1754 // 1538-1539 1755 1537, 1536, 1535, 1756 // 1533-1534 1757 1532, 1531, 1530, 1529, 1528, 1758 // 1527 1759 1526, 1760 // 1525 1761 1524, 1523, 1522, 1521, 1520, 1762 // 1518-1519 1763 1517, 1516, 1515, 1764 // 1514 1765 1513, 1512, 1511, 1510, 1766 // 1509 1767 1508, 1507, 1506, 1505, 1768 // 1504 1769 1503, 1770 // 1502 1771 1501, 1500, 1772 // 1498-1499 1773 1497, 1774 // 1496 1775 1495, 1776 // 1494 1777 1493, 1778 // 1491-1492 1779 1490, 1489, 1488, 1487, 1780 // 1485-1486 1781 1484, 1483, 1782 // 1482 1783 1481, 1784 // 1480 1785 1479, 1786 // 1477-1478 1787 1476, 1788 // 1475 1789 1474, 1473, 1472, 1471, 1470, 1469, 1790 // 1468 1791 1467, 1466, 1465, 1464, 1463, 1462, 1461, 1792 // 1459-1460 1793 1458, 1457, 1456, 1455, 1454, 1453, 1452, 1451, 1450, 1449, 1448, 1794 // 1447 1795 1446, 1445, 1796 // 1444 1797 1443, 1442, 1441, 1440, 1798 // 1439 1799 1438, 1800 // 1437 1801 1436, 1802 // 1435 1803 1434, 1433, 1804 // 1430-1432 1805 1429, 1428, 1427, 1806 // 1426 1807 1425, 1424, 1808 // 1423 1809 1422, 1421, 1420, 1419, 1810 // 1418 1811 1417, 1812 // 1416 1813 1415, 1414, 1413, 1814 // 1412 1815 1411, 1410, 1409, 1408, 1407, 1406, 1405, 1404, 1816 // 1403 1817 1402, 1401, 1400, 1818 // 1399 1819 1398, 1397, 1396, 1395, 1394, 1393, 1820 // 1392 1821 1391, 1390, 1389, 1388, 1822 // 1387 1823 1386, 1385, 1384, 1383, 1824 // 1382 1825 1381, 1826 // 1380 1827 1379, 1378, 1377, 1828 // 1376 1829 1375, 1374, 1830 // 1371-1373 1831 1370, 1369, 1832 // 1367-1368 1833 1366, 1834 // 1365 1835 1364, 1836 // 1362-1363 1837 1361, 1360, 1838 // 1359 1839 1358, 1357, 1356, 1840 // 1355 1841 1354, 1353, 1352, 1351, 1350, 1842 // 1349 1843 1348, 1347, 1346, 1345, 1344, 1844 // 1341-1343 1845 1340, 1339, 1338, 1337, 1336, 1335, 1334, 1846 // 1332-1333 1847 1331, 1330, 1848 // 1328-1329 1849 1327, 1850 // 1322-1326 1851 1321, 1320, 1319, 1318, 1317, 1316, 1315, 1852 // 1313-1314 1853 1312, 1311, 1310, 1309, 1854 // 1308 1855 1307, 1306, 1305, 1304, 1303, 1302, 1301, 1856 // 1300 1857 1299, 1298, 1297, 1296, 1295, 1294, 1293, 1292, 1291, 1858 // 1290 1859 1289, 1860 // 1288 1861 1287, 1862 // 1286 1863 1285, 1284, 1283, 1282, 1281, 1280, 1279, 1278, 1277, 1864 // 1276 1865 1275, 1274, 1273, 1866 // 1272 1867 1271, 1270, 1269, 1868 // 1268 1869 1267, 1266, 1265, 1264, 1870 // 1263 1871 1262, 1261, 1260, 1259, 1872 // 1257-1258 1873 1256, 1255, 1254, 1874 // 1253 1875 1252, 1251, 1250, 1249, 1248, 1247, 1246, 1245, 1244, 1876 // 1243 1877 1242, 1241, 1240, 1878 // 1239 1879 1238, 1880 // 1237 1881 1236, 1882 // 1235 1883 1234, 1233, 1232, 1231, 1230, 1884 // 1229 1885 1228, 1886 // 1227 1887 1226, 1225, 1224, 1223, 1222, 1221, 1888 // 1220 1889 1219, 1890 // 1218 1891 1217, 1216, 1215, 1214, 1892 // 1213 1893 1212, 1211, 1210, 1209, 1208, 1207, 1206, 1894 // 1204-1205 1895 1203, 1202, 1201, 1200, 1199, 1198, 1197, 1196, 1195, 1194, 1193, 1896 // 1191-1192 1897 1190, 1189, 1188, 1187, 1186, 1898 // 1185 1899 1184, 1900 // 1182-1183 1901 1181, 1180, 1179, 1902 // 1178 1903 1177, 1904 // 1176 1905 1175, 1174, 1173, 1172, 1171, 1170, 1169, 1168, 1906 // 1167 1907 1166, 1165, 1164, 1163, 1162, 1161, 1908 // 1160 1909 1159, 1910 // 1157-1158 1911 1156, 1912 // 1154-1155 1913 1153, 1152, 1914 // 1150-1151 1915 1149, 1148, 1147, 1916 // 1146 1917 1145, 1918 // 1140-1144 1919 1139, 1920 // 1136-1138 1921 1135, 1134, 1922 // 1132-1133 1923 1131, 1130, 1129, 1128, 1127, 1924 // 1126 1925 1125, 1124, 1123, 1926 // 1122 1927 1121, 1928 // 1120 1929 1119, 1118, 1117, 1930 // 1116 1931 1115, 1114, 1113, 1932 // 1112 1933 1111, 1110, 1109, 1108, 1107, 1106, 1934 // 1105 1935 1104, 1103, 1102, 1101, 1100, 1099, 1098, 1936 // 1096-1097 1937 1095, 1094, 1093, 1092, 1938 // 1090-1091 1939 1089, 1088, 1087, 1086, 1085, 1084, 1083, 1082, 1940 // 1081 1941 1080, 1079, 1078, 1942 // 1077 1943 1076, 1075, 1074, 1073, 1072, 1071, 1070, 1069, 1068, 1067, 1944 // 1066 1945 1065, 1064, 1063, 1062, 1061, 1060, 1059, 1058, 1057, 1056, 1055, 1054, 1053, 1052, 1051, 1050, 1946 1049, 1048, 1047, 1046, 1045, 1044, 1043, 1947 // 1042 1948 1041, 1040, 1949 // 1039 1950 1038, 1037, 1036, 1035, 1034, 1033, 1951 // 1032 1952 1031, 1030, 1029, 1953 // 1028 1954 1027, 1026, 1025, 1955 // 1023-1024 1956 1022, 1021, 1020, 1957 // 1019 1958 1018, 1017, 1016, 1959 // 1015 1960 1014, 1013, 1961 // 1011-1012 1962 1010, 1009, 1008, 1007, 1006, 1005, 1004, 1963 // 1003 1964 1002, 1001, 1000, 999, 998, 997, 996, 1965 // 995 1966 994, 993, 1967 // 992 1968 991, 1969 // 990 1970 989, 1971 // 988 1972 987, 986, 985, 984, 983, 982, 981, 980, 979, 978, 1973 // 977 1974 976, 975, 974, 1975 // 972-973 1976 971, 1977 // 970 1978 969, 968, 967, 966, 965, 964, 963, 962, 1979 // 960-961 1980 959, 958, 957, 956, 955, 954, 953, 952, 951, 950, 949, 948, 1981 // 947 1982 946, 945, 944, 943, 942, 941, 940, 939, 938, 937, 936, 935, 934, 933, 932, 931, 1983 930, 929, 928, 927, 926, 925, 924, 923, 922, 921, 920, 919, 918, 917, 916, 915, 1984 914, 913, 912, 911, 910, 909, 908, 907, 1985 // 906 1986 905, 1987 // 904 1988 903, 902, 901, 1989 // 900 1990 899, 1991 // 897-898 1992 896, 895, 894, 893, 892, 891, 890, 889, 1993 // 888 1994 887, 886, 885, 884, 883, 882, 881, 880, 879, 1995 // 878 1996 877, 876, 1997 // 875 1998 874, 873, 872, 871, 870, 869, 868, 867, 866, 865, 864, 1999 // 863 2000 862, 861, 860, 859, 2001 // 858 2002 857, 856, 855, 854, 853, 852, 851, 2003 // 850 2004 849, 2005 // 847-848 2006 846, 845, 844, 843, 842, 841, 840, 839, 838, 837, 836, 835, 2007 // 834 2008 833, 832, 831, 830, 829, 828, 827, 826, 825, 824, 823, 822, 821, 2009 // 820 2010 819, 818, 817, 816, 815, 814, 813, 812, 811, 810, 809, 808, 807, 806, 805, 804, 2011 803, 802, 801, 800, 799, 798, 797, 796, 795, 794, 793, 792, 791, 790, 789, 788, 2012 787, 786, 785, 784, 783, 782, 781, 780, 779, 778, 777, 776, 2013 // 775 2014 774, 773, 772, 2015 // 771 2016 770, 769, 768, 767, 766, 765, 764, 763, 762, 761, 760, 759, 758, 757, 756, 2017 // 755 2018 754, 753, 752, 2019 // 751 2020 750, 749, 2021 // 747-748 2022 746, 2023 // 745 2024 744, 2025 // 743 2026 742, 741, 740, 739, 2027 // 737-738 2028 736, 735, 734, 733, 732, 731, 2029 // 729-730 2030 728, 727, 726, 725, 724, 723, 722, 721, 720, 719, 2031 // 718 2032 717, 716, 715, 714, 713, 712, 711, 710, 709, 708, 707, 706, 705, 704, 703, 702, 2033 701, 700, 2034 // 699 2035 698, 697, 696, 695, 2036 // 694 2037 693, 692, 691, 690, 689, 688, 687, 686, 685, 2038 // 683-684 2039 682, 681, 680, 2040 // 679 2041 678, 2042 // 677 2043 676, 2044 // 675 2045 674, 673, 672, 671, 670, 669, 668, 667, 666, 665, 664, 663, 2046 // 661-662 2047 660, 659, 658, 657, 2048 // 656 2049 655, 654, 2050 // 652-653 2051 651, 2052 // 650 2053 649, 648, 2054 // 647 2055 646, 645, 644, 643, 642, 2056 // 641 2057 640, 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, 629, 628, 2058 // 626-627 2059 625, 2060 // 624 2061 623, 622, 621, 620, 619, 618, 617, 616, 615, 614, 2062 // 613 2063 612, 2064 // 611 2065 610, 609, 608, 607, 606, 605, 2066 // 604 2067 603, 602, 2068 // 601 2069 600, 599, 598, 597, 2070 // 595-596 2071 594, 593, 592, 591, 590, 589, 2072 // 588 2073 587, 2074 // 585-586 2075 584, 583, 2076 // 582 2077 581, 580, 579, 578, 577, 576, 575, 2078 // 574 2079 573, 572, 2080 // 570-571 2081 569, 568, 2082 // 567 2083 566, 565, 564, 2084 // 562-563 2085 561, 560, 559, 558, 2086 // 557 2087 556, 555, 554, 553, 552, 551, 550, 549, 548, 547, 546, 545, 544, 2088 // 543 2089 542, 541, 540, 539, 538, 2090 // 536-537 2091 535, 534, 533, 532, 531, 2092 // 528-530 2093 527, 2094 // 526 2095 525, 524, 2096 // 523 2097 522, 521, 520, 519, 2098 // 516-518 2099 515, 2100 // 514 2101 513, 512, 511, 510, 509, 508, 507, 506, 505, 504, 503, 502, 501, 2102 // 500 2103 499, 498, 497, 496, 495, 494, 2104 // 493 2105 492, 491, 490, 489, 488, 487, 2106 // 486 2107 485, 484, 483, 482, 481, 480, 479, 478, 477, 476, 475, 474, 473, 472, 471, 470, 2108 469, 468, 2109 // 467 2110 466, 465, 464, 463, 462, 461, 460, 2111 // 459 2112 458, 457, 456, 455, 454, 2113 // 453 2114 452, 451, 450, 449, 448, 447, 446, 445, 444, 443, 442, 441, 440, 439, 438, 437, 2115 436, 435, 434, 433, 2116 // 432 2117 431, 430, 429, 428, 2118 // 427 2119 426, 2120 // 425 2121 424, 423, 422, 2122 // 421 2123 420, 419, 418, 417, 416, 415, 414, 413, 412, 411, 410, 409, 408, 407, 406, 405, 2124 404, 403, 402, 401, 400, 2125 // 399 2126 398, 397, 396, 395, 394, 393, 392, 391, 390, 389, 388, 387, 2127 // 386 2128 385, 384, 383, 382, 381, 380, 379, 378, 377, 376, 375, 374, 373, 372, 371, 370, 2129 369, 368, 2130 // 367 2131 366, 365, 2132 // 364 2133 363, 362, 361, 360, 359, 358, 357, 2134 // 356 2135 355, 354, 353, 352, 351, 350, 349, 348, 347, 2136 // 346 2137 345, 2138 // 344 2139 343, 342, 2140 // 341 2141 340, 2142 // 339 2143 338, 337, 336, 335, 2144 // 334 2145 333, 332, 2146 // 331 2147 330, 329, 2148 // 328 2149 327, 326, 325, 2150 // 324 2151 323, 2152 // 322 2153 321, 2154 // 318-320 2155 317, 316, 315, 314, 313, 312, 2156 // 311 2157 310, 309, 308, 307, 2158 // 306 2159 305, 304, 303, 302, 301, 300, 2160 // 298-299 2161 297, 296, 295, 294, 293, 292, 2162 // 290-291 2163 289, 288, 287, 2164 // 286 2165 285, 284, 283, 282, 281, 280, 2166 // 279 2167 278, 277, 276, 275, 274, 273, 272, 271, 270, 269, 268, 267, 266, 265, 264, 263, 2168 262, 261, 260, 259, 2169 // 258 2170 257, 2171 // 256 2172 255, 254, 2173 // 253 2174 252, 2175 // 251 2176 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, 2177 // 238 2178 237, 236, 235, 234, 233, 2179 // 232 2180 231, 230, 229, 228, 227, 226, 225, 224, 223, 2181 // 222 2182 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 2183 // 209 2184 208, 2185 // 207 2186 206, 205, 2187 // 204 2188 203, 2189 // 201-202 2190 200, 2191 // 199 2192 198, 197, 2193 // 196 2194 195, 2195 // 194 2196 193, 192, 2197 // 191 2198 190, 189, 188, 187, 186, 2199 // 185 2200 184, 183, 2201 // 182 2202 181, 180, 179, 178, 177, 176, 175, 174, 2203 // 173 2204 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 2205 // 159-160 2206 158, 157, 156, 155, 154, 153, 152, 151, 2207 // 149-150 2208 148, 147, 146, 145, 144, 143, 2209 // 142 2210 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 2211 // 130 2212 129, 128, 2213 // 127 2214 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 2215 // 110 2216 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, 2217 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 2218 77, 76, 75, 74, 2219 // 73 2220 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 2221 56, 55, 54, 53, 52, 51, 50, 49, 2222 // 48 2223 47, 46, 45, 44, 2224 // 43 2225 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 2226 26, 25, 24, 23, 22, 2227 // 20-21 2228 19, 18, 17, 16, 15, 14, 13, 12, 2229 // 11 2230 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 2231 // 0 2232 }, 2233 (const int[]) { // 900 2234 2190, 2189, 2188, 2187, 2235 // 2186 2236 2185, 2237 // 2184 2238 2183, 2182, 2239 // 2181 2240 2180, 2179, 2178, 2177, 2241 // 2176 2242 2175, 2243 // 2174 2244 2173, 2245 // 2169-2172 2246 2168, 2247 // 2167 2248 2166, 2249 // 2164-2165 2250 2163, 2251 // 2162 2252 2161, 2253 // 2160 2254 2159, 2158, 2255 // 2156-2157 2256 2155, 2154, 2257 // 2152-2153 2258 2151, 2150, 2149, 2148, 2259 // 2147 2260 2146, 2145, 2261 // 2144 2262 2143, 2142, 2141, 2140, 2139, 2138, 2137, 2136, 2135, 2134, 2133, 2263 // 2132 2264 2131, 2265 // 2130 2266 2129, 2128, 2267 // 2127 2268 2126, 2125, 2124, 2269 // 2123 2270 2122, 2121, 2120, 2119, 2118, 2117, 2116, 2115, 2114, 2113, 2112, 2111, 2110, 2109, 2108, 2107, 2271 2106, 2105, 2104, 2103, 2102, 2101, 2100, 2272 // 2099 2273 2098, 2097, 2274 // 2096 2275 2095, 2094, 2276 // 2093 2277 2092, 2091, 2090, 2278 // 2089 2279 2088, 2087, 2280 // 2084-2086 2281 2083, 2282 // 2082 2283 2081, 2080, 2079, 2284 // 2078 2285 2077, 2286 // 2076 2287 2075, 2074, 2073, 2072, 2071, 2070, 2288 // 2069 2289 2068, 2067, 2066, 2065, 2064, 2063, 2062, 2061, 2060, 2059, 2058, 2057, 2056, 2290 // 2054-2055 2291 2053, 2052, 2051, 2050, 2049, 2048, 2047, 2046, 2045, 2044, 2043, 2042, 2041, 2040, 2039, 2038, 2292 2037, 2036, 2035, 2293 // 2034 2294 2033, 2032, 2031, 2030, 2295 // 2029 2296 2028, 2297 // 2026-2027 2298 2025, 2024, 2023, 2022, 2021, 2299 // 2019-2020 2300 2018, 2017, 2016, 2301 // 2015 2302 2014, 2303 // 2012-2013 2304 2011, 2010, 2009, 2008, 2007, 2006, 2305 // 2005 2306 2004, 2003, 2002, 2307 // 2001 2308 2000, 2309 // 1999 2310 1998, 1997, 1996, 1995, 2311 // 1994 2312 1993, 1992, 2313 // 1991 2314 1990, 1989, 1988, 1987, 2315 // 1986 2316 1985, 1984, 1983, 2317 // 1982 2318 1981, 2319 // 1980 2320 1979, 1978, 2321 // 1977 2322 1976, 1975, 1974, 1973, 1972, 1971, 1970, 1969, 1968, 1967, 1966, 1965, 1964, 1963, 1962, 1961, 2323 1960, 2324 // 1959 2325 1958, 2326 // 1957 2327 1956, 2328 // 1955 2329 1954, 2330 // 1953 2331 1952, 2332 // 1951 2333 1950, 1949, 2334 // 1948 2335 1947, 1946, 2336 // 1945 2337 1944, 1943, 1942, 2338 // 1941 2339 1940, 1939, 1938, 1937, 1936, 2340 // 1935 2341 1934, 2342 // 1933 2343 1932, 1931, 1930, 1929, 2344 // 1928 2345 1927, 2346 // 1926 2347 1925, 2348 // 1924 2349 1923, 1922, 1921, 2350 // 1920 2351 1919, 1918, 1917, 2352 // 1916 2353 1915, 2354 // 1914 2355 1913, 1912, 1911, 2356 // 1909-1910 2357 1908, 1907, 2358 // 1906 2359 1905, 1904, 1903, 1902, 2360 // 1901 2361 1900, 1899, 2362 // 1898 2363 1897, 1896, 1895, 1894, 1893, 1892, 1891, 2364 // 1890 2365 1889, 1888, 1887, 2366 // 1885-1886 2367 1884, 1883, 1882, 1881, 1880, 1879, 1878, 1877, 2368 // 1876 2369 1875, 1874, 1873, 1872, 1871, 1870, 2370 // 1869 2371 1868, 2372 // 1867 2373 1866, 2374 // 1865 2375 1864, 1863, 2376 // 1862 2377 1861, 1860, 1859, 1858, 1857, 1856, 2378 // 1855 2379 1854, 1853, 1852, 2380 // 1851 2381 1850, 1849, 1848, 1847, 1846, 1845, 1844, 1843, 2382 // 1842 2383 1841, 1840, 1839, 1838, 1837, 2384 // 1836 2385 1835, 1834, 1833, 1832, 1831, 1830, 2386 // 1829 2387 1828, 2388 // 1827 2389 1826, 1825, 1824, 1823, 2390 // 1821-1822 2391 1820, 1819, 2392 // 1818 2393 1817, 1816, 1815, 2394 // 1814 2395 1813, 1812, 1811, 1810, 1809, 1808, 1807, 2396 // 1806 2397 1805, 2398 // 1804 2399 1803, 1802, 2400 // 1801 2401 1800, 1799, 1798, 1797, 2402 // 1796 2403 1795, 1794, 1793, 1792, 1791, 1790, 2404 // 1788-1789 2405 1787, 2406 // 1786 2407 1785, 2408 // 1784 2409 1783, 2410 // 1782 2411 1781, 1780, 1779, 1778, 1777, 1776, 1775, 1774, 1773, 1772, 1771, 2412 // 1769-1770 2413 1768, 1767, 1766, 1765, 1764, 1763, 1762, 1761, 2414 // 1760 2415 1759, 1758, 1757, 2416 // 1756 2417 1755, 1754, 1753, 1752, 1751, 1750, 2418 // 1749 2419 1748, 1747, 1746, 1745, 2420 // 1744 2421 1743, 1742, 2422 // 1740-1741 2423 1739, 1738, 1737, 1736, 1735, 1734, 1733, 1732, 1731, 1730, 1729, 1728, 2424 // 1727 2425 1726, 1725, 1724, 1723, 1722, 1721, 1720, 2426 // 1719 2427 1718, 1717, 1716, 1715, 1714, 1713, 1712, 1711, 1710, 1709, 1708, 1707, 1706, 1705, 1704, 1703, 2428 1702, 1701, 1700, 2429 // 1699 2430 1698, 1697, 1696, 2431 // 1695 2432 1694, 1693, 1692, 1691, 1690, 1689, 1688, 1687, 1686, 1685, 1684, 1683, 1682, 1681, 1680, 1679, 2433 1678, 1677, 1676, 1675, 2434 // 1674 2435 1673, 1672, 1671, 1670, 1669, 1668, 1667, 1666, 1665, 1664, 1663, 1662, 1661, 2436 // 1660 2437 1659, 1658, 1657, 1656, 1655, 1654, 1653, 1652, 1651, 2438 // 1650 2439 1649, 1648, 1647, 1646, 1645, 1644, 1643, 1642, 2440 // 1641 2441 1640, 1639, 1638, 1637, 1636, 1635, 1634, 1633, 1632, 1631, 1630, 1629, 1628, 1627, 1626, 2442 // 1623-1625 2443 1622, 1621, 1620, 2444 // 1619 2445 1618, 1617, 1616, 1615, 1614, 1613, 1612, 2446 // 1611 2447 1610, 1609, 1608, 1607, 1606, 2448 // 1604-1605 2449 1603, 1602, 1601, 1600, 1599, 1598, 1597, 1596, 1595, 2450 // 1592-1594 2451 1591, 2452 // 1589-1590 2453 1588, 1587, 1586, 1585, 1584, 1583, 1582, 2454 // 1581 2455 1580, 2456 // 1579 2457 1578, 1577, 2458 // 1576 2459 1575, 2460 // 1574 2461 1573, 2462 // 1569-1572 2463 1568, 1567, 2464 // 1566 2465 1565, 1564, 1563, 1562, 1561, 2466 // 1557-1560 2467 1556, 1555, 1554, 1553, 1552, 1551, 2468 // 1550 2469 1549, 1548, 1547, 1546, 1545, 2470 // 1544 2471 1543, 1542, 1541, 1540, 1539, 1538, 2472 // 1537 2473 1536, 1535, 1534, 1533, 1532, 2474 // 1531 2475 1530, 2476 // 1528-1529 2477 1527, 1526, 1525, 1524, 1523, 1522, 1521, 1520, 2478 // 1519 2479 1518, 1517, 1516, 1515, 1514, 1513, 1512, 1511, 2480 // 1510 2481 1509, 1508, 1507, 1506, 1505, 2482 // 1504 2483 1503, 1502, 1501, 1500, 1499, 1498, 1497, 2484 // 1496 2485 1495, 1494, 1493, 1492, 1491, 1490, 1489, 1488, 1487, 1486, 1485, 1484, 1483, 2486 // 1481-1482 2487 1480, 1479, 1478, 1477, 1476, 1475, 1474, 1473, 1472, 2488 // 1471 2489 1470, 1469, 1468, 1467, 1466, 1465, 1464, 2490 // 1463 2491 1462, 1461, 1460, 2492 // 1459 2493 1458, 2494 // 1457 2495 1456, 1455, 2496 // 1453-1454 2497 1452, 1451, 2498 // 1450 2499 1449, 1448, 1447, 1446, 1445, 1444, 1443, 1442, 1441, 2500 // 1440 2501 1439, 1438, 1437, 1436, 1435, 1434, 1433, 2502 // 1432 2503 1431, 1430, 1429, 1428, 1427, 1426, 1425, 2504 // 1424 2505 1423, 1422, 1421, 1420, 1419, 2506 // 1418 2507 1417, 1416, 1415, 2508 // 1413-1414 2509 1412, 2510 // 1410-1411 2511 1409, 1408, 1407, 1406, 1405, 2512 // 1403-1404 2513 1402, 1401, 1400, 2514 // 1398-1399 2515 1397, 2516 // 1396 2517 1395, 1394, 1393, 1392, 1391, 2518 // 1390 2519 1389, 1388, 2520 // 1387 2521 1386, 1385, 1384, 1383, 1382, 2522 // 1381 2523 1380, 2524 // 1379 2525 1378, 2526 // 1377 2527 1376, 2528 // 1375 2529 1374, 1373, 1372, 1371, 1370, 1369, 1368, 1367, 1366, 1365, 1364, 1363, 1362, 1361, 1360, 1359, 2530 1358, 1357, 1356, 1355, 1354, 1353, 1352, 1351, 1350, 1349, 1348, 1347, 1346, 1345, 2531 // 1343-1344 2532 1342, 1341, 1340, 1339, 2533 // 1338 2534 1337, 1336, 1335, 2535 // 1333-1334 2536 1332, 1331, 1330, 1329, 2537 // 1325-1328 2538 1324, 1323, 1322, 2539 // 1320-1321 2540 1319, 1318, 2541 // 1317 2542 1316, 1315, 1314, 2543 // 1313 2544 1312, 1311, 1310, 1309, 1308, 1307, 1306, 2545 // 1304-1305 2546 1303, 2547 // 1301-1302 2548 1300, 1299, 1298, 1297, 1296, 1295, 1294, 1293, 1292, 1291, 1290, 1289, 1288, 2549 // 1283-1287 2550 1282, 1281, 1280, 1279, 1278, 1277, 2551 // 1275-1276 2552 1274, 1273, 1272, 1271, 1270, 1269, 1268, 2553 // 1266-1267 2554 1265, 2555 // 1264 2556 1263, 2557 // 1262 2558 1261, 1260, 1259, 1258, 1257, 1256, 1255, 2559 // 1254 2560 1253, 2561 // 1251-1252 2562 1250, 2563 // 1248-1249 2564 1247, 1246, 1245, 1244, 1243, 1242, 2565 // 1241 2566 1240, 2567 // 1239 2568 1238, 2569 // 1237 2570 1236, 2571 // 1234-1235 2572 1233, 2573 // 1232 2574 1231, 1230, 1229, 1228, 1227, 2575 // 1226 2576 1225, 2577 // 1224 2578 1223, 1222, 1221, 2579 // 1220 2580 1219, 2581 // 1218 2582 1217, 1216, 1215, 1214, 1213, 1212, 1211, 2583 // 1209-1210 2584 1208, 1207, 1206, 1205, 1204, 2585 // 1203 2586 1202, 1201, 1200, 2587 // 1198-1199 2588 1197, 2589 // 1196 2590 1195, 1194, 2591 // 1193 2592 1192, 1191, 1190, 1189, 2593 // 1188 2594 1187, 2595 // 1184-1186 2596 1183, 1182, 1181, 1180, 2597 // 1178-1179 2598 1177, 1176, 1175, 1174, 1173, 1172, 1171, 1170, 2599 // 1168-1169 2600 1167, 2601 // 1166 2602 1165, 1164, 1163, 1162, 2603 // 1159-1161 2604 1158, 2605 // 1157 2606 1156, 1155, 1154, 1153, 2607 // 1148-1152 2608 1147, 2609 // 1146 2610 1145, 1144, 1143, 1142, 1141, 2611 // 1140 2612 1139, 1138, 1137, 1136, 1135, 2613 // 1133-1134 2614 1132, 1131, 2615 // 1130 2616 1129, 2617 // 1128 2618 1127, 2619 // 1126 2620 1125, 2621 // 1123-1124 2622 1122, 1121, 1120, 1119, 2623 // 1117-1118 2624 1116, 1115, 1114, 1113, 2625 // 1111-1112 2626 1110, 1109, 2627 // 1108 2628 1107, 1106, 1105, 1104, 1103, 1102, 1101, 1100, 1099, 1098, 1097, 1096, 2629 // 1095 2630 1094, 1093, 1092, 1091, 1090, 1089, 1088, 2631 // 1086-1087 2632 1085, 1084, 1083, 1082, 2633 // 1080-1081 2634 1079, 1078, 2635 // 1077 2636 1076, 1075, 2637 // 1073-1074 2638 1072, 1071, 2639 // 1068-1070 2640 1067, 1066, 2641 // 1065 2642 1064, 2643 // 1063 2644 1062, 1061, 2645 // 1060 2646 1059, 2647 // 1058 2648 1057, 1056, 1055, 2649 // 1053-1054 2650 1052, 1051, 1050, 1049, 2651 // 1048 2652 1047, 1046, 2653 // 1044-1045 2654 1043, 1042, 2655 // 1039-1041 2656 1038, 1037, 1036, 2657 // 1035 2658 1034, 1033, 1032, 2659 // 1031 2660 1030, 1029, 1028, 1027, 1026, 1025, 1024, 2661 // 1022-1023 2662 1021, 1020, 2663 // 1018-1019 2664 1017, 1016, 1015, 1014, 2665 // 1013 2666 1012, 1011, 1010, 1009, 1008, 1007, 2667 // 1006 2668 1005, 2669 // 1004 2670 1003, 2671 // 1001-1002 2672 1000, 2673 // 999 2674 998, 997, 2675 // 995-996 2676 994, 993, 992, 991, 990, 989, 2677 // 988 2678 987, 986, 2679 // 985 2680 984, 2681 // 982-983 2682 981, 2683 // 973-980 2684 972, 2685 // 971 2686 970, 969, 2687 // 968 2688 967, 966, 965, 964, 963, 2689 // 959-962 2690 958, 2691 // 954-957 2692 953, 952, 951, 950, 2693 // 948-949 2694 947, 946, 2695 // 945 2696 944, 2697 // 943 2698 942, 941, 2699 // 938-940 2700 937, 936, 935, 2701 // 933-934 2702 932, 931, 2703 // 930 2704 929, 928, 927, 926, 925, 2705 // 923-924 2706 922, 921, 920, 919, 2707 // 917-918 2708 916, 915, 914, 913, 2709 // 912 2710 911, 910, 909, 908, 2711 // 907 2712 906, 2713 // 905 2714 904, 2715 // 903 2716 902, 901, 900, 2717 // 899 2718 898, 897, 2719 // 896 2720 895, 2721 // 894 2722 893, 892, 2723 // 889-891 2724 888, 2725 // 887 2726 886, 2727 // 885 2728 884, 883, 882, 2729 // 880-881 2730 879, 878, 2731 // 877 2732 876, 875, 874, 2733 // 873 2734 872, 2735 // 871 2736 870, 869, 2737 // 868 2738 867, 866, 865, 864, 863, 862, 861, 860, 859, 858, 857, 2739 // 856 2740 855, 854, 853, 852, 851, 2741 // 850 2742 849, 2743 // 848 2744 847, 846, 845, 844, 843, 2745 // 842 2746 841, 840, 839, 838, 837, 836, 835, 834, 2747 // 833 2748 832, 831, 830, 829, 2749 // 827-828 2750 826, 825, 824, 823, 822, 821, 820, 819, 818, 817, 816, 815, 814, 2751 // 812-813 2752 811, 810, 2753 // 809 2754 808, 807, 806, 805, 804, 803, 2755 // 799-802 2756 798, 2757 // 796-797 2758 795, 2759 // 793-794 2760 792, 2761 // 791 2762 790, 789, 788, 787, 786, 785, 2763 // 784 2764 783, 782, 2765 // 781 2766 780, 779, 778, 2767 // 777 2768 776, 2769 // 775 2770 774, 773, 772, 771, 770, 2771 // 767-769 2772 766, 765, 764, 2773 // 763 2774 762, 761, 760, 759, 758, 757, 756, 755, 754, 2775 // 753 2776 752, 751, 750, 749, 2777 // 748 2778 747, 746, 745, 2779 // 744 2780 743, 742, 741, 2781 // 740 2782 739, 738, 2783 // 737 2784 736, 735, 734, 733, 2785 // 732 2786 731, 2787 // 730 2788 729, 728, 727, 726, 2789 // 725 2790 724, 2791 // 718-723 2792 717, 716, 715, 2793 // 714 2794 713, 712, 711, 2795 // 708-710 2796 707, 706, 2797 // 705 2798 704, 2799 // 703 2800 702, 701, 700, 699, 2801 // 698 2802 697, 696, 695, 2803 // 693-694 2804 692, 691, 690, 689, 688, 2805 // 687 2806 686, 685, 684, 2807 // 682-683 2808 681, 680, 679, 678, 677, 676, 675, 2809 // 674 2810 673, 672, 671, 670, 2811 // 669 2812 668, 667, 666, 665, 664, 2813 // 663 2814 662, 661, 2815 // 659-660 2816 658, 657, 656, 2817 // 655 2818 654, 2819 // 653 2820 652, 2821 // 651 2822 650, 649, 2823 // 648 2824 647, 646, 645, 644, 643, 642, 641, 640, 2825 // 636-639 2826 635, 634, 633, 632, 2827 // 629-631 2828 628, 2829 // 625-627 2830 624, 2831 // 623 2832 622, 621, 620, 2833 // 617-619 2834 616, 2835 // 615 2836 614, 2837 // 613 2838 612, 2839 // 611 2840 610, 609, 608, 607, 2841 // 606 2842 605, 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, 594, 593, 2843 // 591-592 2844 590, 589, 588, 2845 // 587 2846 586, 585, 584, 583, 582, 581, 580, 579, 2847 // 578 2848 577, 576, 2849 // 574-575 2850 573, 572, 2851 // 571 2852 570, 2853 // 569 2854 568, 567, 566, 565, 2855 // 564 2856 563, 562, 561, 560, 559, 2857 // 558 2858 557, 2859 // 556 2860 555, 2861 // 552-554 2862 551, 550, 549, 548, 2863 // 547 2864 546, 545, 544, 543, 542, 541, 540, 539, 2865 // 538 2866 537, 536, 2867 // 534-535 2868 533, 532, 2869 // 531 2870 530, 529, 528, 527, 526, 525, 524, 523, 522, 521, 2871 // 520 2872 519, 2873 // 518 2874 517, 2875 // 515-516 2876 514, 2877 // 513 2878 512, 511, 510, 509, 508, 507, 2879 // 506 2880 505, 504, 503, 2881 // 502 2882 501, 2883 // 500 2884 499, 2885 // 498 2886 497, 2887 // 496 2888 495, 494, 493, 492, 2889 // 491 2890 490, 2891 // 487-489 2892 486, 2893 // 485 2894 484, 483, 2895 // 480-482 2896 479, 478, 477, 476, 475, 2897 // 472-474 2898 471, 470, 469, 2899 // 468 2900 467, 466, 465, 464, 2901 // 463 2902 462, 461, 2903 // 459-460 2904 458, 457, 456, 455, 454, 2905 // 453 2906 452, 2907 // 450-451 2908 449, 448, 2909 // 447 2910 446, 445, 2911 // 444 2912 443, 2913 // 442 2914 441, 440, 2915 // 435-439 2916 434, 433, 2917 // 431-432 2918 430, 2919 // 429 2920 428, 427, 426, 425, 424, 423, 422, 421, 420, 419, 2921 // 418 2922 417, 2923 // 416 2924 415, 414, 413, 412, 411, 410, 409, 408, 407, 406, 2925 // 405 2926 404, 403, 402, 401, 2927 // 399-400 2928 398, 397, 2929 // 396 2930 395, 394, 393, 2931 // 392 2932 391, 390, 389, 388, 2933 // 387 2934 386, 385, 2935 // 383-384 2936 382, 2937 // 381 2938 380, 379, 378, 2939 // 373-377 2940 372, 2941 // 371 2942 370, 369, 368, 367, 2943 // 366 2944 365, 2945 // 363-364 2946 362, 361, 360, 359, 358, 2947 // 356-357 2948 355, 2949 // 354 2950 353, 2951 // 350-352 2952 349, 2953 // 347-348 2954 346, 2955 // 344-345 2956 343, 342, 341, 2957 // 340 2958 339, 2959 // 337-338 2960 336, 335, 334, 333, 332, 331, 330, 2961 // 323-329 2962 322, 2963 // 321 2964 320, 319, 318, 2965 // 317 2966 316, 2967 // 315 2968 314, 313, 2969 // 306-312 2970 305, 304, 303, 302, 2971 // 301 2972 300, 299, 2973 // 291-298 2974 290, 2975 // 287-289 2976 286, 285, 284, 283, 2977 // 282 2978 281, 2979 // 280 2980 279, 278, 277, 276, 275, 274, 2981 // 273 2982 272, 271, 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, 260, 259, 258, 257, 2983 256, 255, 254, 2984 // 253 2985 252, 251, 250, 249, 248, 2986 // 247 2987 246, 245, 244, 243, 242, 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 2988 230, 2989 // 229 2990 228, 227, 226, 2991 // 225 2992 224, 223, 222, 221, 220, 219, 218, 217, 216, 2993 // 214-215 2994 213, 212, 211, 210, 209, 2995 // 208 2996 207, 206, 205, 204, 203, 2997 // 201-202 2998 200, 2999 // 199 3000 198, 197, 196, 195, 194, 193, 192, 191, 190, 3001 // 188-189 3002 187, 3003 // 184-186 3004 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 3005 // 170-171 3006 169, 168, 167, 166, 3007 // 162-165 3008 161, 3009 // 160 3010 159, 3011 // 155-158 3012 154, 3013 // 153 3014 152, 3015 // 150-151 3016 149, 3017 // 148 3018 147, 3019 // 146 3020 145, 3021 // 144 3022 143, 3023 // 142 3024 141, 3025 // 139-140 3026 138, 137, 136, 135, 3027 // 134 3028 133, 132, 131, 130, 129, 3029 // 128 3030 127, 126, 3031 // 125 3032 124, 123, 3033 // 121-122 3034 120, 3035 // 119 3036 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 3037 // 107 3038 106, 105, 104, 103, 102, 101, 3039 // 100 3040 99, 98, 97, 96, 95, 94, 93, 92, 3041 // 91 3042 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 3043 // 80 3044 79, 3045 // 78 3046 77, 76, 3047 // 75 3048 74, 73, 3049 // 72 3050 71, 70, 3051 // 69 3052 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 3053 // 58 3054 57, 3055 // 56 3056 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 3057 // 44 3058 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 3059 // 32 3060 31, 30, 29, 3061 // 27-28 3062 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 3063 // 13-14 3064 12, 11, 10, 9, 8, 3065 // 7 3066 6, 5, 4, 3, 2, 1, 3067 // 0 3068 }, 3069 (const int[]) { // 901 3070 2147, 2146, 3071 // 2139-2145 3072 2138, 3073 // 2137 3074 2136, 2135, 3075 // 2134 3076 2133, 2132, 3077 // 2131 3078 2130, 3079 // 2129 3080 2128, 2127, 3081 // 2126 3082 2125, 3083 // 2124 3084 2123, 2122, 3085 // 2120-2121 3086 2119, 2118, 2117, 2116, 3087 // 2113-2115 3088 2112, 2111, 2110, 2109, 2108, 2107, 3089 // 2106 3090 2105, 3091 // 2104 3092 2103, 2102, 2101, 2100, 2099, 2098, 2097, 2096, 2095, 2094, 2093, 3093 // 2092 3094 2091, 2090, 3095 // 2089 3096 2088, 2087, 2086, 2085, 3097 // 2080-2084 3098 2079, 2078, 3099 // 2076-2077 3100 2075, 2074, 2073, 3101 // 2072 3102 2071, 2070, 2069, 2068, 2067, 2066, 2065, 2064, 3103 // 2063 3104 2062, 2061, 2060, 2059, 2058, 3105 // 2057 3106 2056, 2055, 3107 // 2054 3108 2053, 2052, 2051, 2050, 3109 // 2049 3110 2048, 2047, 3111 // 2044-2046 3112 2043, 2042, 2041, 2040, 2039, 2038, 2037, 2036, 2035, 2034, 3113 // 2033 3114 2032, 2031, 2030, 3115 // 2029 3116 2028, 2027, 2026, 2025, 2024, 2023, 3117 // 2022 3118 2021, 2020, 2019, 2018, 2017, 2016, 3119 // 2012-2015 3120 2011, 2010, 2009, 2008, 2007, 3121 // 2003-2006 3122 2002, 2001, 3123 // 1999-2000 3124 1998, 1997, 3125 // 1992-1996 3126 1991, 1990, 1989, 1988, 1987, 3127 // 1985-1986 3128 1984, 1983, 3129 // 1982 3130 1981, 1980, 1979, 1978, 1977, 3131 // 1975-1976 3132 1974, 3133 // 1972-1973 3134 1971, 1970, 1969, 3135 // 1968 3136 1967, 3137 // 1966 3138 1965, 1964, 1963, 1962, 1961, 1960, 3139 // 1959 3140 1958, 1957, 3141 // 1955-1956 3142 1954, 1953, 1952, 1951, 1950, 1949, 1948, 1947, 3143 // 1946 3144 1945, 1944, 1943, 1942, 1941, 3145 // 1940 3146 1939, 1938, 1937, 1936, 1935, 1934, 1933, 3147 // 1932 3148 1931, 1930, 1929, 1928, 3149 // 1926-1927 3150 1925, 1924, 1923, 1922, 3151 // 1921 3152 1920, 1919, 1918, 1917, 1916, 1915, 1914, 1913, 1912, 3153 // 1911 3154 1910, 1909, 1908, 3155 // 1907 3156 1906, 1905, 3157 // 1904 3158 1903, 3159 // 1902 3160 1901, 3161 // 1894-1900 3162 1893, 1892, 1891, 1890, 1889, 1888, 3163 // 1887 3164 1886, 1885, 1884, 1883, 3165 // 1882 3166 1881, 1880, 1879, 1878, 1877, 1876, 1875, 3167 // 1873-1874 3168 1872, 1871, 1870, 1869, 1868, 1867, 3169 // 1862-1866 3170 1861, 3171 // 1860 3172 1859, 1858, 3173 // 1856-1857 3174 1855, 1854, 1853, 1852, 1851, 1850, 1849, 3175 // 1847-1848 3176 1846, 1845, 1844, 1843, 1842, 1841, 1840, 1839, 1838, 3177 // 1837 3178 1836, 3179 // 1835 3180 1834, 1833, 1832, 1831, 3181 // 1830 3182 1829, 3183 // 1828 3184 1827, 3185 // 1826 3186 1825, 1824, 1823, 1822, 1821, 1820, 1819, 1818, 1817, 1816, 1815, 1814, 3187 // 1813 3188 1812, 1811, 1810, 1809, 1808, 1807, 1806, 1805, 1804, 3189 // 1803 3190 1802, 1801, 1800, 1799, 1798, 1797, 3191 // 1795-1796 3192 1794, 1793, 3193 // 1791-1792 3194 1790, 1789, 3195 // 1788 3196 1787, 1786, 3197 // 1784-1785 3198 1783, 3199 // 1782 3200 1781, 1780, 1779, 1778, 1777, 1776, 1775, 1774, 1773, 1772, 1771, 3201 // 1770 3202 1769, 1768, 1767, 1766, 1765, 1764, 1763, 1762, 1761, 1760, 1759, 1758, 3203 // 1756-1757 3204 1755, 1754, 1753, 1752, 1751, 1750, 1749, 3205 // 1748 3206 1747, 1746, 3207 // 1745 3208 1744, 3209 // 1743 3210 1742, 3211 // 1741 3212 1740, 1739, 1738, 1737, 3213 // 1736 3214 1735, 1734, 3215 // 1733 3216 1732, 1731, 1730, 1729, 3217 // 1725-1728 3218 1724, 1723, 1722, 3219 // 1719-1721 3220 1718, 1717, 1716, 3221 // 1715 3222 1714, 1713, 3223 // 1710-1712 3224 1709, 3225 // 1708 3226 1707, 3227 // 1706 3228 1705, 3229 // 1703-1704 3230 1702, 1701, 1700, 3231 // 1699 3232 1698, 1697, 3233 // 1696 3234 1695, 1694, 1693, 3235 // 1692 3236 1691, 1690, 1689, 1688, 1687, 1686, 1685, 3237 // 1684 3238 1683, 3239 // 1682 3240 1681, 1680, 1679, 1678, 1677, 1676, 3241 // 1674-1675 3242 1673, 1672, 1671, 1670, 3243 // 1668-1669 3244 1667, 3245 // 1666 3246 1665, 1664, 1663, 1662, 1661, 1660, 1659, 1658, 1657, 3247 // 1655-1656 3248 1654, 3249 // 1651-1653 3250 1650, 1649, 1648, 1647, 1646, 1645, 1644, 3251 // 1643 3252 1642, 3253 // 1641 3254 1640, 3255 // 1639 3256 1638, 3257 // 1634-1637 3258 1633, 1632, 1631, 1630, 1629, 1628, 1627, 1626, 1625, 1624, 1623, 1622, 1621, 1620, 1619, 1618, 3259 // 1617 3260 1616, 1615, 1614, 1613, 1612, 1611, 1610, 1609, 1608, 1607, 1606, 1605, 1604, 1603, 1602, 1601, 3261 1600, 1599, 1598, 1597, 1596, 3262 // 1595 3263 1594, 1593, 1592, 3264 // 1591 3265 1590, 3266 // 1586-1589 3267 1585, 3268 // 1584 3269 1583, 1582, 1581, 1580, 3270 // 1579 3271 1578, 3272 // 1577 3273 1576, 3274 // 1574-1575 3275 1573, 1572, 1571, 1570, 1569, 3276 // 1568 3277 1567, 3278 // 1566 3279 1565, 3280 // 1564 3281 1563, 3282 // 1562 3283 1561, 1560, 1559, 3284 // 1558 3285 1557, 1556, 1555, 1554, 1553, 1552, 1551, 1550, 1549, 1548, 1547, 1546, 3286 // 1545 3287 1544, 3288 // 1542-1543 3289 1541, 3290 // 1540 3291 1539, 1538, 3292 // 1537 3293 1536, 1535, 3294 // 1533-1534 3295 1532, 3296 // 1529-1531 3297 1528, 1527, 1526, 3298 // 1522-1525 3299 1521, 1520, 1519, 1518, 1517, 1516, 1515, 3300 // 1513-1514 3301 1512, 1511, 1510, 1509, 1508, 1507, 1506, 1505, 1504, 1503, 1502, 1501, 3302 // 1499-1500 3303 1498, 1497, 3304 // 1494-1496 3305 1493, 3306 // 1492 3307 1491, 1490, 3308 // 1489 3309 1488, 3310 // 1484-1487 3311 1483, 1482, 1481, 3312 // 1480 3313 1479, 1478, 1477, 1476, 1475, 1474, 1473, 1472, 1471, 1470, 3314 // 1469 3315 1468, 1467, 1466, 3316 // 1465 3317 1464, 1463, 3318 // 1460-1462 3319 1459, 3320 // 1457-1458 3321 1456, 1455, 1454, 1453, 1452, 3322 // 1451 3323 1450, 1449, 3324 // 1448 3325 1447, 1446, 1445, 1444, 1443, 1442, 1441, 1440, 1439, 3326 // 1438 3327 1437, 3328 // 1436 3329 1435, 1434, 1433, 1432, 1431, 3330 // 1429-1430 3331 1428, 3332 // 1427 3333 1426, 3334 // 1425 3335 1424, 3336 // 1423 3337 1422, 1421, 1420, 1419, 3338 // 1418 3339 1417, 1416, 3340 // 1414-1415 3341 1413, 3342 // 1411-1412 3343 1410, 1409, 1408, 1407, 3344 // 1406 3345 1405, 1404, 3346 // 1403 3347 1402, 1401, 3348 // 1400 3349 1399, 1398, 3350 // 1397 3351 1396, 1395, 3352 // 1394 3353 1393, 3354 // 1390-1392 3355 1389, 1388, 1387, 1386, 1385, 1384, 1383, 1382, 1381, 1380, 1379, 1378, 1377, 1376, 1375, 1374, 3356 1373, 3357 // 1371-1372 3358 1370, 1369, 3359 // 1368 3360 1367, 3361 // 1366 3362 1365, 3363 // 1363-1364 3364 1362, 1361, 1360, 1359, 1358, 1357, 1356, 3365 // 1355 3366 1354, 1353, 3367 // 1352 3368 1351, 1350, 1349, 1348, 1347, 1346, 1345, 1344, 1343, 1342, 1341, 1340, 1339, 1338, 1337, 1336, 3369 // 1333-1335 3370 1332, 1331, 3371 // 1330 3372 1329, 1328, 1327, 1326, 1325, 3373 // 1324 3374 1323, 1322, 1321, 1320, 1319, 1318, 1317, 1316, 1315, 1314, 1313, 1312, 1311, 1310, 1309, 1308, 3375 1307, 1306, 1305, 1304, 1303, 1302, 1301, 1300, 1299, 1298, 1297, 1296, 3376 // 1294-1295 3377 1293, 1292, 1291, 1290, 1289, 1288, 1287, 1286, 3378 // 1285 3379 1284, 1283, 3380 // 1280-1282 3381 1279, 1278, 1277, 1276, 1275, 3382 // 1274 3383 1273, 1272, 1271, 1270, 1269, 1268, 3384 // 1267 3385 1266, 1265, 1264, 1263, 1262, 1261, 1260, 1259, 1258, 1257, 1256, 1255, 1254, 1253, 1252, 1251, 3386 1250, 1249, 1248, 1247, 1246, 1245, 3387 // 1244 3388 1243, 3389 // 1241-1242 3390 1240, 3391 // 1239 3392 1238, 3393 // 1237 3394 1236, 1235, 3395 // 1232-1234 3396 1231, 3397 // 1230 3398 1229, 1228, 3399 // 1227 3400 1226, 3401 // 1225 3402 1224, 3403 // 1223 3404 1222, 1221, 1220, 1219, 1218, 1217, 1216, 1215, 1214, 1213, 1212, 1211, 1210, 3405 // 1207-1209 3406 1206, 1205, 1204, 1203, 1202, 1201, 1200, 1199, 1198, 1197, 1196, 1195, 1194, 1193, 3407 // 1192 3408 1191, 1190, 1189, 1188, 1187, 1186, 1185, 1184, 3409 // 1183 3410 1182, 1181, 3411 // 1179-1180 3412 1178, 1177, 1176, 1175, 1174, 1173, 1172, 1171, 1170, 1169, 1168, 1167, 1166, 1165, 1164, 3413 // 1162-1163 3414 1161, 1160, 3415 // 1159 3416 1158, 1157, 1156, 1155, 3417 // 1154 3418 1153, 1152, 1151, 3419 // 1150 3420 1149, 1148, 1147, 3421 // 1146 3422 1145, 3423 // 1144 3424 1143, 3425 // 1142 3426 1141, 1140, 1139, 3427 // 1138 3428 1137, 1136, 1135, 1134, 1133, 1132, 1131, 1130, 1129, 1128, 1127, 1126, 1125, 1124, 3429 // 1123 3430 1122, 1121, 3431 // 1118-1120 3432 1117, 1116, 3433 // 1113-1115 3434 1112, 1111, 3435 // 1110 3436 1109, 1108, 1107, 3437 // 1105-1106 3438 1104, 1103, 1102, 1101, 3439 // 1099-1100 3440 1098, 3441 // 1097 3442 1096, 1095, 3443 // 1094 3444 1093, 1092, 1091, 1090, 3445 // 1088-1089 3446 1087, 1086, 1085, 3447 // 1084 3448 1083, 3449 // 1082 3450 1081, 1080, 1079, 3451 // 1078 3452 1077, 1076, 1075, 1074, 1073, 1072, 1071, 1070, 1069, 1068, 1067, 1066, 1065, 3453 // 1064 3454 1063, 3455 // 1062 3456 1061, 3457 // 1060 3458 1059, 3459 // 1058 3460 1057, 1056, 1055, 3461 // 1054 3462 1053, 1052, 3463 // 1050-1051 3464 1049, 1048, 1047, 1046, 1045, 3465 // 1044 3466 1043, 1042, 1041, 3467 // 1039-1040 3468 1038, 3469 // 1037 3470 1036, 3471 // 1035 3472 1034, 1033, 1032, 3473 // 1031 3474 1030, 3475 // 1029 3476 1028, 1027, 1026, 3477 // 1024-1025 3478 1023, 1022, 1021, 1020, 1019, 1018, 1017, 3479 // 1016 3480 1015, 3481 // 1014 3482 1013, 1012, 1011, 1010, 1009, 1008, 1007, 1006, 1005, 3483 // 1004 3484 1003, 1002, 1001, 1000, 999, 998, 997, 996, 995, 3485 // 994 3486 993, 992, 991, 990, 989, 3487 // 988 3488 987, 986, 3489 // 985 3490 984, 983, 982, 981, 3491 // 979-980 3492 978, 977, 976, 3493 // 975 3494 974, 3495 // 973 3496 972, 971, 970, 3497 // 969 3498 968, 967, 3499 // 966 3500 965, 964, 963, 962, 961, 960, 959, 958, 957, 956, 955, 954, 953, 3501 // 952 3502 951, 950, 3503 // 949 3504 948, 947, 946, 945, 3505 // 944 3506 943, 942, 941, 940, 939, 938, 3507 // 937 3508 936, 935, 934, 933, 3509 // 931-932 3510 930, 929, 928, 927, 926, 925, 924, 923, 922, 921, 920, 919, 918, 917, 3511 // 916 3512 915, 914, 913, 912, 911, 910, 3513 // 909 3514 908, 907, 906, 905, 904, 903, 902, 901, 900, 899, 898, 897, 896, 895, 894, 893, 3515 892, 891, 890, 889, 888, 3516 // 887 3517 886, 3518 // 885 3519 884, 883, 3520 // 882 3521 881, 880, 3522 // 878-879 3523 877, 876, 875, 874, 873, 3524 // 871-872 3525 870, 869, 3526 // 868 3527 867, 866, 865, 864, 3528 // 863 3529 862, 861, 860, 3530 // 859 3531 858, 857, 3532 // 856 3533 855, 3534 // 854 3535 853, 3536 // 851-852 3537 850, 849, 3538 // 848 3539 847, 846, 845, 3540 // 843-844 3541 842, 841, 840, 839, 838, 837, 3542 // 836 3543 835, 3544 // 834 3545 833, 832, 831, 830, 829, 3546 // 828 3547 827, 826, 825, 824, 823, 822, 821, 820, 819, 3548 // 817-818 3549 816, 3550 // 815 3551 814, 3552 // 813 3553 812, 811, 810, 809, 3554 // 807-808 3555 806, 805, 804, 803, 802, 3556 // 800-801 3557 799, 798, 797, 796, 795, 794, 793, 792, 791, 790, 789, 3558 // 788 3559 787, 786, 785, 3560 // 784 3561 783, 782, 781, 3562 // 780 3563 779, 778, 777, 776, 775, 774, 773, 772, 771, 770, 769, 3564 // 768 3565 767, 766, 765, 764, 763, 762, 761, 760, 759, 758, 3566 // 757 3567 756, 755, 754, 753, 752, 3568 // 750-751 3569 749, 748, 3570 // 747 3571 746, 745, 744, 743, 742, 741, 740, 739, 738, 3572 // 736-737 3573 735, 734, 733, 732, 731, 730, 729, 728, 727, 726, 725, 724, 723, 722, 721, 720, 3574 719, 3575 // 718 3576 717, 716, 3577 // 714-715 3578 713, 3579 // 712 3580 711, 710, 3581 // 709 3582 708, 707, 706, 705, 704, 703, 702, 701, 700, 699, 698, 697, 696, 695, 694, 693, 3583 692, 691, 690, 689, 688, 687, 686, 3584 // 685 3585 684, 683, 3586 // 680-682 3587 679, 678, 677, 676, 675, 674, 673, 672, 671, 3588 // 670 3589 669, 668, 667, 666, 3590 // 664-665 3591 663, 662, 661, 3592 // 660 3593 659, 658, 657, 656, 655, 654, 653, 652, 651, 650, 649, 648, 647, 3594 // 646 3595 645, 644, 643, 642, 641, 640, 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, 3596 629, 628, 627, 626, 3597 // 624-625 3598 623, 622, 621, 3599 // 620 3600 619, 618, 617, 616, 615, 614, 3601 // 613 3602 612, 3603 // 611 3604 610, 609, 3605 // 607-608 3606 606, 605, 604, 603, 602, 601, 3607 // 600 3608 599, 598, 3609 // 597 3610 596, 3611 // 595 3612 594, 593, 592, 591, 3613 // 589-590 3614 588, 3615 // 587 3616 586, 585, 3617 // 584 3618 583, 582, 3619 // 581 3620 580, 579, 3621 // 578 3622 577, 3623 // 576 3624 575, 574, 573, 572, 3625 // 570-571 3626 569, 568, 567, 566, 565, 3627 // 563-564 3628 562, 561, 3629 // 559-560 3630 558, 557, 556, 555, 554, 553, 552, 551, 550, 549, 3631 // 548 3632 547, 546, 3633 // 545 3634 544, 543, 3635 // 542 3636 541, 540, 3637 // 539 3638 538, 537, 536, 3639 // 535 3640 534, 533, 532, 531, 530, 529, 528, 3641 // 527 3642 526, 525, 524, 3643 // 522-523 3644 521, 520, 519, 518, 517, 516, 515, 3645 // 513-514 3646 512, 511, 3647 // 508-510 3648 507, 506, 505, 504, 503, 3649 // 500-502 3650 499, 498, 3651 // 497 3652 496, 495, 494, 493, 492, 491, 490, 489, 488, 487, 486, 485, 484, 483, 3653 // 481-482 3654 480, 479, 478, 477, 476, 475, 474, 473, 472, 3655 // 471 3656 470, 469, 468, 467, 466, 465, 464, 463, 3657 // 461-462 3658 460, 3659 // 459 3660 458, 3661 // 457 3662 456, 3663 // 455 3664 454, 453, 452, 451, 3665 // 450 3666 449, 3667 // 448 3668 447, 446, 3669 // 445 3670 444, 443, 442, 441, 440, 439, 438, 437, 436, 435, 434, 433, 432, 3671 // 431 3672 430, 3673 // 429 3674 428, 427, 426, 425, 424, 423, 3675 // 422 3676 421, 3677 // 420 3678 419, 418, 3679 // 417 3680 416, 415, 414, 413, 412, 411, 410, 409, 408, 407, 406, 405, 404, 3681 // 403 3682 402, 401, 400, 399, 3683 // 398 3684 397, 396, 395, 394, 3685 // 393 3686 392, 3687 // 391 3688 390, 389, 388, 3689 // 387 3690 386, 3691 // 385 3692 384, 383, 382, 381, 380, 3693 // 379 3694 378, 3695 // 376-377 3696 375, 374, 3697 // 373 3698 372, 371, 3699 // 368-370 3700 367, 366, 365, 364, 363, 362, 361, 3701 // 360 3702 359, 3703 // 358 3704 357, 3705 // 356 3706 355, 354, 353, 3707 // 352 3708 351, 350, 3709 // 349 3710 348, 3711 // 347 3712 346, 3713 // 345 3714 344, 343, 3715 // 342 3716 341, 340, 3717 // 336-339 3718 335, 334, 3719 // 333 3720 332, 331, 3721 // 330 3722 329, 328, 3723 // 327 3724 326, 325, 324, 323, 322, 321, 320, 319, 318, 317, 316, 315, 3725 // 314 3726 313, 312, 311, 310, 3727 // 309 3728 308, 307, 306, 305, 304, 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, 293, 3729 292, 291, 290, 289, 3730 // 288 3731 287, 286, 285, 3732 // 284 3733 283, 3734 // 282 3735 281, 280, 279, 278, 277, 276, 275, 274, 273, 272, 3736 // 270-271 3737 269, 268, 267, 266, 265, 3738 // 263-264 3739 262, 3740 // 261 3741 260, 259, 258, 3742 // 255-257 3743 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, 3744 238, 237, 236, 235, 234, 3745 // 233 3746 232, 231, 230, 3747 // 229 3748 228, 227, 226, 225, 224, 3749 // 221-223 3750 220, 3751 // 219 3752 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 3753 // 206 3754 205, 204, 203, 3755 // 200-202 3756 199, 198, 197, 196, 195, 194, 3757 // 193 3758 192, 191, 190, 189, 188, 187, 186, 3759 // 185 3760 184, 183, 182, 181, 180, 3761 // 179 3762 178, 177, 176, 175, 174, 3763 // 173 3764 172, 171, 170, 169, 168, 167, 166, 3765 // 165 3766 164, 163, 162, 161, 3767 // 160 3768 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 3769 // 148 3770 147, 146, 145, 144, 143, 142, 141, 140, 3771 // 139 3772 138, 137, 3773 // 136 3774 135, 134, 3775 // 133 3776 132, 131, 130, 129, 128, 127, 126, 3777 // 125 3778 124, 3779 // 122-123 3780 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 3781 // 107 3782 106, 105, 104, 103, 102, 101, 100, 3783 // 99 3784 98, 97, 3785 // 95-96 3786 94, 93, 92, 3787 // 90-91 3788 89, 88, 87, 86, 85, 84, 83, 82, 81, 3789 // 80 3790 79, 78, 77, 76, 75, 74, 73, 72, 3791 // 69-71 3792 68, 67, 66, 65, 3793 // 64 3794 63, 3795 // 62 3796 61, 60, 59, 58, 3797 // 57 3798 56, 3799 // 55 3800 54, 3801 // 53 3802 52, 3803 // 50-51 3804 49, 48, 47, 46, 3805 // 44-45 3806 43, 42, 41, 40, 39, 38, 37, 36, 35, 3807 // 34 3808 33, 32, 31, 3809 // 26-30 3810 25, 3811 // 24 3812 23, 22, 21, 20, 3813 // 19 3814 18, 3815 // 17 3816 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 3817 // 6 3818 5, 4, 3, 2, 1, 3819 // 0 3820 }, 3821 (const int[]) { // 902 3822 59, 58, 57, 56, 55, 54, 3823 // 47-53 3824 46, 3825 // 45 3826 44, 3827 // 42-43 3828 41, 40, 3829 // 39 3830 38, 3831 // 37 3832 36, 3833 // 34-35 3834 33, 32, 31, 30, 3835 // 29 3836 28, 27, 3837 // 26 3838 25, 24, 23, 22, 3839 // 21 3840 20, 3841 // 19 3842 18, 3843 // 14-17 3844 13, 12, 3845 // 11 3846 10, 9, 8, 7, 3847 // 5-6 3848 4, 3849 // 0-3 3850 }, 3851 }; 3852 // clang-format on 3853 3854 /// Compares a version string to the current Nvim version. 3855 /// 3856 /// @param version Version string like "1.3.42" 3857 /// 3858 /// @return true if Nvim is at or above the version. 3859 bool has_nvim_version(const char *const version_str) 3860 FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL 3861 { 3862 const char *p = version_str; 3863 int minor = 0; 3864 int patch = 0; 3865 3866 if (!ascii_isdigit(*p)) { 3867 return false; 3868 } 3869 int major = atoi(p); 3870 p = strchr(p, '.'); // Find the next dot. 3871 3872 if (p) { 3873 p++; // Advance past the dot. 3874 if (!ascii_isdigit(*p)) { 3875 return false; 3876 } 3877 minor = atoi(p); 3878 p = strchr(p, '.'); 3879 if (p) { 3880 p++; 3881 if (!ascii_isdigit(*p)) { 3882 return false; 3883 } 3884 patch = atoi(p); 3885 } 3886 } 3887 3888 return (major < NVIM_VERSION_MAJOR 3889 || (major == NVIM_VERSION_MAJOR 3890 && (minor < NVIM_VERSION_MINOR 3891 || (minor == NVIM_VERSION_MINOR 3892 && patch <= NVIM_VERSION_PATCH)))); 3893 } 3894 3895 int min_vim_version(void) 3896 FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT 3897 { 3898 return vim_versions[0]; 3899 } 3900 3901 int highest_patch(void) 3902 FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT 3903 { 3904 // this relies on the highest patch number to be the first entry 3905 return included_patchsets[0][0]; 3906 } 3907 3908 /// Checks whether a Vim patch has been included. 3909 /// 3910 /// @param n Patch number. 3911 /// @param major_minor_version (major * 100 + minor) Vim version or 0 (alias to min_vim_version()) 3912 /// 3913 /// @return true if patch `n` has been included. 3914 bool has_vim_patch(int n, int major_minor_version) 3915 FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT 3916 { 3917 int v_i; 3918 if (major_minor_version > 0) { 3919 if (major_minor_version < vim_versions[0]) { 3920 return true; 3921 } 3922 const size_t size = ARRAY_SIZE(vim_versions); 3923 v_i = -1; 3924 for (size_t i = 0; i < size; i++) { 3925 if (vim_versions[i] == major_minor_version) { 3926 v_i = (int)i; 3927 break; 3928 } 3929 } 3930 if (v_i == -1) { 3931 return false; 3932 } 3933 } else { 3934 v_i = 0; 3935 } 3936 // Perform a binary search. 3937 int l = 0; 3938 int h = num_patches[v_i] - 1; 3939 while (true) { 3940 const int m = (l + h) / 2; 3941 if (included_patchsets[v_i][m] == n) { 3942 return true; 3943 } 3944 if (l == h) { 3945 break; 3946 } 3947 if (included_patchsets[v_i][m] < n) { 3948 h = m; 3949 } else { 3950 l = m + 1; 3951 } 3952 } 3953 return false; 3954 } 3955 3956 void ex_version(exarg_T *eap) 3957 { 3958 // Ignore a ":version 9.99" command. 3959 if (*eap->arg == NUL) { 3960 if (!ui_has(kUIMessages)) { 3961 msg_putchar('\n'); 3962 } 3963 list_version(); 3964 } 3965 } 3966 3967 /// Output a string for the version message. If it's going to wrap, output a 3968 /// newline, unless the message is too long to fit on the screen anyway. 3969 /// When "wrap" is true wrap the string in []. 3970 /// @param s 3971 /// @param wrap 3972 static void version_msg_wrap(char *s, bool wrap) 3973 { 3974 int len = vim_strsize(s) + (wrap ? 2 : 0); 3975 3976 if (!got_int 3977 && (len < Columns) 3978 && (msg_col + len >= Columns) 3979 && (*s != '\n')) { 3980 msg_putchar('\n'); 3981 } 3982 3983 if (!got_int) { 3984 if (wrap) { 3985 msg_puts("["); 3986 } 3987 msg_puts(s); 3988 if (wrap) { 3989 msg_puts("]"); 3990 } 3991 } 3992 } 3993 3994 static void version_msg(char *s) 3995 { 3996 version_msg_wrap(s, false); 3997 } 3998 3999 /// List string items nicely aligned in columns. 4000 /// When "size" is < 0 then the last entry is marked with NULL. 4001 /// The entry with index "current" is inclosed in []. 4002 void list_in_columns(char **items, int size, int current) 4003 { 4004 int item_count = 0; 4005 int width = 0; 4006 4007 // Find the length of the longest item, use that + 1 as the column width. 4008 for (int i = 0; size < 0 ? items[i] != NULL : i < size; i++) { 4009 int l = vim_strsize(items[i]) + (i == current ? 2 : 0); 4010 4011 if (l > width) { 4012 width = l; 4013 } 4014 item_count++; 4015 } 4016 width += 1; 4017 4018 if (Columns < width) { 4019 // Not enough screen columns - show one per line 4020 for (int i = 0; i < item_count; i++) { 4021 version_msg_wrap(items[i], i == current); 4022 if (msg_col > 0 && i < item_count - 1) { 4023 msg_putchar('\n'); 4024 } 4025 } 4026 return; 4027 } 4028 4029 // The rightmost column doesn't need a separator. 4030 // Sacrifice it to fit in one more column if possible. 4031 int ncol = (Columns + 1) / width; 4032 int nrow = item_count / ncol + (item_count % ncol ? 1 : 0); 4033 int cur_row = 1; 4034 4035 // "i" counts columns then rows. "idx" counts rows then columns. 4036 for (int i = 0; !got_int && i < nrow * ncol; i++) { 4037 int idx = (i / ncol) + (i % ncol) * nrow; 4038 if (idx < item_count) { 4039 bool last_col = (i + 1) % ncol == 0; 4040 if (idx == current) { 4041 msg_putchar('['); 4042 } 4043 msg_puts(items[idx]); 4044 if (idx == current) { 4045 msg_putchar(']'); 4046 } 4047 if (last_col) { 4048 if (msg_col > 0 && cur_row < nrow) { 4049 msg_putchar('\n'); 4050 } 4051 cur_row++; 4052 } else { 4053 while (msg_col % width) { 4054 msg_putchar(' '); 4055 } 4056 } 4057 } else { 4058 // this row is out of items, thus at the end of the row 4059 if (msg_col > 0) { 4060 if (cur_row < nrow) { 4061 msg_putchar('\n'); 4062 } 4063 cur_row++; 4064 } 4065 } 4066 } 4067 } 4068 4069 void list_lua_version(void) 4070 { 4071 Error err = ERROR_INIT; 4072 Object ret = NLUA_EXEC_STATIC("return ((jit and jit.version) and jit.version or _VERSION)", 4073 (Array)ARRAY_DICT_INIT, kRetObject, NULL, &err); 4074 assert(!ERROR_SET(&err)); 4075 assert(ret.type == kObjectTypeString); 4076 msg_puts(ret.data.string.data); 4077 api_free_object(ret); 4078 } 4079 4080 void list_version(void) 4081 { 4082 msg_ext_set_kind("list_cmd"); 4083 msg_puts(longVersion); 4084 msg_putchar('\n'); 4085 msg_puts(version_buildtype); 4086 msg_putchar('\n'); 4087 list_lua_version(); 4088 4089 if (p_verbose > 0) { 4090 msg_putchar('\n'); 4091 msg_puts("Vim versions: "); 4092 4093 for (size_t i = 0; i < ARRAY_SIZE(vim_versions); i++) { 4094 if (i) { 4095 msg_puts(", "); 4096 } 4097 msg_puts(Versions[i]); 4098 } 4099 4100 #ifndef NDEBUG 4101 msg_putchar('\n'); 4102 msg_puts(version_cflags); 4103 #endif 4104 version_msg("\n\n"); 4105 4106 #ifdef SYS_VIMRC_FILE 4107 version_msg(_(" system vimrc file: \"")); 4108 version_msg(SYS_VIMRC_FILE); 4109 version_msg("\"\n"); 4110 #endif 4111 4112 if (*default_vim_dir != NUL) { 4113 version_msg(_(" fall-back for $VIM: \"")); 4114 version_msg(default_vim_dir); 4115 version_msg("\"\n"); 4116 } 4117 4118 if (*default_vimruntime_dir != NUL) { 4119 version_msg(_(" f-b for $VIMRUNTIME: \"")); 4120 version_msg(default_vimruntime_dir); 4121 version_msg("\"\n"); 4122 } 4123 } 4124 4125 version_msg(p_verbose > 0 4126 ? "\nRun :checkhealth for more info" 4127 : (starting 4128 ? "\nRun \"nvim -V1 -v\" for more info" 4129 : "\nRun \":verbose version\" for more info")); 4130 } 4131 4132 /// Whether it still is not too late to show an intro message 4133 bool may_show_intro(void) 4134 { 4135 return (buf_is_empty(curbuf) 4136 && (curbuf->b_fname == NULL) 4137 && (curbuf->handle == 1) 4138 && (curwin->handle == LOWEST_WIN_ID) 4139 && one_window(curwin, NULL) 4140 && (vim_strchr(p_shm, SHM_INTRO) == NULL)); 4141 } 4142 4143 /// Give an introductory message about Vim. 4144 /// Only used when starting Vim on an empty file, without a file name. 4145 /// Or with the ":intro" command (for Sven :-). 4146 /// 4147 /// @param colon true for ":intro" 4148 void intro_message(bool colon) 4149 { 4150 static char *(lines[]) = { 4151 N_(NVIM_VERSION_LONG), 4152 "", 4153 N_("Nvim is open source and freely distributable"), 4154 "https://neovim.io/#chat", 4155 "", 4156 N_("type :help nvim<Enter> if you are new! "), 4157 N_("type :checkhealth<Enter> to optimize Nvim"), 4158 N_("type :q<Enter> to exit "), 4159 N_("type :help<Enter> for help "), 4160 "", 4161 N_("type :help news<Enter> to see changes in v%s.%s"), 4162 "", 4163 N_("Help poor children in Uganda!"), 4164 N_("type :help Kuwasha<Enter> for information "), 4165 }; 4166 4167 // blanklines = screen height - # message lines 4168 size_t lines_size = ARRAY_SIZE(lines); 4169 assert(lines_size <= LONG_MAX); 4170 4171 int blanklines = Rows - ((int)lines_size - 1); 4172 4173 // Don't overwrite a statusline. Depends on 'cmdheight'. 4174 if (p_ls > 1) { 4175 blanklines -= Rows - topframe->fr_height; 4176 } 4177 4178 if (blanklines < 0) { 4179 blanklines = 0; 4180 } 4181 4182 // start displaying the message lines after half of the blank lines 4183 int row = blanklines / 2; 4184 4185 if (((row >= 2) && (Columns >= 50)) || colon) { 4186 for (int i = 0; i < (int)ARRAY_SIZE(lines); i++) { 4187 char *p = lines[i]; 4188 char *mesg = NULL; 4189 int mesg_size = 0; 4190 4191 if (strstr(p, "news") != NULL) { 4192 p = _(p); 4193 mesg_size = snprintf(NULL, 0, p, 4194 STR(NVIM_VERSION_MAJOR), STR(NVIM_VERSION_MINOR)); 4195 assert(mesg_size > 0); 4196 mesg = xmallocz((size_t)mesg_size); 4197 snprintf(mesg, (size_t)mesg_size + 1, p, 4198 STR(NVIM_VERSION_MAJOR), STR(NVIM_VERSION_MINOR)); 4199 } 4200 4201 if (mesg == NULL) { 4202 if (*p != NUL) { 4203 mesg = _(p); 4204 } else { 4205 mesg = ""; 4206 } 4207 } 4208 4209 if (*mesg != NUL) { 4210 do_intro_line(row, mesg, colon); 4211 } 4212 row++; 4213 4214 if (mesg_size > 0) { 4215 XFREE_CLEAR(mesg); 4216 } 4217 } 4218 } 4219 } 4220 4221 static void do_intro_line(int row, char *mesg, bool colon) 4222 { 4223 int l; 4224 4225 // Center the message horizontally. 4226 int col = vim_strsize(mesg); 4227 4228 col = (Columns - col) / 2; 4229 4230 if (col < 0) { 4231 col = 0; 4232 } 4233 4234 grid_line_start((!colon && ui_has(kUIMultigrid)) ? &firstwin->w_grid : &default_gridview, row); 4235 4236 // Split up in parts to highlight <> items differently. 4237 for (char *p = mesg; *p != NUL; p += l) { 4238 for (l = 0; 4239 p[l] != NUL && (l == 0 || (p[l] != '<' && p[l - 1] != '>')); 4240 l++) { 4241 l += utfc_ptr2len(p + l) - 1; 4242 } 4243 assert(row <= INT_MAX && col <= INT_MAX); 4244 col += grid_line_puts(col, p, l, *p == '<' ? HL_ATTR(HLF_8) : 0); 4245 } 4246 grid_line_flush(); 4247 } 4248 4249 /// ":intro": clear screen, display intro screen and wait for return. 4250 /// 4251 /// @param eap 4252 void ex_intro(exarg_T *eap) 4253 { 4254 // TODO(bfredl): use msg_grid instead! 4255 screenclear(); 4256 intro_message(true); 4257 plain_vgetc(); 4258 }