From b298a00651aca38933ba5e8e75a7058b41db93d8 Mon Sep 17 00:00:00 2001 From: ApsisRS contributors Date: Sat, 26 Sep 2026 15:34:34 +0800 Subject: [PATCH] rf: add the ITU-R P.839-4 rain height model --- crates/apsis-rs/Cargo.toml | 4 + crates/apsis-rs/examples/dump_p839.rs | 43 + crates/rf/apsis-atmosphere/src/lib.rs | 3 + crates/rf/apsis-atmosphere/src/p839.rs | 94 + crates/rf/apsis-atmosphere/src/p839_table.rs | 2241 ++++++++++++++++++ crates/rf/apsis-atmosphere/tests/p839.rs | 147 ++ validation/README.md | 8 +- validation/python/atmosphere/check_p839.py | 105 + validation/tools/generate_p839_table.py | 65 + 9 files changed, 2709 insertions(+), 1 deletion(-) create mode 100644 crates/apsis-rs/examples/dump_p839.rs create mode 100644 crates/rf/apsis-atmosphere/src/p839.rs create mode 100644 crates/rf/apsis-atmosphere/src/p839_table.rs create mode 100644 crates/rf/apsis-atmosphere/tests/p839.rs create mode 100644 validation/python/atmosphere/check_p839.py create mode 100644 validation/tools/generate_p839_table.py diff --git a/crates/apsis-rs/Cargo.toml b/crates/apsis-rs/Cargo.toml index f0d6f9e..5fd5f43 100644 --- a/crates/apsis-rs/Cargo.toml +++ b/crates/apsis-rs/Cargo.toml @@ -173,3 +173,7 @@ required-features = ["rf"] [[example]] name = "dump_s465" required-features = ["rf"] + +[[example]] +name = "dump_p839" +required-features = ["rf"] diff --git a/crates/apsis-rs/examples/dump_p839.rs b/crates/apsis-rs/examples/dump_p839.rs new file mode 100644 index 0000000..7888b48 --- /dev/null +++ b/crates/apsis-rs/examples/dump_p839.rs @@ -0,0 +1,43 @@ +//! Writes the rain height computed by this workspace, for cross-checking +//! against ITU-R P.839-4. +//! +//! Usage: +//! +//! ```text +//! cargo run -p apsis-rs --features rf --example dump_p839 \ +//! > validation/data/expected/rust_p839.csv +//! ``` + +use apsis_atmosphere::{rain_height, zero_isotherm_height}; + +/// The locations sampled, as latitude and longitude in degrees. +const POINTS: &[(f64, f64)] = &[ + (0.0, 0.0), + (45.0, 0.0), + (-45.0, 90.0), + (51.5, -0.1), + (35.7, 139.7), + (-33.9, 151.2), + (28.6, -80.6), + (0.0, 359.9), + (0.0, -0.1), + (60.0, 30.0), + (-60.0, 300.0), + (23.5, 45.0), + (89.9, 0.0), + (-89.9, 180.0), + (10.0, 100.0), +]; + +fn main() { + println!("latitude_deg,longitude_deg,isotherm_km,rain_height_km"); + for &(latitude, longitude) in POINTS { + let Some(isotherm) = zero_isotherm_height(latitude, longitude) else { + continue; + }; + let Some(height) = rain_height(latitude, longitude) else { + continue; + }; + println!("{latitude},{longitude},{isotherm:.12},{height:.12}"); + } +} diff --git a/crates/rf/apsis-atmosphere/src/lib.rs b/crates/rf/apsis-atmosphere/src/lib.rs index 15c4f3c..457d968 100644 --- a/crates/rf/apsis-atmosphere/src/lib.rs +++ b/crates/rf/apsis-atmosphere/src/lib.rs @@ -50,6 +50,8 @@ mod gaseous; mod gaseous_path; mod geometry; +mod p839; +mod p839_table; mod rain; pub use gaseous::{ @@ -60,6 +62,7 @@ pub use gaseous_path::{ EquivalentHeights, equivalent_heights, slant_path_attenuation, zenith_attenuation, }; pub use geometry::{air_mass, elevation_from_zenith, zenith_to_elevation}; +pub use p839::{RAIN_HEIGHT_OFFSET_KM, grid_step_degrees, rain_height, zero_isotherm_height}; pub use rain::{ DEFAULT_RAIN_HEIGHT_KM, RainAttenuation, polarisation_tilt, rain_attenuation, rain_coefficients, specific_rain_attenuation, diff --git a/crates/rf/apsis-atmosphere/src/p839.rs b/crates/rf/apsis-atmosphere/src/p839.rs new file mode 100644 index 0000000..f585015 --- /dev/null +++ b/crates/rf/apsis-atmosphere/src/p839.rs @@ -0,0 +1,94 @@ +//! The rain height model of ITU-R Recommendation P.839. +//! +//! The height of the rain layer is taken as the height of the zero degree +//! isotherm above sea level. The recommendation tabulates that height on a +//! global grid, and the value at a given location is found by bilinear +//! interpolation between the four surrounding grid points. +//! +//! The rain height is the height at which the falling snow melts, below +//! which the precipitation is liquid. Above it, the attenuation is much +//! smaller, so it is the effective thickness of the attenuating layer and an +//! input to the path calculation of Recommendation P.618. +//! +//! Source: ITU-R Recommendation P.839-4, *Rain height model for prediction +//! methods*. + +use crate::p839_table::ZERO_ISOTHERM_HEIGHT_METRES; + +/// The grid resolution of the tabulated isotherm height, in degrees. +const STEP_DEGREES: f64 = 1.5; + +/// The number of rows in the table, running from north to south. +const ROWS: usize = 121; + +/// The number of columns in the table, running from east to east. +const COLUMNS: usize = 241; + +/// The offset added to the isotherm height to obtain the rain height, in +/// kilometers. +/// +/// The recommendation states that the rain height is the isotherm height +/// plus 0.36 km, which represents the depth of the melting layer below the +/// isotherm. +pub const RAIN_HEIGHT_OFFSET_KM: f64 = 0.36; + +/// Returns the height of the zero degree isotherm at a location, in +/// kilometers above mean sea level. +/// +/// The latitude is in degrees, positive north, and the longitude in degrees, +/// positive east. The value is interpolated bilinearly from the tabulated +/// grid, and longitudes are reduced into `[0, 360)` first so that any +/// convention is accepted. +/// +/// Returns `None` when either coordinate is not finite, or when the latitude +/// is outside the range of the grid. +/// +/// Source: ITU-R Recommendation P.839-4, equation 1 and the tabulated +/// isotherm height. +pub fn zero_isotherm_height(latitude: f64, longitude: f64) -> Option { + if !latitude.is_finite() || !longitude.is_finite() { + return None; + } + if !(-90.0..=90.0).contains(&latitude) { + return None; + } + + // The rows run from north to south, so the row index grows as the + // latitude falls. + let row_position = (90.0 - latitude) / STEP_DEGREES; + let row_lower = (row_position.floor() as usize).min(ROWS - 1); + let row_upper = (row_lower + 1).min(ROWS - 1); + let row_fraction = row_position - row_lower as f64; + + // The columns run from 0 to 360 degrees east, wrapping at the seam. + let longitude = longitude.rem_euclid(360.0); + let column_position = longitude / STEP_DEGREES; + let column_lower = (column_position.floor() as usize).min(COLUMNS - 1); + let column_upper = (column_lower + 1) % COLUMNS; + let column_fraction = column_position - column_lower as f64; + + let sample = + |row: usize, column: usize| f64::from(ZERO_ISOTHERM_HEIGHT_METRES[row][column]) / 1000.0; + + // Bilinear interpolation. + let top = sample(row_lower, column_lower) + + (sample(row_lower, column_upper) - sample(row_lower, column_lower)) * column_fraction; + let bottom = sample(row_upper, column_lower) + + (sample(row_upper, column_upper) - sample(row_upper, column_lower)) * column_fraction; + Some(top + (bottom - top) * row_fraction) +} + +/// Returns the rain height at a location, in kilometers above mean sea level. +/// +/// This is the zero degree isotherm height plus +/// [`RAIN_HEIGHT_OFFSET_KM`], as the recommendation defines it. +/// +/// Returns `None` when the coordinates are not usable. +pub fn rain_height(latitude: f64, longitude: f64) -> Option { + Some(zero_isotherm_height(latitude, longitude)? + RAIN_HEIGHT_OFFSET_KM) +} + +/// Returns the grid resolution of the tabulated isotherm height, in degrees. +pub const fn grid_step_degrees() -> f64 { + STEP_DEGREES +} diff --git a/crates/rf/apsis-atmosphere/src/p839_table.rs b/crates/rf/apsis-atmosphere/src/p839_table.rs new file mode 100644 index 0000000..e5531c7 --- /dev/null +++ b/crates/rf/apsis-atmosphere/src/p839_table.rs @@ -0,0 +1,2241 @@ +//! The ITU-R P.839-4 zero degree isotherm height table. +//! +//! The table is generated from the data published with the recommendation by +//! `validation/tools/generate_p839_table.py` and is reproduced here as integers +//! in metres, which is the resolution the recommendation publishes. +//! +//! Source: ITU-R Recommendation P.839-4, *Rain height model for prediction +//! methods*. + +/// The height of the zero degree isotherm, in metres. +/// +/// The grid runs from 90 degrees north to 90 degrees south in the row +/// direction and from 0 to 360 degrees east in the column direction, +/// both in steps of 1.5 degrees, so there are 121 rows and 241 columns. +/// The value at a fractional latitude or longitude is found by bilinear +/// interpolation between the four surrounding points. +/// +/// Source: ITU-R Recommendation P.839-4, *Rain height model for prediction +/// methods*, which tabulates the isotherm height on this grid. +pub static ZERO_ISOTHERM_HEIGHT_METRES: [[u16; 241]; 121] = [ + [ + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, 2096, + 2096, + ], + [ + 2436, 2436, 2436, 2435, 2456, 2457, 2454, 2453, 2453, 2451, 2451, 2447, 2447, 2444, 2442, + 2440, 2432, 2276, 2276, 2274, 2274, 2274, 2268, 2267, 2348, 2346, 2204, 2200, 2178, 2172, + 2168, 2164, 2162, 2179, 2191, 2261, 2257, 2254, 2249, 2246, 2244, 2171, 2167, 2365, 2159, + 2156, 2252, 2248, 2239, 2136, 2130, 2126, 2260, 2257, 2252, 2168, 1983, 1981, 1979, 1978, + 1954, 1950, 1950, 1902, 1896, 1797, 1800, 1796, 1726, 1755, 1752, 1752, 1752, 1715, 1717, + 1741, 1760, 1816, 1817, 1816, 1942, 1779, 1777, 1573, 1573, 1572, 1570, 1568, 1566, 1588, + 1658, 1711, 1709, 1776, 1756, 1752, 1749, 1746, 1745, 1741, 1810, 1788, 1793, 1750, 1753, + 1716, 1724, 1728, 1733, 1688, 1754, 1728, 1738, 1746, 1752, 1760, 1769, 1775, 1799, 1804, + 1813, 1884, 1956, 1962, 1967, 1973, 1873, 1914, 1917, 2012, 2019, 1826, 1827, 1827, 1826, + 1826, 1824, 1821, 1780, 1778, 1793, 1792, 1793, 1793, 1792, 1794, 1793, 1979, 1980, 1980, + 1727, 1729, 1916, 1920, 1923, 1926, 1929, 1979, 2034, 2039, 2041, 1919, 1923, 1924, 1927, + 1869, 1869, 1873, 1920, 2082, 2084, 2082, 2082, 2082, 2084, 2082, 1985, 1985, 2012, 2009, + 2018, 2015, 2010, 2006, 2003, 1999, 2121, 2116, 2111, 2276, 2280, 2277, 2272, 2267, 2286, + 2280, 2276, 2169, 2062, 2057, 2055, 2052, 2049, 2047, 2043, 2044, 2041, 2154, 2121, 2133, + 2132, 2039, 2036, 2034, 2037, 2057, 2057, 2036, 2052, 2051, 2052, 2053, 2055, 2055, 2051, + 2120, 2121, 2119, 2047, 2050, 2048, 2092, 2244, 2241, 2436, 2434, 2434, 2438, 2437, 2434, + 2436, + ], + [ + 2226, 2225, 2224, 2224, 2228, 1779, 1773, 1871, 1871, 1781, 1778, 2048, 2025, 2002, 2001, + 2076, 2081, 2136, 2156, 2103, 2122, 2110, 2113, 2116, 2089, 2139, 2125, 2094, 2094, 2125, + 2124, 2124, 2123, 2143, 2226, 2309, 2303, 2099, 2079, 2056, 1999, 1975, 1948, 2077, 2054, + 2024, 1956, 1977, 1963, 1948, 1936, 1607, 1703, 1700, 1524, 1485, 1495, 1485, 1425, 1431, + 1434, 1290, 1293, 1270, 1268, 1313, 1232, 1237, 1341, 1152, 1159, 1418, 1560, 1347, 1349, + 1439, 1441, 1256, 1216, 1218, 1216, 1218, 1216, 1212, 1383, 1380, 1330, 1357, 1549, 1547, + 1547, 1681, 1738, 1689, 1709, 1717, 1827, 1794, 1801, 1806, 1809, 1813, 1852, 1851, 1885, + 1883, 1798, 1805, 1845, 1926, 1923, 1795, 1787, 1785, 1780, 1683, 1678, 1563, 1497, 1601, + 1615, 1547, 1560, 1572, 1603, 1615, 1626, 1636, 1574, 1598, 1605, 1694, 1650, 1648, 1649, + 1651, 1845, 1782, 1784, 1723, 1725, 1730, 1737, 1744, 1649, 1657, 1666, 1565, 1819, 1829, + 1841, 1987, 1996, 1972, 1978, 1831, 1917, 1875, 1865, 1903, 1907, 1936, 1885, 1950, 2304, + 2152, 2145, 2090, 2086, 2083, 2080, 1998, 1995, 1994, 2146, 2146, 2146, 2193, 2192, 2194, + 2226, 2224, 2233, 2235, 2337, 2330, 2326, 2306, 2299, 2293, 2084, 2078, 2074, 2067, 2063, + 2057, 2269, 2202, 2194, 2192, 2181, 2175, 2247, 2242, 2250, 2245, 2242, 2236, 2230, 2225, + 2233, 2348, 2322, 2317, 2308, 2302, 2310, 2280, 2261, 2256, 2253, 2246, 2123, 2121, 2112, + 2112, 2111, 2108, 2109, 2109, 2110, 1975, 1973, 1895, 1895, 1896, 2017, 2208, 2205, 2196, + 2226, + ], + [ + 2402, 2416, 2416, 2418, 1936, 1952, 1935, 2202, 2240, 2241, 2206, 2203, 2275, 2273, 2344, + 2348, 2231, 2165, 1995, 2006, 2012, 1999, 1930, 1936, 1940, 1893, 1889, 2025, 1917, 1891, + 1879, 1930, 1926, 1890, 1778, 1948, 2039, 2034, 2019, 2006, 2075, 2052, 2024, 1917, 1881, + 1888, 1827, 1824, 1907, 1918, 1764, 1834, 1800, 1651, 1653, 1573, 1958, 2108, 2201, 1886, + 1899, 1907, 1693, 1706, 1091, 1110, 1127, 1350, 1359, 1367, 896, 838, 851, 758, 776, 793, + 868, 891, 920, 939, 959, 974, 1199, 962, 985, 1132, 1139, 1286, 1409, 1394, 1388, 1389, + 1386, 1383, 1339, 1335, 1386, 1413, 1402, 1496, 1623, 1615, 1606, 1596, 1684, 1678, 1838, + 1831, 1847, 1711, 1626, 1717, 1520, 1523, 1519, 1633, 1626, 1622, 1572, 1554, 1547, 1544, + 1536, 1468, 1540, 1591, 1529, 1599, 1604, 1607, 1676, 1693, 1729, 1745, 1814, 1911, 1757, + 1905, 1945, 1956, 1853, 1749, 1803, 1804, 1797, 1790, 1783, 1808, 1803, 1790, 1848, 1859, + 1980, 1985, 2043, 2038, 2033, 2068, 2058, 2048, 2041, 2042, 2134, 2291, 2283, 2379, 2429, + 2345, 2446, 2434, 2510, 2487, 2290, 2263, 2239, 2214, 2120, 2212, 2201, 2193, 2194, 2191, + 2194, 2200, 2280, 2287, 2307, 2280, 2272, 2262, 2336, 2324, 2301, 2312, 2301, 2240, 2240, + 2226, 2218, 2331, 2326, 2329, 2406, 2402, 2394, 2420, 2409, 2403, 2433, 2423, 2418, 2416, + 2414, 2416, 2472, 2350, 2352, 2350, 2477, 2474, 2309, 2289, 2194, 2273, 2270, 2269, 2283, + 2289, 2299, 2309, 2352, 2340, 2432, 2403, 2449, 2456, 2484, 2508, 2533, 2412, 2402, + ], + [ + 1783, 1657, 1639, 1744, 1816, 1852, 2002, 2002, 2019, 1938, 2053, 2240, 2197, 2213, 2235, + 2207, 2405, 2343, 2352, 2356, 2422, 2142, 2204, 2146, 2025, 2114, 2103, 2107, 2171, 2165, + 2168, 2140, 2117, 2127, 2013, 2076, 2050, 2024, 2074, 1834, 1853, 1846, 1900, 1836, 1693, + 1699, 1727, 1686, 1701, 1711, 1568, 1584, 1751, 1956, 1944, 1810, 1952, 2178, 2191, 2177, + 2158, 2031, 2025, 2016, 1397, 1902, 1877, 1853, 1304, 1620, 1310, 1313, 1322, 1328, 1337, + 1220, 1236, 1149, 805, 823, 836, 759, 756, 1131, 1218, 1246, 1246, 1413, 1301, 1295, 1286, + 1520, 1488, 1483, 1536, 1531, 1594, 1711, 1700, 1687, 1748, 1789, 1772, 1756, 1741, 1523, + 1389, 1385, 1381, 2089, 1854, 1855, 1925, 1928, 2032, 2039, 1943, 1909, 1881, 1710, 1642, + 1644, 1662, 1566, 1569, 1634, 1441, 1733, 1754, 1778, 1850, 1954, 2369, 2389, 2426, 2442, + 2542, 2558, 2618, 2630, 2256, 2004, 1919, 1833, 2121, 1716, 1713, 1563, 1644, 1747, 1682, + 1781, 1893, 1756, 1928, 1903, 1963, 1881, 2212, 2202, 2196, 2295, 2399, 2410, 2405, 2526, + 2504, 2530, 2473, 2459, 2450, 2425, 2323, 2301, 2290, 2271, 2352, 2271, 2238, 2131, 2145, + 2066, 2029, 1987, 1967, 1965, 1895, 1898, 1896, 1656, 1569, 1563, 1442, 1452, 1107, 1113, + 1073, 1057, 1569, 1174, 1165, 1172, 1724, 1698, 1726, 1424, 1461, 1396, 1416, 1428, 1423, + 1412, 1252, 1138, 1101, 1077, 1066, 1908, 1920, 1735, 1871, 1603, 1652, 1701, 2046, 1697, + 1690, 1680, 1665, 2273, 1866, 1864, 1878, 1898, 1918, 1940, 1960, 2168, 1853, 1828, 1783, + ], + [ + 1807, 1787, 1614, 1650, 1547, 1718, 1757, 1834, 1783, 1850, 1938, 1650, 1712, 1700, 1823, + 2050, 2055, 2051, 2028, 2217, 2078, 2252, 2261, 2398, 2354, 2267, 2251, 1944, 1922, 1902, + 2002, 1718, 1824, 1837, 1799, 1845, 1773, 1794, 1778, 1753, 1641, 1650, 1625, 1435, 1377, + 1321, 1452, 1452, 1530, 1633, 1744, 1807, 1806, 1803, 1782, 2065, 2175, 2162, 2072, 1852, + 1685, 1810, 1986, 1628, 1452, 1481, 1500, 1305, 1325, 1368, 1386, 1290, 1310, 1326, 1343, + 1087, 1085, 1103, 1126, 1099, 1110, 1115, 1120, 835, 844, 855, 869, 1120, 1313, 1324, 1365, + 1375, 1445, 1524, 1512, 1484, 1470, 1562, 1556, 1518, 1559, 1545, 1613, 1483, 1476, 1475, + 1607, 1502, 1464, 1466, 1289, 1846, 1806, 1797, 1790, 1834, 2047, 1821, 1816, 1605, 1221, + 1398, 1239, 564, 655, 1009, 1011, 2113, 2125, 2126, 2180, 2444, 2448, 2453, 2591, 2720, + 2340, 2339, 2759, 2413, 2409, 2395, 2236, 1793, 1799, 1483, 1587, 1721, 1590, 1655, 1695, + 1771, 1786, 1858, 2003, 2149, 2123, 2164, 2135, 2482, 2472, 2620, 2615, 2589, 2574, 2530, + 2524, 2469, 2473, 2360, 2278, 2197, 2115, 2045, 2002, 2016, 2079, 1965, 1946, 1822, 1666, + 1525, 1427, 1640, 1482, 2374, 1876, 1681, 1633, 1685, 1647, 1873, 1938, 1885, 1899, 1665, + 1552, 1468, 1354, 928, 982, 1013, 1031, 1032, 1019, 987, 925, 816, 482, 592, 732, 836, 942, + 1048, 1054, 1047, 1034, 985, 925, 850, 761, 644, 508, 416, 278, 108, 1139, 1275, 1398, + 1506, 1602, 1998, 2031, 2067, 2053, 2030, 2031, 2010, 1972, 1971, 1807, + ], + [ + 2104, 2120, 2035, 2020, 1945, 1973, 1961, 1943, 1909, 2029, 2063, 2087, 2128, 2072, 1732, + 1733, 1654, 1919, 1764, 1775, 1888, 2034, 2031, 2076, 2071, 2034, 2042, 2099, 2094, 2115, + 2011, 2101, 2107, 2042, 2113, 1993, 2225, 2200, 2178, 2209, 2261, 2120, 2174, 2112, 1814, + 1818, 1846, 1875, 1880, 1817, 1836, 1951, 2029, 2024, 1955, 1955, 1953, 1947, 1944, 1742, + 1867, 1783, 1961, 1874, 1873, 1621, 1675, 1019, 1002, 1098, 1120, 1145, 1216, 1291, 1435, + 1448, 1405, 1378, 1373, 1252, 1220, 1063, 1071, 1077, 1078, 1187, 1173, 1150, 1196, 1475, + 1459, 1385, 1481, 1483, 1489, 1485, 1621, 1514, 1438, 1583, 1679, 1743, 1705, 1702, 1746, + 1768, 1745, 1569, 1609, 1453, 1417, 1863, 1923, 1810, 1793, 1623, 1528, 1531, 1492, 1581, + 1623, 1730, 2563, 2583, 2637, 2513, 2483, 2355, 2373, 2682, 2603, 2594, 2687, 2671, 2615, + 2653, 2914, 2543, 2540, 1928, 1935, 1752, 1736, 1745, 1665, 1688, 1656, 1700, 1685, 1853, + 1827, 1909, 2426, 2389, 2407, 2390, 2520, 2326, 2310, 2498, 2425, 2418, 2331, 2324, 2289, + 2250, 2314, 2198, 2188, 2152, 2100, 2004, 1898, 1862, 1839, 1662, 1811, 2168, 2029, 2145, + 1860, 1975, 2156, 2162, 2136, 2327, 2275, 2269, 2304, 2306, 2230, 2176, 2075, 2043, 1555, + 1487, 1418, 1350, 1283, 742, 913, 1085, 1205, 1248, 1262, 1266, 1253, 1254, 1330, 1401, + 1508, 1643, 1748, 1832, 1883, 1862, 1795, 1700, 1557, 1354, 1223, 1054, 920, 861, 833, 824, + 817, 769, 686, 574, 304, 232, 1599, 1640, 1672, 1693, 1705, 1709, 1705, 2083, 2104, + ], + [ + 1437, 1447, 1428, 1270, 1347, 1317, 636, 781, 512, 620, 704, 664, 581, 2198, 2226, 2118, + 1998, 2039, 2014, 2087, 1950, 2141, 1973, 1950, 1856, 1830, 1999, 2061, 2063, 2218, 2267, + 2322, 2289, 2218, 2168, 2202, 2050, 2046, 1993, 2023, 1942, 1919, 1886, 1946, 1904, 1915, + 1846, 1652, 1643, 1777, 2013, 1998, 2188, 2162, 2123, 2032, 1803, 1707, 1740, 1831, 1990, + 2015, 1821, 2027, 2036, 1988, 1803, 1554, 1635, 1693, 1897, 1768, 1870, 1650, 1678, 1753, + 1641, 1686, 1738, 1761, 1572, 1872, 1092, 1121, 1153, 1181, 1339, 1181, 1212, 1160, 1308, + 1386, 1390, 1504, 1526, 1557, 1609, 1644, 1669, 1809, 1822, 1886, 1785, 1924, 1916, 1445, + 1722, 1748, 1769, 1677, 1601, 1604, 2024, 2077, 1965, 2021, 1936, 2080, 2096, 2079, 2271, + 2286, 2264, 2291, 2303, 2306, 2168, 2205, 2252, 2223, 2251, 2313, 2303, 2305, 2316, 2329, + 2551, 2459, 2550, 2000, 1982, 1737, 1356, 1582, 1596, 1668, 1516, 1489, 1524, 1652, 1633, + 1648, 1782, 1860, 1970, 2243, 2339, 2320, 2297, 2337, 2265, 2212, 1914, 1948, 1865, 1822, + 1938, 1941, 1960, 1879, 1859, 1759, 250, 332, 653, 767, 2188, 2252, 2176, 2014, 2136, 2023, + 2083, 2228, 2110, 2139, 2128, 1337, 1501, 1220, 1093, 1306, 1775, 1917, 1802, 1742, 1377, + 441, 799, 1011, 1292, 1507, 1588, 1724, 1909, 1992, 2132, 2262, 2280, 2314, 2387, 2330, + 2314, 2285, 2203, 2141, 2084, 1993, 1893, 1740, 1556, 1344, 1166, 974, 804, 647, 523, 267, + 1249, 924, 1074, 1423, 1723, 1823, 1819, 1882, 1692, 1764, 1807, 1818, 1437, + ], + [ + 1143, 1011, 971, 983, 936, 872, 824, 755, 723, 1019, 1690, 1766, 1860, 1916, 1996, 1825, + 1825, 1772, 1763, 1843, 2043, 1937, 2112, 2002, 1986, 1900, 1863, 1844, 2001, 2220, 2248, + 2262, 2311, 2225, 2229, 2330, 2225, 2309, 2290, 2251, 2235, 2244, 2313, 2334, 1947, 1734, + 1748, 1635, 1518, 1586, 1762, 1696, 1634, 1659, 1609, 1587, 1410, 1384, 1140, 1703, 1685, + 1690, 1822, 1671, 1858, 2065, 1856, 1819, 1784, 1986, 1740, 1427, 1202, 1136, 1038, 875, + 1263, 1492, 1520, 1616, 1503, 1684, 1747, 1506, 1559, 1611, 1552, 1508, 1579, 1084, 1133, + 1485, 1855, 1772, 1721, 1798, 1811, 1775, 1774, 1766, 1752, 1627, 1664, 1657, 1912, 2099, + 2137, 1898, 1949, 1973, 1937, 1830, 1887, 2128, 2216, 2107, 2390, 2381, 2379, 2311, 2318, + 2199, 2157, 2128, 2095, 2157, 2236, 2272, 2297, 2265, 2186, 2062, 2001, 2217, 2440, 2130, + 2501, 2474, 2332, 2522, 2499, 2258, 1939, 1812, 1786, 1699, 1913, 1823, 1756, 1794, 1750, + 1895, 2024, 1970, 1925, 1965, 1970, 1991, 2043, 1982, 1954, 1788, 1695, 1684, 1638, 1734, + 1619, 1485, 1558, 1422, 1460, 1498, 1459, 1658, 937, 91, 81, 121, 170, 80, 130, 2078, 2184, + 2128, 2081, 2059, 2034, 1996, 1642, 1701, 1780, 1578, 1535, 1489, 1440, 1388, 1334, 1569, + 1750, 1888, 2016, 2083, 2134, 2221, 2338, 2410, 2438, 2446, 2448, 2503, 2563, 2558, 2517, + 2417, 2371, 2331, 2283, 2212, 2034, 1865, 1743, 1656, 1552, 1387, 1091, 693, 414, 876, + 1153, 1509, 1282, 1313, 1725, 1647, 1662, 1674, 1756, 1704, 1505, 1134, 1143, + ], + [ + 999, 929, 817, 777, 724, 772, 779, 612, 635, 667, 840, 967, 944, 935, 1024, 1085, 1154, + 1364, 1639, 1813, 1980, 1909, 1899, 1945, 1881, 2043, 2180, 2203, 2152, 1932, 1921, 2126, + 2169, 2447, 2331, 2343, 2366, 2441, 2461, 2177, 2301, 2100, 2137, 2333, 2377, 2363, 2313, + 2383, 2389, 2335, 2313, 2230, 2183, 1866, 1902, 1510, 1417, 1300, 1836, 1856, 1804, 1768, + 1757, 1779, 1781, 1825, 1632, 1236, 2372, 2174, 1827, 1402, 956, 1308, 1388, 1287, 1547, + 1615, 1454, 1431, 1529, 1520, 1577, 1761, 2024, 1726, 1670, 1259, 1142, 1183, 1284, 1579, + 1699, 1965, 2088, 1954, 1983, 2152, 1428, 1382, 1476, 1798, 1960, 2075, 1818, 1896, 2048, + 1976, 2018, 2011, 2036, 2184, 2195, 2550, 2385, 2319, 2341, 2350, 2353, 2320, 2314, 2314, + 2211, 2242, 2352, 2284, 2206, 2158, 1823, 2017, 1892, 1965, 1943, 2181, 2147, 2277, 2215, + 2342, 2269, 2375, 2263, 2254, 2253, 2233, 2076, 2161, 2178, 2212, 2129, 2099, 2110, 2197, + 2232, 2166, 2127, 2017, 1867, 1956, 1900, 1647, 1646, 69, 53, 1809, 31, 1993, 1792, 1688, + 1626, 1552, 1810, 2049, 2042, 47, 117, 334, 190, 194, 222, 262, 293, 2057, 2042, 1981, + 1901, 1824, 2042, 2045, 1581, 1564, 1540, 766, 798, 1000, 412, 635, 789, 929, 1363, 1333, + 1469, 1749, 1889, 2044, 2165, 2235, 2337, 2454, 2547, 2644, 2713, 2750, 2765, 2754, 2720, + 2644, 2536, 2480, 2434, 2418, 2410, 2334, 2104, 1799, 1339, 832, 404, 1084, 1133, 1565, + 1199, 1670, 1665, 1504, 1504, 1327, 1050, 1195, 1192, 1221, 999, + ], + [ + 781, 710, 656, 654, 609, 629, 634, 643, 685, 741, 778, 976, 1131, 1267, 833, 914, 1292, + 1364, 1430, 1265, 1372, 1626, 1637, 1734, 1708, 1830, 1757, 1765, 1835, 1938, 1684, 1780, + 1761, 2055, 2228, 2409, 2250, 2269, 2411, 1991, 2000, 2098, 2183, 2359, 2313, 2162, 2137, + 2000, 1809, 1871, 1807, 1730, 1795, 1905, 1806, 1658, 1409, 1409, 1721, 1694, 1995, 1770, + 1502, 1293, 1642, 2312, 2324, 1823, 1886, 2058, 2219, 1645, 1553, 1374, 2039, 1443, 1242, + 1167, 1137, 905, 992, 1195, 1160, 1246, 1430, 1703, 1489, 1640, 1536, 1638, 1564, 1720, + 1542, 1488, 34, 25, 750, 1421, 2812, 2849, 2317, 2032, 2015, 2139, 2019, 2371, 2452, 2507, + 2541, 2563, 2672, 2708, 2551, 2384, 2626, 2669, 2476, 2490, 2558, 2489, 2390, 2396, 2325, + 2308, 2028, 1983, 1953, 2043, 2123, 1807, 1763, 1779, 1750, 1804, 2077, 2151, 2163, 2153, + 2112, 2147, 2133, 1816, 1740, 1854, 1761, 1709, 1906, 1913, 1835, 1809, 2114, 2003, 2012, + 1950, 1982, 1903, 1872, 1821, 1663, 1522, 1468, 1389, 1335, 1551, 1389, 2084, 2165, 1725, + 1721, 1390, 943, 941, 1381, 1302, 1249, 573, 599, 1880, 192, 460, 989, 308, 470, 768, 1847, + 1736, 1878, 1554, 1189, 1450, 1343, 1468, 1439, 1406, 1735, 1271, 1279, 1230, 1177, 907, + 1047, 895, 1429, 1316, 1680, 1988, 2212, 2411, 2573, 2730, 2851, 2887, 2900, 2893, 2867, + 2843, 2830, 2789, 2732, 2658, 2523, 2389, 2267, 2130, 1863, 1391, 855, 968, 1325, 1385, + 1054, 1079, 1157, 988, 969, 827, 887, 763, 798, 788, 781, + ], + [ + 786, 685, 655, 623, 524, 491, 454, 524, 563, 577, 600, 641, 675, 688, 757, 1022, 983, 918, + 871, 1006, 1056, 1111, 1169, 1256, 1087, 1305, 1570, 1724, 1774, 1745, 1836, 1749, 1616, + 1792, 2022, 2109, 2285, 2233, 2218, 2160, 2218, 2206, 1891, 1993, 2083, 2143, 2120, 2109, + 1925, 1950, 1943, 1934, 1893, 1935, 1866, 1853, 1735, 1658, 1617, 1896, 1988, 1991, 1742, + 1698, 2000, 1961, 1979, 1933, 1688, 1689, 1594, 1601, 1199, 1478, 1274, 1139, 1143, 1256, + 1263, 1224, 1253, 1137, 1179, 1303, 1236, 1354, 1681, 1789, 1716, 1639, 1672, 1799, 1819, + 1397, 1379, 1932, 1936, 2295, 2069, 1888, 2274, 2066, 2389, 2297, 2288, 2409, 2583, 2623, + 2489, 2497, 2988, 2918, 2992, 2734, 2737, 2744, 2732, 2439, 2416, 2381, 2303, 2123, 2003, + 2216, 2359, 2194, 2041, 2195, 2245, 2094, 1982, 2050, 2066, 2272, 2267, 2357, 2283, 2189, + 2122, 2162, 2284, 2180, 1849, 1873, 1908, 1955, 1945, 1868, 1808, 1748, 2039, 2007, 2021, + 1945, 2019, 1909, 1784, 1838, 1770, 1775, 1727, 1520, 1526, 1405, 1464, 1351, 1142, 1207, + 1076, 1309, 933, 969, 877, 547, 618, 539, 555, 593, 583, 578, 922, 743, 1163, 1318, 747, + 845, 1354, 1584, 961, 1249, 1816, 1992, 1698, 1702, 1237, 1030, 1100, 1240, 1189, 1428, + 583, 555, 991, 1071, 1453, 1915, 2264, 2490, 2638, 2790, 2877, 2910, 2966, 3064, 3123, + 3116, 3018, 2957, 2893, 2749, 2506, 2078, 1658, 1345, 965, 1262, 1249, 1285, 1149, 1181, + 1237, 1121, 972, 1024, 835, 964, 810, 1043, 848, 824, 786, + ], + [ + 535, 538, 581, 550, 450, 486, 456, 450, 460, 443, 465, 480, 564, 562, 573, 561, 624, 652, + 676, 691, 768, 793, 847, 969, 861, 860, 1244, 1413, 1541, 1646, 1666, 1710, 1443, 1552, + 1685, 2200, 2606, 2341, 2254, 2339, 2296, 2257, 2277, 2314, 2298, 2453, 2487, 2514, 2493, + 2460, 2419, 2560, 2257, 2350, 2203, 2440, 2007, 2237, 2162, 2134, 2113, 2107, 2046, 2012, + 2037, 2075, 2026, 1996, 1683, 1396, 1503, 1501, 1578, 1613, 1758, 1462, 1390, 1350, 1820, + 1833, 1877, 1795, 1930, 1974, 1660, 1774, 1412, 1770, 1612, 1066, 1650, 1444, 1545, 1456, + 1464, 1016, 2384, 2396, 2397, 2367, 2597, 2530, 2527, 2420, 2586, 2661, 2735, 2804, 1983, + 2253, 2635, 2648, 2917, 2755, 2626, 2568, 2627, 2676, 2703, 2605, 2625, 2365, 2009, 2089, + 2382, 2300, 2309, 2303, 2273, 2185, 2368, 2475, 2357, 2690, 2552, 2602, 2837, 2832, 2697, + 2720, 2731, 2696, 2225, 2273, 1993, 2034, 1894, 1815, 1854, 1804, 1808, 1843, 2187, 2115, + 1864, 2027, 1906, 1721, 1615, 1717, 1557, 1621, 2141, 1918, 1873, 1760, 1779, 1762, 1553, + 1553, 1759, 1492, 1576, 1551, 999, 1117, 1271, 1491, 1429, 1335, 1316, 983, 988, 1050, 827, + 869, 1090, 1000, 1552, 1394, 1788, 1674, 1668, 1571, 1479, 1538, 1590, 1686, 1068, 781, + 916, 937, 927, 1134, 1471, 1602, 1907, 2260, 2453, 2606, 2758, 2888, 2977, 3062, 3139, + 3192, 3141, 3092, 2990, 2653, 2266, 1928, 1841, 1592, 1003, 699, 888, 1350, 1078, 794, + 1205, 1103, 733, 764, 837, 628, 675, 652, 612, 579, 535, + ], + [ + 412, 382, 435, 449, 458, 468, 472, 449, 456, 503, 492, 517, 562, 577, 594, 928, 1942, 1839, + 2044, 1997, 1955, 856, 993, 1020, 935, 825, 865, 898, 1176, 1211, 1623, 1724, 1736, 1603, + 1763, 1720, 1745, 1759, 1896, 2183, 2445, 2240, 2360, 2389, 2242, 2530, 2659, 2607, 2647, + 2422, 2570, 2621, 2645, 2610, 2582, 2525, 2617, 2545, 2430, 2405, 2530, 2518, 2436, 2703, + 2551, 2211, 2191, 1728, 2054, 2302, 2118, 2553, 2582, 2556, 1676, 2518, 2195, 2462, 2199, + 2098, 2263, 2216, 2028, 2161, 2412, 2283, 2276, 2465, 2634, 2381, 2568, 2299, 2238, 2385, + 2309, 2683, 2510, 2643, 2851, 2802, 2807, 3079, 3010, 2987, 2997, 2375, 2217, 2059, 2283, + 2371, 2231, 2368, 2427, 2353, 1517, 1741, 2279, 2087, 1876, 2021, 2326, 2002, 2065, 2228, + 2364, 2034, 1941, 1541, 1353, 1485, 1597, 1682, 2326, 2309, 2393, 2564, 2613, 2549, 2447, + 2287, 2119, 2178, 2145, 2313, 2380, 2410, 2491, 2317, 2154, 2157, 2255, 2093, 2190, 2202, + 2058, 1829, 1837, 1771, 1669, 1557, 1578, 1817, 1713, 2017, 2051, 2094, 1923, 1928, 1978, + 1823, 1489, 1359, 1877, 1869, 2062, 2076, 1843, 1747, 1796, 1757, 1762, 1570, 1608, 1408, + 1388, 1635, 1560, 1550, 1615, 1968, 1877, 1777, 1797, 1635, 1417, 1928, 1500, 1643, 1569, + 1635, 947, 1142, 1218, 1203, 1357, 1530, 1811, 1776, 2122, 2342, 2447, 2722, 2880, 2979, + 3124, 3213, 3183, 3099, 3028, 2720, 2153, 1672, 1324, 925, 545, 519, 1002, 1426, 1453, + 1453, 1048, 932, 827, 774, 667, 608, 543, 574, 530, 502, 412, + ], + [ + 424, 422, 431, 459, 486, 501, 499, 523, 471, 513, 544, 1088, 2148, 2092, 2146, 2216, 2201, + 2067, 2092, 2158, 2108, 2137, 2264, 2230, 2255, 933, 950, 917, 1007, 1050, 1179, 1168, + 1334, 1415, 1582, 1615, 1687, 1654, 1721, 1860, 2399, 2409, 2472, 2494, 2569, 2355, 2470, + 2531, 2372, 2465, 2492, 2524, 2602, 2613, 2550, 2570, 2449, 2429, 2525, 2641, 2818, 2695, + 2788, 2780, 2683, 2727, 2563, 2907, 2684, 2368, 2283, 2327, 2663, 2668, 2515, 2356, 2406, + 2433, 2326, 2418, 2270, 2235, 2142, 2214, 2517, 2523, 2584, 2825, 2966, 2900, 2773, 2778, + 3051, 3064, 2763, 2629, 2551, 2687, 2733, 2639, 2607, 1127, 1164, 1845, 1427, 1436, 1323, + 1304, 2531, 2458, 2414, 2486, 2201, 2332, 2142, 2238, 2257, 2308, 2332, 2676, 2740, 2291, + 2371, 2374, 2125, 1783, 1679, 1429, 1142, 1001, 2235, 2331, 2291, 2474, 2468, 2542, 2571, + 2606, 2561, 2585, 2571, 2562, 2352, 2365, 2339, 2283, 2277, 2382, 2639, 2373, 2466, 2472, + 2395, 2351, 2335, 2240, 2221, 2233, 2145, 2078, 2168, 2197, 2143, 2090, 1978, 2171, 2165, + 2174, 1886, 1947, 1921, 1960, 1920, 2041, 2394, 2474, 2005, 1697, 1659, 1712, 1884, 1656, + 1771, 2267, 2140, 1981, 1789, 1714, 1736, 1693, 1565, 1808, 1732, 1814, 1765, 1396, 1087, + 1041, 1473, 1460, 1475, 1293, 1073, 1041, 1284, 1585, 2036, 2479, 1786, 2144, 2339, 2563, + 2790, 2954, 3091, 3177, 3011, 2713, 2408, 2274, 2290, 2121, 1541, 950, 779, 410, 461, 826, + 801, 945, 860, 900, 724, 695, 718, 596, 491, 452, 488, 482, 424, + ], + [ + 536, 503, 524, 476, 469, 475, 481, 493, 519, 540, 1216, 2072, 2052, 2182, 2208, 2091, 2100, + 2099, 2083, 2166, 2240, 2281, 2289, 2255, 2312, 2318, 2350, 1305, 1131, 1198, 1986, 1486, + 1550, 2341, 2449, 2478, 2338, 2350, 2399, 2403, 2464, 2548, 2642, 2605, 2534, 2478, 2659, + 2688, 2729, 2430, 2636, 2576, 2424, 2409, 2497, 2524, 2560, 2562, 2620, 2683, 2651, 2692, + 2714, 2749, 2765, 2629, 2492, 2520, 2458, 2503, 2444, 2742, 2726, 2728, 2685, 2602, 2577, + 2572, 2680, 2683, 2319, 2640, 2446, 2766, 2802, 2815, 2858, 2921, 3064, 2846, 2966, 2996, + 2953, 3142, 3180, 3089, 2847, 2949, 2716, 2161, 2123, 2397, 2435, 2375, 2265, 2571, 2908, + 2794, 2610, 2615, 2439, 2317, 2267, 2150, 2267, 2357, 2301, 2344, 2726, 2742, 2580, 2516, + 2431, 2521, 1708, 1776, 1563, 1693, 1389, 1330, 1433, 2129, 2179, 2163, 2119, 2243, 2245, + 2270, 2337, 2370, 2320, 2273, 2319, 2308, 2299, 2301, 2393, 2426, 2439, 2381, 2426, 2493, + 2555, 2423, 2539, 2285, 2031, 2002, 1981, 1991, 2131, 1999, 2026, 2025, 2240, 2333, 2068, + 2038, 2057, 2045, 2065, 2159, 2345, 2288, 2290, 2322, 2359, 2214, 2059, 2069, 2239, 2143, + 1910, 2021, 1893, 1910, 1905, 2019, 1872, 1858, 1827, 1844, 1593, 1443, 1625, 1690, 1893, + 2077, 1978, 1579, 1303, 1788, 1184, 752, 1536, 1597, 613, 1235, 1677, 2132, 2379, 2552, + 2687, 2662, 2615, 2732, 2604, 1868, 1042, 679, 657, 610, 736, 667, 767, 838, 936, 773, 792, + 810, 885, 1047, 1029, 806, 738, 641, 611, 515, 521, 487, 536, + ], + [ + 563, 514, 511, 483, 509, 555, 578, 633, 865, 1886, 2028, 2167, 2172, 2164, 2128, 2144, + 2125, 2111, 2145, 2180, 2233, 2179, 2232, 1915, 1907, 2035, 2013, 2229, 2226, 2231, 2242, + 2306, 2345, 2338, 2394, 2330, 2323, 2276, 2325, 2421, 2614, 2731, 2740, 2644, 2669, 2554, + 2539, 2535, 2630, 2619, 2640, 2565, 2582, 2340, 2352, 2349, 2285, 2475, 2514, 2507, 2808, + 2554, 2599, 2679, 2530, 2571, 2600, 2652, 2582, 2508, 2604, 2595, 2304, 2527, 2557, 2614, + 2559, 2476, 2632, 2589, 2837, 2799, 2754, 2672, 2912, 3043, 3094, 3223, 2985, 3042, 2984, + 3108, 3130, 3185, 3149, 3214, 3026, 2917, 2863, 2460, 2470, 2323, 2433, 2434, 2454, 2506, + 2472, 2360, 2532, 2480, 2402, 2442, 2361, 2099, 2015, 2270, 2293, 2388, 2752, 2803, 2449, + 2473, 2250, 1553, 1752, 1524, 1455, 845, 1239, 1719, 1770, 1885, 2028, 1930, 1990, 2037, + 1988, 2156, 2184, 2244, 2242, 2154, 2188, 2097, 2164, 2347, 2423, 2479, 2485, 2457, 2322, + 2266, 2242, 2300, 2233, 2063, 1999, 1928, 1887, 1612, 2006, 1944, 1997, 2046, 2130, 2326, + 2446, 2501, 2504, 2383, 2394, 2411, 2392, 2485, 2408, 2382, 2114, 2161, 2242, 2235, 2298, + 2508, 2248, 2234, 2470, 2280, 2290, 2219, 2286, 2336, 1994, 1828, 1818, 1587, 1533, 1694, + 1839, 2199, 2471, 2031, 1690, 1468, 1357, 883, 1461, 1496, 1257, 1532, 1942, 2394, 2674, + 2622, 2352, 1755, 1435, 1120, 906, 890, 611, 629, 583, 686, 631, 576, 695, 746, 1048, 1240, + 858, 1216, 857, 975, 798, 608, 589, 665, 629, 555, 550, 582, 563, + ], + [ + 627, 671, 694, 654, 650, 629, 626, 790, 1804, 1990, 2108, 2120, 2096, 2082, 2126, 1956, + 2076, 2143, 2206, 2181, 2209, 2216, 2235, 2280, 1914, 2005, 2302, 2240, 2276, 2264, 2262, + 2266, 2336, 2352, 2263, 2314, 2310, 2320, 2400, 2656, 2588, 2737, 2784, 2702, 2713, 2582, + 2522, 2553, 2549, 2570, 2560, 2501, 2603, 2596, 2479, 2280, 2367, 2428, 2338, 2372, 2414, + 2355, 2373, 2533, 2555, 2541, 2470, 2599, 2555, 2557, 2542, 2523, 2326, 2372, 2388, 2558, + 2596, 2580, 2510, 2719, 2861, 2784, 2696, 2697, 2668, 2990, 3021, 3074, 3085, 3013, 2935, + 2994, 3098, 2869, 3155, 2960, 3058, 3269, 3143, 2904, 2438, 2454, 2181, 2382, 2374, 2430, + 2273, 2286, 2466, 2337, 2316, 2156, 1909, 1983, 2023, 2253, 2279, 2276, 2235, 2079, 1117, + 640, 651, 659, 845, 1088, 696, 799, 846, 747, 1034, 1093, 1075, 1875, 1901, 1943, 1838, + 1849, 2112, 2271, 2299, 2296, 2257, 2305, 2338, 2410, 2446, 2485, 2515, 2489, 2584, 2608, + 2607, 2601, 2563, 2491, 2315, 2271, 2193, 2267, 2283, 2279, 2214, 2357, 2221, 2354, 2543, + 2557, 2539, 2311, 2245, 2341, 2280, 2313, 2369, 2502, 2545, 2488, 2446, 2460, 2280, 2335, + 2232, 2572, 2290, 2208, 2048, 1435, 1729, 1141, 1465, 1486, 1274, 1681, 1708, 1665, 2431, + 2578, 2302, 2325, 2242, 1931, 1265, 1131, 942, 1097, 1406, 1437, 1873, 2377, 2640, 2574, + 1774, 1177, 639, 613, 822, 722, 627, 594, 537, 573, 631, 612, 633, 826, 1120, 1389, 820, + 1617, 1430, 743, 672, 650, 690, 654, 651, 609, 583, 624, 627, + ], + [ + 722, 704, 712, 769, 739, 1562, 1994, 2142, 2110, 2024, 2074, 2037, 1997, 1962, 1967, 1998, + 2082, 2112, 2105, 2113, 2098, 2223, 2206, 2238, 2133, 2169, 2221, 2204, 2116, 2151, 2188, + 2239, 2271, 2308, 2326, 2356, 2327, 2457, 2519, 2656, 2620, 2671, 2660, 2771, 2798, 2763, + 2808, 2753, 2653, 2736, 2695, 2602, 2709, 2706, 2518, 2509, 2478, 2521, 2369, 2383, 2423, + 2496, 2526, 2600, 2589, 2599, 2568, 2566, 2540, 2520, 2387, 2486, 2515, 2593, 2653, 2770, + 2665, 2580, 2669, 2484, 2619, 2781, 2742, 2717, 2903, 2744, 2901, 3090, 3276, 3220, 2845, + 2922, 2919, 3182, 3187, 2928, 2845, 2935, 2921, 2815, 2479, 2328, 2330, 2485, 2475, 2194, + 2109, 2069, 2245, 2022, 1914, 2028, 2145, 2185, 2080, 2253, 2188, 1930, 1937, 1826, 746, + 663, 686, 683, 748, 770, 777, 702, 682, 795, 869, 1019, 1875, 1643, 1711, 1913, 1968, 2214, + 2542, 2393, 2351, 2426, 2396, 2394, 2390, 2501, 2464, 2470, 2444, 2498, 2491, 2496, 2484, + 2633, 2668, 2673, 2605, 2737, 2666, 2490, 2640, 2692, 2432, 2628, 2634, 2693, 2556, 2565, + 2586, 2420, 2400, 2512, 2518, 2576, 2569, 2503, 2522, 2448, 2423, 2269, 2001, 2031, 2012, + 2067, 2106, 1998, 1835, 1497, 1511, 1921, 1920, 1984, 1660, 1465, 1505, 2120, 2124, 2020, + 2583, 2384, 2253, 1913, 1190, 1076, 916, 1017, 1303, 2189, 1989, 2441, 2689, 2192, 1019, + 853, 648, 620, 609, 541, 503, 613, 553, 540, 569, 568, 605, 653, 703, 769, 756, 797, 779, + 675, 590, 597, 662, 650, 672, 702, 674, 658, 722, + ], + [ + 829, 871, 852, 870, 1713, 2235, 2318, 2303, 2150, 2056, 2104, 1995, 1890, 1714, 1773, 1925, + 1885, 1924, 1979, 2032, 2007, 2063, 2041, 2055, 2105, 2150, 2161, 2101, 2170, 2230, 2240, + 2280, 2291, 2351, 2401, 2390, 2477, 2469, 2557, 2587, 2633, 2689, 2681, 2715, 2706, 2697, + 2723, 2603, 2618, 2629, 2615, 2631, 2610, 2514, 2494, 2408, 2386, 2376, 2358, 2355, 2397, + 2459, 2529, 2577, 2637, 2593, 2543, 2389, 2521, 2477, 2541, 2565, 2541, 2561, 2571, 2600, + 2676, 2594, 2650, 2825, 2543, 2785, 2702, 2864, 2908, 2971, 2910, 2996, 2642, 2675, 2689, + 2549, 2614, 3055, 3026, 2814, 2643, 2722, 2598, 2374, 2378, 2397, 2385, 2175, 2200, 1608, + 1648, 1947, 1992, 1923, 1651, 1641, 1991, 1896, 1884, 2188, 1286, 692, 618, 560, 489, 560, + 612, 755, 864, 860, 835, 742, 682, 894, 1412, 1446, 1382, 1303, 1550, 1629, 1697, 2210, + 2783, 2637, 2311, 2405, 2329, 2438, 2821, 2931, 2701, 2675, 2503, 2507, 2504, 2521, 2522, + 2575, 2584, 2604, 2578, 2493, 2468, 2593, 2663, 2622, 2573, 2597, 2608, 2588, 2592, 2511, + 2663, 2586, 2616, 2560, 2573, 2610, 2582, 2506, 2366, 2485, 1833, 1766, 1558, 1575, 1551, + 1667, 1531, 1884, 1873, 1907, 1955, 2508, 2507, 2257, 1638, 1850, 1783, 1808, 1909, 2121, + 1989, 1882, 1457, 1600, 1661, 1592, 1641, 1426, 1374, 1536, 2609, 2747, 2694, 2661, 1108, + 963, 855, 989, 826, 775, 672, 639, 630, 592, 576, 667, 635, 603, 592, 596, 585, 597, 610, + 668, 664, 665, 664, 667, 743, 726, 742, 764, 829, + ], + [ + 876, 942, 930, 1069, 1844, 2054, 2045, 2139, 2040, 2009, 1978, 1988, 1896, 1718, 1733, + 1599, 1659, 1710, 1781, 1968, 2086, 2059, 2127, 2197, 2213, 2234, 2266, 2200, 2295, 2250, + 2258, 2297, 2348, 2410, 2492, 2545, 2526, 2557, 2636, 2610, 2670, 2710, 2684, 2700, 2674, + 2651, 2668, 2753, 2677, 2626, 2693, 2616, 2577, 2562, 2546, 2459, 2391, 2358, 2382, 2357, + 2353, 2465, 2481, 2538, 2687, 2703, 2685, 2601, 2553, 2466, 2460, 2521, 2696, 2600, 2639, + 2548, 2628, 2864, 2885, 2887, 2768, 2798, 2777, 2950, 3068, 3088, 3139, 3096, 2893, 2869, + 2923, 2693, 2617, 2814, 2910, 2724, 2322, 2481, 2341, 2485, 2453, 2103, 1946, 1762, 1645, + 1654, 1619, 1632, 1714, 1639, 1713, 1373, 1351, 1278, 1110, 950, 891, 723, 657, 499, 476, + 520, 497, 610, 743, 796, 725, 751, 820, 887, 794, 915, 1260, 1216, 1261, 1349, 1500, 1973, + 1916, 1479, 1945, 1001, 1075, 1117, 935, 971, 2551, 2563, 2635, 2545, 2541, 2596, 2607, + 2520, 2605, 2559, 2352, 2423, 2421, 2497, 2503, 2521, 2632, 2549, 2584, 2686, 2660, 2570, + 2680, 2697, 2718, 2653, 2576, 2602, 2491, 2390, 2428, 2128, 1939, 1683, 1728, 1912, 1695, + 1700, 1481, 1553, 1836, 2060, 1625, 2345, 2284, 2359, 2514, 2235, 1940, 1945, 2124, 2144, + 2454, 2367, 2047, 1830, 1804, 1754, 1721, 1917, 1923, 1770, 1524, 1726, 1860, 1909, 1464, + 1119, 1085, 1122, 1216, 1140, 1045, 774, 689, 681, 700, 715, 666, 606, 665, 646, 628, 657, + 678, 686, 729, 791, 807, 812, 831, 750, 772, 829, 876, + ], + [ + 900, 1011, 1023, 1096, 1546, 1747, 1571, 1546, 1888, 1846, 1960, 2089, 1672, 1704, 1659, + 1518, 1839, 1915, 1983, 2073, 2138, 2239, 2178, 2213, 2269, 2262, 2335, 2325, 2326, 2310, + 2413, 2389, 2425, 2475, 2499, 2582, 2573, 2602, 2705, 2707, 2799, 2761, 2662, 2682, 2670, + 2645, 2673, 2749, 2756, 2734, 2635, 2574, 2623, 2588, 2598, 2488, 2389, 2397, 2423, 2430, + 2443, 2502, 2588, 2594, 2504, 2429, 2454, 2381, 2407, 2452, 2506, 2496, 2548, 2676, 2793, + 2803, 2809, 3069, 3096, 3077, 2983, 2998, 2982, 2963, 3009, 3133, 3045, 2984, 3062, 3182, + 2939, 2876, 2971, 2833, 2267, 2310, 2156, 2009, 1978, 2056, 1994, 2102, 2027, 1819, 1710, + 1706, 1847, 1780, 1862, 1078, 1433, 1214, 1227, 1181, 837, 886, 616, 656, 542, 528, 479, + 604, 634, 593, 618, 573, 672, 686, 766, 988, 869, 920, 892, 1141, 1178, 1419, 1281, 1860, + 927, 872, 869, 974, 797, 854, 912, 860, 951, 1067, 948, 2250, 1791, 2510, 2592, 2696, 2570, + 2527, 2487, 2469, 2505, 2631, 2715, 2768, 2756, 2715, 2732, 2773, 2773, 2608, 2658, 2689, + 2780, 2784, 2789, 2709, 2684, 2639, 2505, 2531, 1905, 1789, 1922, 2053, 1966, 1900, 2135, + 1836, 1788, 2240, 2492, 2459, 2387, 2410, 2587, 2565, 2458, 1973, 2582, 2243, 1843, 2213, + 2229, 2050, 2057, 2037, 2148, 2099, 2223, 2212, 2393, 2068, 2081, 1888, 1792, 1570, 1413, + 1347, 1233, 1124, 1038, 776, 764, 749, 731, 716, 695, 679, 678, 678, 723, 707, 738, 791, + 828, 865, 917, 900, 951, 1045, 896, 903, 900, + ], + [ + 1248, 1174, 1111, 1110, 1153, 1302, 1758, 1471, 1536, 1907, 1966, 2052, 1733, 1507, 1684, + 1869, 1882, 1942, 2051, 2088, 2183, 2197, 2156, 2236, 2360, 2404, 2423, 2455, 2446, 2388, + 2470, 2487, 2439, 2467, 2549, 2567, 2525, 2540, 2584, 2630, 2816, 2864, 2733, 2721, 2628, + 2693, 2632, 2580, 2763, 2724, 2671, 2701, 2588, 2547, 2600, 2542, 2507, 2526, 2410, 2440, + 2462, 2517, 2584, 2498, 2495, 2449, 2467, 2550, 2614, 2561, 2622, 2578, 2524, 2799, 2999, + 2936, 3080, 3131, 3256, 3197, 3141, 3147, 3074, 3053, 3109, 3165, 3177, 3189, 3151, 3023, + 2906, 2790, 2716, 2602, 2257, 2387, 2024, 2017, 2043, 1901, 1873, 1979, 2146, 1896, 2064, + 1870, 2171, 2111, 2163, 1366, 1262, 1081, 809, 582, 648, 669, 461, 497, 639, 639, 729, 746, + 668, 601, 478, 606, 671, 722, 862, 851, 930, 867, 1007, 1124, 1210, 1147, 982, 1015, 966, + 792, 1090, 998, 856, 810, 832, 907, 905, 831, 1020, 981, 1225, 1189, 2287, 2582, 2508, + 2616, 2673, 2657, 2644, 2765, 2695, 2673, 2691, 2754, 2736, 2720, 2705, 2714, 2725, 2694, + 2770, 2792, 2757, 2784, 2677, 2627, 2577, 2542, 2600, 2591, 2257, 1976, 2063, 2120, 2240, + 2191, 2006, 1811, 1718, 2514, 2448, 2613, 2411, 2545, 2833, 2830, 2616, 2594, 2565, 2287, + 2645, 2429, 2199, 1799, 2020, 1922, 2022, 2044, 2022, 2217, 1877, 1831, 1617, 1532, 1423, + 1262, 1268, 1120, 1125, 1042, 961, 971, 866, 893, 803, 837, 798, 887, 900, 943, 909, 908, + 1002, 1039, 1117, 1196, 1180, 1754, 1938, 1197, 1248, + ], + [ + 1305, 1226, 1271, 1237, 1334, 1410, 1868, 1883, 2039, 1732, 1682, 1669, 1733, 1578, 1616, + 1941, 2048, 2109, 2050, 2061, 2184, 2203, 2147, 2276, 2298, 2368, 2421, 2432, 2470, 2444, + 2495, 2533, 2576, 2604, 2646, 2646, 2648, 2692, 2734, 2806, 2875, 2903, 2735, 2712, 2813, + 2775, 2707, 2584, 2640, 2730, 2732, 2745, 2693, 2669, 2633, 2614, 2577, 2543, 2587, 2682, + 2819, 2692, 2385, 2435, 2465, 2328, 2442, 2695, 2648, 2671, 2746, 2814, 2866, 3030, 3069, + 3159, 3132, 3102, 3155, 3139, 3097, 3097, 3067, 3078, 3079, 3135, 3122, 3122, 3115, 2979, + 2912, 2805, 2638, 2546, 2529, 2347, 1969, 1659, 1905, 2010, 2130, 2048, 1865, 1862, 2067, + 1985, 2266, 2330, 1378, 874, 904, 785, 733, 862, 755, 614, 685, 729, 688, 664, 667, 763, + 776, 702, 559, 653, 734, 898, 876, 914, 832, 1021, 1033, 1034, 919, 933, 985, 1016, 960, + 889, 907, 875, 837, 852, 986, 916, 927, 928, 1000, 1114, 1144, 1051, 1674, 1979, 2209, + 2380, 2513, 2574, 2647, 2601, 2649, 2627, 2556, 2680, 2642, 2619, 2684, 2716, 2780, 2830, + 2783, 2778, 2793, 2664, 2675, 2650, 2680, 2708, 2564, 2586, 2534, 2460, 2437, 2437, 2290, + 2299, 2154, 1992, 2668, 2638, 2631, 2581, 2666, 2666, 2590, 2547, 2583, 2777, 2654, 2510, + 2312, 2433, 2163, 1995, 2142, 2117, 2329, 2212, 2365, 2164, 2133, 2043, 1807, 1759, 1490, + 1318, 1346, 1294, 1236, 1204, 1133, 1095, 1102, 1063, 963, 937, 959, 965, 1011, 1085, 1110, + 1148, 1139, 1224, 1267, 1304, 1350, 1649, 1705, 1735, 1305, + ], + [ + 1317, 1322, 1468, 1553, 1582, 1655, 2084, 2137, 2159, 1920, 1786, 2163, 2096, 2071, 2098, + 2152, 2166, 2168, 2198, 2200, 2287, 2193, 2260, 2342, 2329, 2397, 2447, 2508, 2556, 2575, + 2600, 2688, 2734, 2734, 2703, 2665, 2726, 2781, 2813, 2808, 2946, 2867, 2864, 2783, 2784, + 2725, 2716, 2695, 2702, 2645, 2757, 2797, 2752, 2658, 2660, 2660, 2727, 2585, 2721, 2783, + 2777, 2974, 2828, 2877, 2804, 2901, 2844, 2830, 2974, 2817, 2891, 2989, 2969, 3198, 3075, + 3137, 3213, 3114, 3070, 3069, 3093, 3077, 3080, 3132, 3161, 3189, 3154, 3155, 3156, 3195, + 2984, 2866, 2559, 2807, 2107, 2269, 2257, 2051, 1897, 1594, 1754, 1782, 1654, 1537, 1851, + 2239, 2215, 1138, 824, 983, 907, 827, 571, 710, 695, 727, 727, 859, 773, 536, 653, 721, + 627, 637, 647, 634, 705, 809, 896, 944, 926, 875, 902, 814, 920, 1052, 1115, 1031, 1094, + 1040, 942, 857, 907, 1022, 956, 987, 1022, 1069, 1139, 1093, 1068, 1180, 1423, 1436, 2307, + 2563, 2519, 2612, 2644, 2677, 2716, 2722, 2678, 2652, 2784, 2804, 2677, 2652, 2789, 2890, + 2765, 2803, 2837, 2855, 2854, 2894, 2869, 2853, 2814, 2789, 2719, 2725, 2662, 2771, 2765, + 2731, 2347, 2250, 2691, 2585, 2779, 2783, 2669, 2591, 2617, 2490, 2543, 2463, 2628, 2604, + 2650, 2630, 2564, 2188, 2374, 2363, 2462, 2513, 2398, 2278, 2184, 2189, 2062, 1808, 1714, + 1601, 1522, 1447, 1306, 1302, 1227, 1237, 1211, 1084, 1000, 1048, 1081, 1153, 1134, 1179, + 1262, 1277, 1307, 1316, 1510, 1589, 1448, 1562, 1742, 1829, 1317, + ], + [ + 1997, 1742, 1669, 1721, 2011, 2111, 2100, 2306, 2333, 2406, 2283, 2318, 2364, 2437, 2422, + 2310, 2269, 2259, 2286, 2385, 2333, 2334, 2349, 2374, 2416, 2428, 2463, 2516, 2577, 2621, + 2672, 2622, 2586, 2582, 2625, 2729, 2753, 2768, 2733, 2797, 2787, 2759, 2776, 2672, 2732, + 2762, 2788, 2795, 2809, 2855, 2924, 2860, 2797, 2652, 2627, 2811, 2922, 2838, 2969, 3078, + 3139, 3294, 3161, 3184, 3098, 3276, 3198, 3251, 3143, 2917, 3077, 3243, 3202, 3109, 3175, + 3123, 3086, 3142, 3114, 3110, 3079, 3154, 3138, 3228, 3201, 3223, 3168, 3176, 3119, 3166, + 3230, 3150, 2978, 2896, 2308, 1906, 1686, 1874, 1720, 1739, 1757, 1501, 1332, 1393, 1557, + 2155, 1547, 1380, 1313, 909, 719, 758, 694, 714, 775, 842, 749, 880, 872, 763, 834, 849, + 868, 767, 701, 650, 689, 821, 836, 828, 795, 768, 825, 894, 950, 857, 923, 1036, 1058, + 1002, 1071, 932, 1049, 1075, 1006, 1055, 1132, 1106, 1171, 1206, 1172, 1208, 1112, 1298, + 1569, 2292, 2650, 2894, 2720, 2704, 2824, 2972, 2998, 2978, 2812, 2889, 2941, 2882, 2838, + 2785, 2758, 2838, 2933, 2928, 2828, 2677, 2994, 2974, 2926, 2888, 2894, 2755, 2774, 2797, + 2853, 2837, 2631, 2493, 2837, 2810, 2891, 2882, 2731, 2836, 2811, 2725, 2735, 2609, 2653, + 2674, 2716, 2590, 2584, 2368, 2624, 2540, 2523, 2511, 2469, 2403, 2247, 2157, 1855, 1781, + 1677, 1643, 1513, 1470, 1417, 1358, 1385, 1367, 1326, 1263, 1283, 1257, 1279, 1282, 1298, + 1362, 1336, 1372, 1389, 1425, 1646, 1713, 1848, 1693, 1763, 2001, 1997, + ], + [ + 2149, 1873, 2030, 2000, 2172, 2364, 2554, 2688, 2681, 2666, 2628, 2557, 2632, 2595, 2550, + 2503, 2449, 2503, 2480, 2496, 2389, 2421, 2383, 2406, 2422, 2508, 2482, 2475, 2571, 2665, + 2682, 2655, 2669, 2638, 2641, 2646, 2707, 2732, 2859, 2815, 2814, 2785, 2825, 2753, 2825, + 2942, 2863, 2840, 2920, 2916, 2835, 2872, 2808, 2791, 2857, 2973, 2859, 3018, 3101, 3249, + 3198, 3441, 3278, 3345, 3214, 3378, 3394, 3389, 3211, 3171, 3215, 3390, 3393, 3361, 3248, + 3226, 3238, 3178, 3270, 3246, 3190, 3224, 3253, 3260, 3218, 3252, 3225, 3203, 3127, 3281, + 3167, 3267, 3088, 2707, 2256, 2193, 1803, 2038, 1967, 1702, 1499, 1582, 1123, 1182, 1495, + 1826, 1514, 1319, 813, 924, 748, 914, 764, 617, 836, 807, 902, 863, 850, 871, 811, 775, + 798, 841, 797, 876, 945, 943, 968, 972, 857, 856, 915, 978, 961, 908, 970, 1103, 1035, + 1145, 1076, 1091, 1023, 1000, 1010, 1085, 1139, 1186, 1221, 1219, 1335, 1281, 1377, 1285, + 1402, 1966, 2396, 2799, 2668, 2659, 2701, 2902, 3098, 2959, 2755, 2823, 2946, 3003, 2981, + 3035, 2952, 2925, 3012, 2959, 2944, 3027, 3048, 3106, 3119, 3134, 3060, 3007, 2930, 3162, + 3153, 3095, 3019, 2897, 2782, 2925, 2963, 2848, 2809, 2795, 2790, 2730, 2802, 2755, 2674, + 2738, 2786, 2554, 2587, 2497, 2409, 2487, 2511, 2486, 2521, 2429, 2227, 2158, 1862, 1742, + 1599, 1493, 1468, 1528, 1547, 1470, 1447, 1470, 1437, 1404, 1410, 1435, 1405, 1406, 1431, + 1459, 1446, 1501, 1532, 1573, 1580, 1675, 1711, 1856, 1904, 2057, 2149, + ], + [ + 1826, 2124, 2196, 2303, 2339, 2523, 2554, 2637, 2674, 2645, 2758, 2807, 2811, 2704, 2708, + 2704, 2723, 2746, 2699, 2608, 2469, 2466, 2546, 2510, 2509, 2513, 2553, 2632, 2630, 2709, + 2773, 2813, 2727, 2806, 2781, 2801, 2751, 2730, 2797, 2647, 2816, 2806, 2859, 2729, 2821, + 2949, 3043, 3008, 3000, 3044, 3007, 3031, 3110, 3169, 3080, 3103, 3228, 3324, 3399, 3653, + 3463, 3445, 3397, 3420, 3454, 3504, 3506, 3407, 3343, 3316, 3405, 3333, 3326, 3318, 3249, + 3300, 3362, 3354, 3357, 3247, 3241, 3235, 3284, 3290, 3209, 3213, 3197, 3196, 3102, 3080, + 3164, 3155, 2992, 2576, 2420, 2104, 2093, 2461, 2178, 1690, 1540, 1580, 1382, 1480, 1402, + 1243, 1063, 1070, 1042, 914, 911, 801, 885, 751, 858, 903, 961, 935, 899, 835, 832, 840, + 882, 988, 891, 941, 964, 1045, 1071, 948, 887, 932, 1004, 853, 901, 1051, 1149, 1071, 1139, + 1107, 1140, 1094, 1078, 1062, 1129, 1090, 1162, 1171, 1249, 1296, 1352, 1294, 1344, 1463, + 1476, 1561, 1885, 1972, 2454, 2632, 2726, 2803, 2960, 3073, 3037, 2972, 2948, 3055, 3026, + 3117, 3177, 3121, 3099, 3256, 3219, 3250, 3168, 3181, 3263, 3286, 3241, 3238, 3207, 3168, + 3351, 3358, 3262, 3123, 3015, 3009, 3024, 2961, 3005, 2983, 2942, 2944, 2541, 2551, 2560, + 2483, 2544, 2642, 2958, 2763, 2758, 2686, 2569, 2710, 2575, 2456, 2436, 2242, 2061, 1843, + 1678, 1605, 1566, 1591, 1611, 1584, 1603, 1511, 1585, 1621, 1646, 1626, 1551, 1528, 1531, + 1594, 1592, 1605, 1617, 1694, 1750, 1688, 1720, 1787, 1839, 1844, 1826, + ], + [ + 2178, 2252, 2358, 2386, 2448, 2608, 2746, 3164, 3372, 3111, 2974, 2813, 2717, 2597, 2699, + 2704, 2659, 2770, 2737, 2558, 2636, 2651, 2572, 2693, 2511, 2399, 2492, 2606, 2639, 2769, + 2864, 2853, 2910, 2992, 2925, 2865, 2790, 2752, 2824, 2814, 3018, 2924, 3131, 2825, 2804, + 3035, 3054, 3294, 3182, 3169, 3027, 3047, 3128, 3251, 3279, 3425, 3356, 3301, 3432, 3186, + 3582, 3875, 3815, 3483, 3616, 3690, 3625, 3638, 3533, 3466, 3470, 3391, 3436, 3472, 3474, + 3426, 3462, 3454, 3460, 3446, 3370, 3362, 3426, 3349, 3269, 3276, 3193, 3147, 3045, 3072, + 2762, 2709, 2512, 2575, 1903, 2247, 2111, 2082, 2126, 1812, 1990, 1921, 1802, 1325, 1379, + 1238, 941, 1000, 1031, 954, 939, 961, 987, 1018, 1010, 1040, 1040, 996, 963, 1050, 1069, + 933, 933, 873, 1012, 1038, 1036, 976, 1042, 975, 978, 981, 936, 896, 976, 1098, 1295, 1244, + 1197, 1253, 1279, 1315, 1346, 1309, 1229, 1294, 1256, 1297, 1311, 1409, 1423, 1396, 1356, + 1562, 1560, 1492, 1657, 1845, 1949, 2329, 2310, 2476, 2573, 2705, 2930, 2978, 3195, 3102, + 3093, 3108, 3244, 3268, 3375, 3460, 3433, 3345, 3336, 3237, 3284, 3368, 3404, 3063, 3077, + 2918, 3288, 3377, 3275, 3128, 3104, 3045, 3115, 3085, 3128, 3026, 2991, 2982, 2959, 2677, + 2736, 2697, 2718, 2900, 2877, 3060, 2765, 2712, 2735, 2768, 2703, 2670, 2665, 2430, 2236, + 1925, 1740, 1727, 1792, 1749, 1762, 1805, 1762, 1779, 1771, 1727, 1743, 1728, 1695, 1739, + 1683, 1725, 1732, 1733, 1746, 1814, 1923, 1832, 1925, 1860, 1990, 2100, 2178, + ], + [ + 2236, 2341, 2500, 2611, 2797, 3028, 3144, 3270, 3165, 2924, 3043, 2945, 2856, 2768, 2761, + 2728, 3026, 2820, 2653, 2607, 2636, 2371, 2520, 2709, 2419, 2320, 2545, 2602, 2758, 2934, + 2735, 2827, 2976, 3022, 2656, 2351, 2893, 2841, 2823, 2904, 2860, 2846, 3188, 3191, 2760, + 2933, 3197, 3112, 3200, 3412, 3144, 3137, 3156, 3370, 3524, 3567, 3569, 3361, 3242, 3236, + 3738, 3819, 3644, 3745, 3707, 3844, 3881, 3743, 3544, 3557, 3635, 3603, 3590, 3577, 3557, + 3580, 3583, 3607, 3652, 3463, 3486, 3469, 3464, 3436, 3330, 3326, 3263, 3231, 2947, 2698, + 2679, 2452, 2232, 1983, 2134, 2031, 1919, 2195, 1719, 1793, 2001, 1692, 1339, 1471, 1408, + 1083, 1099, 1168, 1106, 1008, 972, 1272, 1234, 1102, 1249, 1188, 968, 930, 1002, 984, 1013, + 989, 983, 1035, 987, 1056, 1077, 1049, 1028, 1076, 1079, 1066, 910, 1042, 1098, 1239, 1317, + 1281, 1355, 1467, 1432, 1491, 1499, 1428, 1361, 1398, 1399, 1336, 1406, 1476, 1480, 1437, + 1286, 1540, 1563, 1663, 1562, 1675, 1916, 2258, 2595, 2607, 2704, 2880, 3086, 3106, 3142, + 3237, 3205, 3307, 3340, 3416, 3466, 3556, 3493, 3486, 3486, 3500, 3537, 3472, 3588, 3494, + 3324, 3427, 3350, 3201, 3218, 3237, 3214, 3231, 3068, 3072, 3071, 3117, 3091, 3211, 3199, + 3085, 2912, 2739, 2650, 2714, 2748, 2691, 2843, 2800, 2792, 2919, 2820, 2869, 2732, 2521, + 2393, 2205, 1979, 1927, 2000, 1938, 2024, 2070, 1963, 1967, 1915, 1919, 1932, 1850, 1853, + 1910, 1903, 1851, 1912, 1846, 1884, 1903, 1979, 2037, 2014, 2040, 2069, 2212, 2236, + ], + [ + 2356, 2447, 2723, 2806, 2822, 2829, 2911, 2896, 3032, 2692, 2771, 2921, 2911, 2908, 2893, + 2869, 2874, 2796, 2764, 2708, 2529, 2494, 2451, 2643, 2486, 2539, 2674, 2897, 3038, 3023, + 2974, 2969, 2835, 2761, 2549, 2838, 2787, 2928, 3046, 2771, 2246, 2054, 2699, 2685, 2900, + 2875, 2956, 2767, 2935, 3118, 3277, 3235, 3373, 3396, 3438, 3785, 3679, 3713, 3774, 3735, + 3852, 3660, 3954, 3954, 3872, 3866, 3769, 3846, 3610, 3614, 3726, 3691, 3587, 3673, 3664, + 3704, 3763, 3731, 3765, 3657, 3597, 3614, 3659, 3439, 3319, 3404, 3365, 3200, 3036, 2781, + 2530, 2080, 2210, 1810, 1797, 1971, 1759, 1949, 1742, 1770, 1812, 1442, 1352, 1510, 1347, + 1232, 1042, 1086, 1184, 1186, 1259, 1301, 1252, 1353, 1279, 1098, 977, 1066, 1028, 1026, + 1019, 1071, 1129, 1101, 1096, 1087, 1066, 1038, 1082, 1093, 1114, 1128, 1124, 1091, 1222, + 1348, 1371, 1362, 1406, 1565, 1585, 1548, 1607, 1503, 1477, 1514, 1478, 1507, 1489, 1524, + 1598, 1623, 1647, 1478, 1563, 1636, 1808, 1728, 2104, 2561, 2722, 2731, 2937, 3249, 3501, + 3494, 3524, 3538, 3418, 3436, 3506, 3474, 3635, 3621, 3648, 3713, 3715, 3716, 3667, 3615, + 3537, 3613, 3087, 3155, 3401, 2999, 3163, 3462, 3322, 3258, 3217, 3292, 3273, 3303, 3258, + 3281, 3168, 3152, 3097, 2778, 2842, 2792, 2834, 2866, 2850, 2881, 2948, 2926, 2886, 2757, + 2760, 2679, 2528, 2345, 2283, 2212, 2214, 2216, 2187, 2166, 2216, 2184, 2117, 2068, 1992, + 2002, 1914, 2051, 2018, 1942, 1960, 2001, 1965, 1988, 2033, 2049, 2009, 1985, 2159, 2196, + 2356, + ], + [ + 2826, 3003, 2672, 2606, 2462, 2422, 2516, 2575, 2464, 3107, 2527, 2227, 2823, 3020, 3109, + 2991, 3129, 2873, 2791, 2593, 2618, 2592, 2548, 2544, 2491, 2479, 2420, 3016, 3318, 3451, + 3320, 3599, 3097, 2801, 2301, 3077, 3076, 3045, 2473, 1937, 2416, 2551, 2126, 2555, 2485, + 2481, 2777, 2988, 3159, 3422, 3573, 3453, 3696, 4289, 3928, 4062, 4078, 4113, 3903, 3637, + 3899, 3797, 3630, 3803, 4347, 4107, 4072, 4087, 3770, 3733, 3831, 3858, 3853, 3876, 3829, + 3756, 3702, 3589, 3649, 3691, 3735, 3766, 3639, 3450, 3398, 3294, 3345, 3144, 3135, 2751, + 2344, 2798, 2275, 1976, 1891, 2736, 2610, 2407, 2279, 2063, 1853, 1707, 1660, 1465, 1226, + 1333, 1428, 1296, 1183, 1279, 1401, 1365, 1271, 1438, 1275, 1202, 1138, 1235, 1113, 1140, + 1188, 1255, 1181, 1269, 1198, 1150, 1154, 1221, 1180, 1252, 1205, 1191, 1336, 1416, 1447, + 1546, 1632, 1675, 1659, 1710, 1788, 1811, 1844, 1647, 1766, 1756, 1727, 1660, 1661, 1632, + 1609, 1652, 1690, 1735, 1651, 1683, 1800, 1872, 2518, 3013, 3027, 2840, 2825, 2915, 3006, + 3088, 3475, 3653, 3450, 3414, 3522, 3659, 3649, 3886, 3807, 3762, 3679, 3687, 3721, 3770, + 3725, 3657, 3024, 3516, 3538, 3275, 3527, 3442, 3398, 3644, 3423, 3455, 3453, 3425, 2767, + 2817, 2795, 2885, 2863, 2869, 2797, 2858, 2814, 2739, 2762, 2801, 2861, 2921, 2879, 2711, + 2716, 2563, 2535, 2480, 2462, 2529, 2533, 2473, 2494, 2438, 2385, 2359, 2298, 2240, 2137, + 2051, 2072, 2031, 2099, 2078, 2026, 2080, 2070, 2131, 2168, 2441, 2794, 1829, 2962, 3021, + 2826, + ], + [ + 2890, 2481, 2529, 2453, 2470, 2468, 2534, 2493, 2768, 2552, 2448, 2386, 2379, 2879, 2945, + 3036, 2924, 2853, 2779, 2537, 2497, 2401, 2897, 2981, 2454, 2784, 2486, 2527, 3228, 3403, + 3531, 3445, 3381, 3409, 2702, 3053, 2988, 3405, 2908, 2363, 2217, 1972, 2364, 2877, 2665, + 2744, 2828, 3275, 3530, 3739, 3799, 4171, 4334, 4582, 4060, 4099, 4382, 4029, 4278, 4045, + 4037, 3970, 4231, 4243, 4116, 4318, 4426, 4175, 4026, 4080, 3956, 3834, 3899, 3881, 3805, + 3785, 3764, 3676, 3647, 3683, 3664, 3615, 3637, 3478, 3346, 3253, 3166, 3177, 3227, 3351, + 3159, 2840, 2382, 2089, 2017, 1967, 1977, 2196, 2420, 2146, 1713, 1747, 1689, 1318, 1334, + 1593, 1491, 1449, 1567, 1627, 1505, 1414, 1399, 1419, 1408, 1333, 1424, 1379, 1293, 1388, + 1378, 1391, 1428, 1387, 1370, 1333, 1385, 1344, 1250, 1369, 1381, 1446, 1540, 1622, 1646, + 1696, 1823, 1875, 1905, 1900, 1950, 2032, 2025, 1899, 1907, 1841, 1808, 1772, 1817, 1752, + 1790, 1763, 1790, 1851, 1840, 1956, 1921, 1973, 2490, 3281, 3171, 2719, 2872, 3087, 2956, + 3143, 3530, 3738, 3687, 3560, 3608, 3747, 3770, 3942, 3813, 3716, 3760, 3774, 3747, 3789, + 3778, 3625, 3236, 3564, 3565, 3278, 3523, 3555, 3528, 3583, 3504, 3452, 3385, 2961, 2944, + 2906, 2902, 2736, 2758, 2836, 2755, 2722, 2737, 2650, 2676, 2809, 2864, 2886, 2874, 2866, + 2708, 2685, 2712, 2664, 2692, 2711, 2688, 2700, 2566, 2559, 2566, 2518, 2500, 2432, 2364, + 2176, 2248, 2225, 2188, 2176, 2075, 2088, 2156, 2286, 2281, 2444, 2778, 2887, 2756, 2874, + 2890, + ], + [ + 2455, 2608, 2589, 2599, 2573, 2447, 2200, 2543, 2560, 2524, 2478, 2660, 2101, 2848, 2756, + 2694, 2312, 2626, 2592, 2410, 2787, 2798, 2782, 2875, 3048, 3224, 3475, 3491, 3676, 3671, + 3527, 3615, 3421, 3141, 3336, 3167, 2990, 3495, 3365, 3077, 3334, 3243, 2605, 2755, 2764, + 2872, 3345, 3453, 3826, 3835, 4382, 4181, 4152, 4290, 4063, 3970, 4265, 4310, 4355, 3871, + 3969, 4075, 4468, 4437, 4331, 4183, 3928, 4133, 4152, 4118, 3736, 4098, 3942, 4041, 3948, + 3870, 3869, 3757, 3703, 3638, 3729, 3514, 3566, 3463, 3529, 3298, 2996, 3377, 3000, 2934, + 3260, 3032, 2202, 1649, 2766, 1933, 1990, 1881, 1914, 2062, 1738, 1781, 1734, 1481, 1527, + 1495, 1506, 1628, 1787, 1706, 1627, 1657, 1682, 1613, 1607, 1586, 1481, 1509, 1528, 1557, + 1517, 1621, 1574, 1597, 1531, 1564, 1593, 1515, 1553, 1516, 1572, 1665, 1709, 1823, 1857, + 1972, 2008, 1958, 2087, 2180, 2105, 2113, 2094, 2068, 2059, 2003, 1996, 1943, 1818, 1847, + 1797, 1886, 1964, 1985, 2035, 2132, 2009, 2207, 2247, 2786, 3055, 2939, 3134, 3177, 3304, + 3162, 3545, 3751, 3643, 3879, 3898, 3873, 3937, 4032, 3943, 3870, 3837, 3830, 3884, 3862, + 3839, 3779, 3759, 3698, 3659, 3595, 3603, 3622, 3626, 3570, 3593, 3198, 3143, 3251, 3174, + 2914, 2912, 2883, 2740, 2783, 2740, 2816, 2779, 2789, 2798, 2847, 2958, 2924, 2944, 2978, + 2942, 2956, 2935, 2877, 2887, 2886, 2806, 2861, 2787, 2738, 2751, 2716, 2641, 2488, 2477, + 2321, 2340, 2289, 2187, 2190, 2251, 2160, 2210, 2311, 2400, 2355, 2487, 2622, 2692, 2572, + 2455, + ], + [ + 2524, 2689, 2755, 2617, 2588, 2591, 2571, 2499, 2418, 2263, 2407, 2500, 2245, 2167, 2014, + 2370, 1948, 2163, 2305, 2504, 2725, 2865, 2844, 2910, 2895, 2924, 2765, 2843, 2909, 3394, + 3551, 3275, 3579, 3113, 3153, 3247, 3108, 3114, 3649, 3561, 3346, 3304, 3296, 3104, 3199, + 3568, 3593, 4114, 5280, 4965, 4753, 4206, 4262, 4141, 4494, 4538, 4489, 4630, 4670, 4419, + 3992, 4384, 4330, 4575, 4835, 5653, 5169, 4633, 4311, 4156, 4174, 4053, 3972, 3861, 3876, + 3853, 3802, 3779, 3785, 3579, 3512, 3595, 3392, 3376, 3496, 3569, 3335, 3019, 2267, 2308, + 2604, 2201, 1695, 1751, 3609, 2538, 2287, 1972, 1929, 2109, 1867, 1764, 1671, 1655, 1750, + 1711, 1746, 1841, 1810, 1776, 1815, 1830, 1798, 1751, 1747, 1750, 1680, 1607, 1740, 1687, + 1742, 1798, 1802, 1754, 1851, 1881, 1823, 1722, 1720, 1893, 1930, 1994, 1982, 2018, 2115, + 2185, 2237, 2238, 2310, 2437, 2309, 2315, 2257, 2202, 2202, 2169, 2207, 2143, 2095, 2050, + 2027, 2052, 2112, 2192, 2213, 2247, 2203, 2344, 2097, 2563, 2730, 3639, 3784, 3347, 3296, + 3344, 3422, 3255, 3900, 4056, 4044, 3936, 3958, 3897, 3821, 3833, 3909, 3910, 3940, 3867, + 3833, 3814, 3815, 3735, 3754, 3720, 3732, 3731, 3673, 3532, 3168, 3252, 3240, 3166, 3061, + 2933, 2959, 2880, 2804, 2871, 2916, 2957, 3021, 3021, 3012, 3052, 3048, 3063, 3148, 3147, + 3149, 3143, 3117, 3107, 3073, 3046, 3014, 2963, 2876, 2886, 2779, 2765, 2617, 2528, 2492, + 2461, 2400, 2254, 2216, 2265, 2280, 2154, 2146, 2197, 2244, 2270, 2279, 2278, 2583, 2501, + 2524, + ], + [ + 2621, 2709, 2626, 2530, 2368, 2223, 2334, 2483, 2376, 2430, 2643, 2373, 2366, 2141, 2220, + 2190, 2105, 1856, 1993, 2202, 2534, 2629, 2802, 2609, 2643, 2668, 2712, 2654, 2712, 2858, + 2984, 3154, 3523, 3071, 3130, 3575, 3504, 3475, 3463, 3517, 3466, 3131, 3204, 3153, 3039, + 3048, 3179, 3915, 5089, 5119, 5384, 4555, 4590, 4397, 4439, 4566, 4534, 4683, 4952, 5963, + 5431, 4888, 4773, 5051, 4201, 5744, 5498, 5058, 4370, 3940, 4082, 4035, 3931, 3861, 3995, + 4007, 3964, 3885, 3955, 3914, 3868, 3976, 3526, 3589, 3330, 3692, 4037, 3242, 2533, 2453, + 2250, 1735, 2004, 3942, 2708, 2589, 2378, 2094, 2160, 2087, 2093, 2152, 2038, 1962, 2044, + 2003, 2020, 2030, 2055, 2062, 2155, 2046, 1974, 2059, 1956, 1939, 1898, 1980, 1987, 2075, + 2075, 2062, 2051, 2075, 2128, 2107, 1967, 1974, 2013, 2127, 2203, 2211, 2178, 2188, 2284, + 2444, 2464, 2484, 2438, 2495, 2462, 2445, 2319, 2282, 2359, 2271, 2271, 2261, 2210, 2123, + 2172, 2166, 2222, 2273, 2333, 2416, 2465, 2283, 2494, 2311, 2494, 2815, 4031, 3013, 3144, + 3613, 3300, 3228, 3994, 4217, 4089, 4058, 4063, 3876, 3805, 3832, 3830, 3885, 3873, 3855, + 3823, 3845, 3822, 3843, 3802, 3917, 3874, 3917, 3792, 3810, 3325, 3397, 3314, 3347, 3172, + 3059, 3037, 3014, 2986, 3039, 3048, 3114, 3157, 3227, 3260, 3241, 3255, 3271, 3296, 3325, + 3301, 3350, 3302, 3230, 3262, 3175, 3156, 3094, 2988, 3010, 2899, 2846, 2654, 2556, 2457, + 2427, 2413, 2332, 2244, 2204, 2219, 2262, 2220, 2244, 2246, 2278, 2306, 2371, 2385, 2102, + 2621, + ], + [ + 2782, 2324, 2492, 2623, 2767, 2896, 2438, 2550, 2565, 2644, 2624, 2477, 2264, 2347, 2097, + 2053, 2131, 2059, 2010, 2224, 2119, 2299, 2175, 2238, 2354, 2603, 2750, 2688, 2613, 2725, + 2915, 3008, 3612, 3879, 3615, 3429, 3267, 3530, 3423, 3542, 3652, 3336, 3204, 3451, 3594, + 3584, 3784, 4699, 4617, 4733, 5207, 5773, 5729, 5715, 5212, 5603, 5866, 6061, 6095, 5957, + 5928, 5835, 5393, 4933, 5111, 5364, 5296, 5230, 4604, 4232, 4134, 4108, 4081, 4158, 4304, + 4218, 4182, 4089, 4180, 3987, 4066, 3814, 3842, 3771, 3428, 4120, 4332, 3314, 2581, 2175, + 2019, 4063, 4037, 4226, 2696, 2448, 2442, 2469, 2359, 2360, 2365, 2443, 2500, 2374, 2476, + 2321, 2220, 2255, 2324, 2350, 2426, 2318, 2337, 2360, 2262, 2295, 2343, 2244, 2286, 2324, + 2400, 2318, 2284, 2351, 2387, 2282, 2252, 2284, 2346, 2383, 2541, 2423, 2393, 2549, 2543, + 2575, 2598, 2595, 2625, 2653, 2625, 2522, 2434, 2422, 2407, 2400, 2426, 2447, 2292, 2275, + 2266, 2310, 2412, 2456, 2466, 2580, 2502, 2430, 2507, 2393, 2616, 2863, 2585, 2521, 2983, + 3453, 3575, 3637, 3764, 4043, 4105, 4120, 4155, 3828, 3758, 3780, 3840, 3865, 3909, 3915, + 3883, 3863, 3862, 3909, 4055, 3944, 3971, 3972, 3921, 3821, 3510, 3600, 3546, 3359, 3294, + 3249, 3216, 3194, 3181, 3174, 3248, 3325, 3354, 3411, 3418, 3409, 3420, 3517, 3475, 3473, + 3472, 3468, 3393, 3371, 3280, 3171, 3226, 3156, 3097, 3044, 3011, 2876, 2791, 2631, 2567, + 2469, 2492, 2454, 2336, 2362, 2334, 2347, 2433, 2204, 2356, 2285, 2299, 2481, 2621, 2670, + 2782, + ], + [ + 2994, 3212, 3007, 2968, 2846, 3033, 2981, 2759, 2469, 2477, 2539, 2438, 2320, 2100, 2009, + 2055, 2000, 1895, 2230, 2153, 2192, 2181, 2177, 2170, 2319, 2561, 2550, 2383, 2881, 2608, + 2969, 2904, 3229, 3649, 3877, 3525, 3600, 3547, 3160, 3384, 3373, 3219, 3189, 4035, 4217, + 4540, 4398, 3936, 4045, 4254, 5001, 5428, 5412, 5699, 6060, 6028, 5970, 6054, 5984, 5995, + 5943, 5907, 5710, 5822, 5990, 5769, 5419, 5291, 5179, 4531, 4241, 4287, 4405, 4470, 4423, + 4341, 4418, 4283, 4296, 4300, 4110, 4232, 4198, 3941, 3898, 3819, 3813, 3568, 4207, 4222, + 4167, 4234, 3567, 3290, 2948, 2796, 2911, 2974, 2770, 2740, 2727, 2668, 2600, 2608, 2677, + 2846, 2786, 2680, 2612, 2563, 2591, 2629, 2694, 2649, 2623, 2569, 2473, 2595, 2701, 2773, + 2830, 2820, 2753, 2725, 2696, 2714, 2609, 2601, 2702, 2732, 2796, 2812, 2752, 2771, 2768, + 2741, 2713, 2780, 2682, 2627, 2644, 2552, 2498, 2449, 2369, 2456, 2462, 2485, 2438, 2402, + 2406, 2455, 2461, 2585, 2492, 2517, 2638, 2534, 2518, 2603, 2398, 2357, 2521, 2862, 2768, + 2958, 3251, 3848, 4340, 4457, 4318, 4279, 4098, 3847, 3698, 3785, 3828, 3814, 3929, 3929, + 3930, 3967, 3979, 3961, 3906, 3983, 3998, 4003, 3999, 3774, 3659, 3602, 3536, 3486, 3467, + 3366, 3403, 3473, 3424, 3506, 3518, 3555, 3596, 3578, 3563, 3524, 3557, 3558, 3553, 3551, + 3550, 3501, 3451, 3370, 3337, 3276, 3272, 3268, 3182, 3057, 3011, 2903, 2861, 2621, 2567, + 2571, 2492, 2482, 2352, 2329, 2385, 2296, 2299, 2308, 2375, 2369, 2414, 2402, 2695, 2800, + 2994, + ], + [ + 3345, 3095, 3436, 2866, 3211, 3180, 3238, 3147, 2586, 2288, 2435, 2409, 2158, 2002, 1771, + 1888, 2024, 2085, 2233, 2268, 2329, 2461, 2280, 2164, 2559, 3344, 3048, 3005, 2866, 2885, + 3059, 3031, 3115, 3327, 4413, 3977, 3618, 3708, 3083, 3507, 3304, 3160, 3125, 3460, 3838, + 4046, 4811, 4746, 4231, 4396, 4359, 5335, 5971, 6008, 5936, 5926, 5945, 5962, 6013, 6008, + 5912, 5893, 5864, 6100, 6011, 5845, 5546, 5436, 5346, 4585, 4536, 4577, 4525, 4646, 4573, + 4551, 4497, 4493, 4680, 4611, 4608, 4372, 4353, 4073, 4134, 3978, 3829, 3888, 3954, 3726, + 3881, 3747, 3534, 3382, 3298, 3174, 3199, 3180, 3021, 2979, 3015, 2971, 2953, 2986, 2979, + 3067, 3035, 2953, 2982, 2945, 2992, 3037, 3134, 3053, 2944, 2975, 3011, 2986, 3106, 3176, + 3141, 3221, 3182, 3145, 3203, 3111, 2915, 2885, 2841, 2907, 2972, 3031, 3013, 2919, 2938, + 2901, 2978, 2979, 2910, 2790, 2714, 2640, 2613, 2486, 2557, 2519, 2554, 2488, 2545, 2554, + 2584, 2570, 2606, 2620, 2617, 2697, 2614, 2815, 2653, 2682, 2781, 2792, 2865, 3157, 2947, + 3129, 3336, 3859, 4178, 4420, 4325, 4311, 4226, 3828, 3800, 3808, 3889, 3995, 4024, 4002, + 4073, 4029, 4063, 4032, 4037, 4077, 4102, 3962, 3930, 3811, 3824, 3737, 3673, 3640, 3664, + 3598, 3672, 3613, 3626, 3669, 3736, 3728, 3720, 3692, 3657, 3655, 3622, 3656, 3671, 3637, + 3615, 3570, 3522, 3512, 3447, 3446, 3374, 3338, 3248, 3184, 3128, 3067, 2865, 2715, 2598, + 2625, 2543, 2520, 2480, 2362, 2338, 2320, 2357, 2346, 2266, 2311, 2765, 2796, 3008, 3043, + 3345, + ], + [ + 3350, 3087, 2661, 3320, 3448, 3376, 2895, 2861, 2824, 2786, 2242, 2335, 2292, 2024, 1860, + 2168, 2178, 2551, 2279, 2328, 2425, 2312, 2176, 2339, 2549, 3362, 3418, 3359, 3079, 2911, + 2975, 3054, 2917, 3541, 3566, 4572, 4083, 4160, 3086, 3272, 3124, 3047, 3214, 3272, 3590, + 4474, 4600, 4795, 4692, 4684, 4563, 4993, 5087, 5883, 6213, 6082, 5882, 5925, 5960, 6026, + 5873, 5827, 5904, 5893, 6019, 5983, 5650, 5464, 5414, 4197, 4750, 4763, 4580, 4667, 4555, + 4543, 4689, 4567, 4613, 4680, 4593, 4649, 4391, 4262, 4207, 4108, 4023, 3929, 4078, 3865, + 3799, 3759, 3773, 3558, 3625, 3620, 3524, 3434, 3425, 3334, 3254, 3294, 3308, 3352, 3334, + 3443, 3328, 3390, 3611, 3485, 3513, 3586, 3517, 3494, 3438, 3385, 3359, 3424, 3452, 3467, + 3531, 3543, 3515, 3396, 3414, 3394, 3233, 3156, 3186, 3167, 3172, 3174, 3196, 3100, 3113, + 3081, 3180, 3159, 3008, 2944, 2861, 2778, 2742, 2677, 2685, 2676, 2675, 2674, 2658, 2615, + 2658, 2755, 2599, 2758, 2785, 2833, 2896, 2795, 2757, 2895, 3057, 3027, 3003, 3535, 3470, + 3214, 3579, 4218, 4592, 4323, 4421, 4451, 4235, 4032, 3977, 3981, 3961, 4087, 4100, 4117, + 4118, 4133, 4164, 4159, 4149, 4166, 3994, 4021, 3952, 3942, 3922, 3917, 3976, 3847, 3898, + 3874, 3852, 3807, 3784, 3816, 3839, 3854, 3803, 3762, 3779, 3764, 3754, 3758, 3740, 3701, + 3690, 3659, 3595, 3588, 3582, 3530, 3423, 3317, 3237, 3210, 3150, 3101, 2942, 2799, 2848, + 2859, 2690, 2543, 2550, 2446, 2443, 2400, 2446, 2338, 2514, 2838, 3240, 2892, 3183, 3245, + 3350, + ], + [ + 3182, 2727, 2785, 2715, 3198, 3175, 3146, 2994, 3299, 3044, 3007, 2971, 2160, 2904, 1958, + 2034, 2426, 2514, 2819, 3488, 2869, 3086, 2544, 3023, 3410, 3312, 3257, 3458, 3257, 2974, + 2986, 3036, 3147, 2987, 3194, 3400, 3650, 4068, 3829, 3304, 2558, 3838, 3472, 3143, 3224, + 4669, 4491, 4569, 4725, 4821, 4963, 4741, 4803, 4749, 5441, 5920, 6241, 6225, 6207, 6015, + 6035, 5913, 5837, 5508, 5713, 5891, 5773, 5581, 5125, 4727, 4664, 4880, 4566, 4612, 4624, + 4613, 4766, 4702, 4682, 4660, 4700, 4605, 4319, 4296, 4300, 4271, 4136, 4107, 4106, 4068, + 3968, 4020, 4080, 3973, 3964, 3914, 3796, 3735, 3716, 3804, 3812, 3798, 3843, 3877, 3892, + 3968, 3961, 3989, 4008, 4021, 3971, 3939, 3841, 3783, 3767, 3878, 3813, 3794, 3744, 3779, + 3836, 3865, 3837, 3807, 3737, 3673, 3677, 3641, 3566, 3455, 3366, 3406, 3388, 3319, 3328, + 3357, 3366, 3292, 3204, 3070, 3090, 2993, 2907, 3006, 2832, 2804, 2841, 2711, 2829, 2852, + 2816, 2796, 2860, 2950, 2998, 3117, 3084, 3227, 3196, 3284, 3368, 3505, 3116, 3526, 3699, + 3392, 3893, 4407, 4603, 4731, 4582, 4421, 4369, 4045, 4130, 4061, 4018, 4135, 4188, 4219, + 4253, 4235, 4232, 4224, 4216, 4177, 4072, 4029, 4022, 4063, 4073, 4095, 4113, 4120, 4091, + 4053, 3992, 3922, 3900, 3912, 3922, 3902, 3906, 3851, 3854, 3823, 3838, 3791, 3780, 3709, + 3701, 3683, 3678, 3648, 3624, 3475, 3419, 3348, 3297, 3148, 3163, 3157, 3166, 2967, 2909, + 2765, 2797, 2698, 2586, 2583, 2481, 2733, 2617, 2663, 2773, 3129, 2874, 2966, 3052, 3323, + 3182, + ], + [ + 3698, 3496, 3496, 3487, 3472, 3445, 3189, 3432, 3461, 3568, 2918, 2723, 3227, 3197, 3170, + 3149, 3445, 3545, 3722, 3525, 3448, 3628, 3711, 3765, 3459, 3555, 3417, 3559, 3298, 3216, + 3220, 3192, 3231, 3288, 3223, 3343, 3393, 3912, 3607, 3205, 3549, 4280, 3420, 3837, 4424, + 4822, 4656, 5085, 4701, 5037, 5095, 5012, 4838, 4948, 5270, 5162, 5539, 6082, 6281, 6071, + 5910, 5775, 5466, 4362, 4916, 5244, 5581, 5471, 5110, 4472, 4946, 4633, 4616, 4767, 4670, + 4718, 4708, 4677, 4704, 4752, 4634, 4556, 4277, 4283, 4285, 4320, 4189, 4223, 4238, 4311, + 4256, 4232, 4229, 4253, 4182, 4142, 4100, 4080, 4122, 4079, 4123, 4152, 4143, 4119, 4167, + 4138, 4184, 4230, 4217, 4243, 4205, 4114, 4138, 4091, 4078, 4079, 4046, 3974, 4026, 3990, + 3946, 3942, 3970, 3969, 3933, 3982, 3931, 3912, 3852, 3776, 3796, 3697, 3595, 3607, 3649, + 3547, 3485, 3462, 3414, 3282, 3195, 3118, 3090, 3180, 3152, 3066, 3021, 2924, 2963, 3049, + 3196, 3054, 3006, 3064, 3228, 3271, 3268, 3418, 3441, 3651, 3825, 3828, 3772, 3562, 3586, + 3794, 3994, 4427, 4615, 4595, 4595, 4464, 4282, 4262, 4206, 4166, 4146, 4182, 4200, 4288, + 4270, 4234, 4239, 4231, 4208, 4156, 4125, 4078, 4149, 4125, 4170, 4176, 4185, 4159, 4159, + 4122, 4072, 4051, 4025, 4029, 4030, 4024, 3974, 3928, 3902, 3899, 3875, 3854, 3789, 3761, + 3755, 3745, 3765, 3676, 3666, 3589, 3567, 3469, 3352, 3150, 3141, 3111, 3211, 3032, 3007, + 2998, 2904, 2853, 2677, 2612, 2951, 2866, 2741, 2791, 2871, 3321, 3381, 3168, 3185, 3380, + 3698, + ], + [ + 3423, 3768, 3770, 3764, 3210, 3322, 3751, 3309, 3671, 3324, 3406, 4238, 4080, 3498, 3474, + 3955, 3933, 3813, 3804, 3794, 3839, 3681, 3745, 3588, 3915, 3590, 3680, 3446, 3474, 3440, + 3454, 3467, 3452, 3398, 3379, 3305, 3461, 3899, 4123, 3426, 4238, 4698, 3508, 3949, 4766, + 4806, 4660, 4747, 4822, 4942, 5093, 5024, 5093, 4999, 5035, 5022, 5118, 5325, 5010, 4976, + 4782, 5026, 4766, 4604, 4574, 5119, 5106, 5266, 5073, 4920, 4976, 4704, 4648, 4870, 4757, + 4798, 4649, 4724, 4726, 4737, 4712, 4383, 4352, 4370, 4362, 4294, 4379, 4376, 4406, 4432, + 4458, 4436, 4413, 4386, 4384, 4338, 4349, 4340, 4334, 4287, 4330, 4306, 4249, 4300, 4325, + 4320, 4417, 4352, 4359, 4399, 4360, 4357, 4301, 4222, 4271, 4231, 4225, 4217, 4182, 4124, + 4133, 4153, 4168, 4172, 4167, 4120, 4128, 4061, 4034, 4038, 3957, 3875, 3819, 3727, 3737, + 3720, 3635, 3645, 3685, 3521, 3428, 3326, 3255, 3397, 3347, 3364, 3258, 3314, 3344, 3342, + 3398, 3301, 3267, 3408, 3528, 3398, 3563, 3515, 3705, 3877, 4010, 4036, 3950, 3830, 4002, + 4366, 4211, 4465, 4632, 4602, 4581, 4528, 4416, 4355, 4207, 4244, 4199, 4180, 4286, 4278, + 4282, 4218, 4188, 4219, 4225, 4203, 4191, 4163, 4196, 4204, 4209, 4229, 4218, 4224, 4203, + 4184, 4139, 4125, 4070, 4098, 4096, 4093, 4050, 4016, 3977, 3947, 3919, 3854, 3837, 3815, + 3766, 3735, 3756, 3738, 3713, 3702, 3597, 3515, 3340, 3191, 3136, 3204, 3254, 3129, 3137, + 3231, 3156, 3074, 3068, 3349, 3273, 3282, 2993, 2913, 3374, 3022, 3657, 3508, 3341, 4303, + 3423, + ], + [ + 4011, 4025, 4030, 4129, 4336, 4000, 3980, 3955, 4234, 3899, 3870, 4135, 4292, 3789, 4101, + 4071, 3840, 3737, 3740, 4002, 4001, 3993, 3916, 4132, 3645, 3775, 3713, 3695, 3657, 3619, + 3632, 3813, 3809, 3077, 3401, 3620, 3731, 4382, 3895, 3647, 3898, 4152, 3591, 3699, 4455, + 4634, 4925, 4760, 4941, 4987, 5025, 4975, 5055, 5145, 5118, 5162, 5234, 5172, 5015, 4904, + 4900, 4649, 4953, 4700, 4775, 4784, 4921, 4946, 4868, 4816, 4751, 4779, 4793, 4811, 4793, + 4809, 4700, 4745, 4740, 4588, 4552, 4296, 4413, 4512, 4525, 4440, 4482, 4514, 4529, 4556, + 4534, 4517, 4483, 4543, 4513, 4514, 4488, 4464, 4478, 4481, 4482, 4458, 4424, 4428, 4425, + 4429, 4492, 4519, 4516, 4518, 4504, 4490, 4449, 4417, 4417, 4445, 4418, 4419, 4363, 4330, + 4316, 4348, 4348, 4289, 4282, 4330, 4318, 4258, 4252, 4139, 4059, 3977, 3972, 3920, 3974, + 3948, 3947, 3785, 3958, 3811, 3603, 3550, 3537, 3583, 3667, 3741, 3657, 3610, 3558, 3488, + 3494, 3558, 3469, 3624, 3663, 3682, 3710, 3784, 3799, 3891, 3946, 3917, 4007, 4163, 4142, + 4297, 4034, 4296, 4502, 4282, 4640, 4511, 4608, 4399, 4264, 4260, 4240, 4268, 4360, 4346, + 4296, 4243, 4208, 4202, 4205, 4248, 4229, 4206, 4192, 4232, 4250, 4225, 4213, 4287, 4219, + 4197, 4196, 4155, 4160, 4175, 4174, 4117, 4096, 4033, 3984, 3931, 3911, 3917, 3890, 3846, + 3796, 3749, 3682, 3710, 3659, 3594, 3498, 3352, 3302, 3230, 3211, 3057, 3399, 3280, 3408, + 3480, 3436, 3603, 3737, 3676, 3916, 3800, 3570, 3896, 3723, 3605, 3479, 3389, 3904, 4271, + 4011, + ], + [ + 4230, 4247, 4284, 4057, 4091, 4235, 4218, 4196, 4457, 4331, 4120, 4095, 4070, 4049, 4193, + 4095, 4145, 3985, 3962, 4096, 4148, 4093, 4019, 3932, 3852, 3853, 3860, 3910, 3880, 3829, + 3638, 3987, 4050, 3863, 3700, 3804, 3761, 3787, 3504, 4023, 3719, 3866, 3976, 3989, 4004, + 4197, 4667, 4776, 4943, 4993, 5056, 4994, 5004, 5038, 5164, 5154, 5135, 5118, 5050, 5025, + 4922, 4871, 4844, 5002, 4691, 4785, 4924, 4906, 4827, 4721, 4845, 4887, 4846, 4838, 4847, + 4802, 4843, 4822, 4670, 4570, 4643, 4325, 4538, 4632, 4602, 4531, 4554, 4614, 4632, 4627, + 4596, 4583, 4613, 4621, 4603, 4586, 4530, 4584, 4588, 4621, 4619, 4557, 4568, 4557, 4572, + 4571, 4569, 4609, 4618, 4616, 4606, 4569, 4554, 4507, 4504, 4486, 4505, 4476, 4495, 4504, + 4500, 4486, 4414, 4409, 4414, 4422, 4416, 4380, 4305, 4261, 4190, 4131, 4094, 4061, 4097, + 4121, 4155, 4009, 4032, 3943, 3831, 3775, 3765, 3783, 3909, 3870, 3670, 3674, 3668, 3686, + 3658, 3628, 3633, 3751, 3763, 3778, 3771, 3813, 3862, 3952, 4027, 4159, 4181, 4261, 4279, + 4289, 4434, 4407, 4345, 4627, 4484, 4543, 4570, 4443, 4209, 4349, 4362, 4390, 4379, 4376, + 4332, 4305, 4245, 4216, 4271, 4288, 4294, 4256, 4259, 4281, 4319, 4256, 4297, 4295, 4308, + 4250, 4243, 4246, 4235, 4251, 4226, 4162, 4129, 4087, 4018, 4019, 3994, 3952, 3973, 3903, + 3864, 3796, 3761, 3712, 3651, 3596, 3483, 3445, 3280, 3324, 3220, 3376, 3489, 3474, 3627, + 3680, 3783, 3940, 3934, 3869, 3949, 4100, 3873, 3911, 3950, 3775, 4368, 4113, 4304, 4314, + 4230, + ], + [ + 4605, 4414, 4141, 4386, 3973, 4416, 4402, 4385, 4479, 4510, 4187, 4199, 4276, 4227, 4196, + 4208, 4250, 4132, 4075, 4090, 4178, 4256, 3856, 4011, 4264, 3969, 3961, 4056, 3998, 3666, + 3385, 4132, 4128, 3848, 3783, 3913, 3801, 3749, 3573, 3968, 3765, 4074, 4223, 4249, 4349, + 4536, 4498, 4837, 4854, 4970, 5024, 5023, 5037, 5037, 5028, 5155, 5083, 5111, 5089, 4937, + 4899, 4856, 4874, 4947, 4714, 4825, 4945, 4992, 4709, 4711, 4847, 4829, 4883, 4857, 4844, + 4825, 4878, 4818, 4746, 4671, 4691, 4450, 4470, 4689, 4727, 4674, 4637, 4640, 4681, 4679, + 4683, 4677, 4659, 4664, 4662, 4646, 4651, 4652, 4685, 4706, 4699, 4671, 4640, 4645, 4677, + 4659, 4669, 4679, 4684, 4673, 4625, 4587, 4574, 4557, 4556, 4535, 4532, 4521, 4515, 4556, + 4555, 4486, 4469, 4458, 4450, 4448, 4454, 4432, 4396, 4328, 4263, 4193, 4162, 4248, 4276, + 4266, 4299, 4258, 4176, 4198, 3989, 3963, 4093, 4140, 4126, 4007, 3894, 3905, 3928, 3867, + 3895, 3870, 3922, 3822, 3824, 3823, 3852, 3720, 3870, 4029, 4164, 4300, 4399, 4340, 4449, + 4462, 4523, 4491, 4493, 4482, 4700, 4561, 4592, 4425, 4359, 4383, 4514, 4456, 4422, 4449, + 4379, 4353, 4321, 4313, 4314, 4310, 4334, 4195, 4330, 4372, 4356, 4326, 4356, 4357, 4329, + 4340, 4316, 4325, 4312, 4303, 4248, 4207, 4171, 4134, 4105, 4082, 4044, 4038, 4033, 3959, + 3926, 3810, 3766, 3723, 3641, 3606, 3559, 3418, 3412, 3465, 3559, 3622, 3777, 3931, 3898, + 3844, 4027, 4016, 3963, 4292, 4121, 4164, 4178, 4060, 4264, 4273, 4354, 4518, 4386, 4494, + 4605, + ], + [ + 4280, 4301, 4334, 4160, 4200, 4284, 4343, 4375, 4319, 4561, 4596, 4436, 4502, 4522, 4444, + 4505, 4398, 4274, 4398, 4428, 4388, 4280, 4333, 4246, 4262, 4035, 4139, 4131, 4327, 3933, + 3746, 3721, 3797, 3817, 3924, 3818, 3922, 3814, 3870, 4135, 4303, 4648, 4502, 4430, 4571, + 4607, 4744, 4823, 4862, 4919, 4958, 4889, 4907, 4982, 5004, 4984, 4998, 4928, 5014, 5039, + 5027, 4917, 4970, 4857, 4893, 4835, 4854, 4727, 4707, 4811, 4807, 4785, 4890, 4884, 4913, + 4882, 4817, 4824, 4781, 4715, 4707, 4638, 4731, 4662, 4692, 4742, 4699, 4662, 4705, 4730, + 4728, 4753, 4713, 4709, 4744, 4760, 4739, 4748, 4741, 4742, 4731, 4741, 4713, 4698, 4718, + 4726, 4712, 4721, 4704, 4674, 4639, 4654, 4647, 4647, 4613, 4605, 4601, 4595, 4558, 4574, + 4542, 4526, 4507, 4536, 4510, 4503, 4517, 4511, 4466, 4429, 4382, 4344, 4349, 4412, 4481, + 4448, 4438, 4499, 4393, 4369, 4246, 4341, 4284, 4319, 4277, 4198, 4106, 4090, 4084, 4103, + 4086, 4171, 4201, 4131, 4098, 4068, 4151, 4081, 4191, 4215, 4281, 4537, 4554, 4584, 4626, + 4573, 4648, 4684, 4701, 4524, 4603, 4661, 4612, 4606, 4497, 4320, 4500, 4508, 4508, 4441, + 4455, 4416, 4346, 4379, 4347, 4366, 4387, 4406, 4437, 4372, 4285, 4465, 4400, 4355, 4339, + 4361, 4357, 4374, 4320, 4285, 4280, 4245, 4191, 4151, 4150, 4129, 4115, 4095, 4083, 4008, + 3995, 3958, 3887, 3773, 3711, 3663, 3649, 3578, 3526, 3622, 3525, 3604, 3875, 3880, 3885, + 4016, 4124, 4136, 4161, 4200, 4152, 4231, 4376, 4408, 4384, 4416, 4467, 4479, 4326, 4262, + 4280, + ], + [ + 4338, 4257, 4295, 4126, 4180, 4371, 4365, 4510, 4538, 4540, 4534, 4593, 4612, 4610, 4648, + 4560, 4572, 4693, 4479, 4450, 4484, 4642, 4721, 4474, 4391, 4000, 4173, 4148, 4307, 4221, + 3864, 3892, 4015, 4018, 3998, 4001, 3910, 3887, 4125, 4349, 4614, 4765, 4680, 4504, 4668, + 4583, 4715, 4780, 4848, 4878, 4921, 4886, 4929, 4943, 4962, 4946, 4824, 4903, 4982, 5038, + 4978, 5010, 5027, 4928, 4951, 4934, 4744, 4774, 4784, 4782, 4886, 4832, 4905, 4869, 4884, + 4911, 4834, 4787, 4818, 4810, 4801, 4791, 4680, 4716, 4734, 4710, 4738, 4741, 4750, 4749, + 4772, 4784, 4786, 4784, 4767, 4785, 4809, 4770, 4772, 4765, 4762, 4776, 4784, 4769, 4778, + 4774, 4774, 4758, 4731, 4702, 4674, 4689, 4713, 4690, 4668, 4657, 4654, 4637, 4635, 4614, + 4604, 4609, 4606, 4591, 4582, 4586, 4561, 4551, 4573, 4543, 4478, 4467, 4478, 4520, 4593, + 4588, 4623, 4336, 4447, 4450, 4369, 4404, 4461, 4402, 4395, 4284, 4203, 4143, 4245, 4265, + 4358, 4330, 4295, 4265, 4219, 4245, 4323, 4314, 4319, 4325, 4407, 4485, 4648, 4671, 4536, + 4662, 4650, 4689, 4714, 4620, 4994, 4617, 4529, 4574, 4465, 4299, 4497, 4498, 4485, 4478, + 4528, 4475, 4423, 4405, 4462, 4444, 4436, 4418, 4484, 4463, 4401, 4474, 4637, 3726, 4364, + 4439, 4439, 4353, 4355, 4345, 4330, 4301, 4265, 4252, 4243, 4213, 4191, 4195, 4155, 4083, + 4082, 4053, 3925, 3886, 3818, 3775, 3787, 3732, 3704, 3798, 3764, 3903, 3847, 3861, 4015, + 3995, 4057, 4183, 4136, 4203, 4311, 4470, 4442, 4420, 4449, 4417, 4442, 4364, 4349, 4471, + 4338, + ], + [ + 4336, 4298, 4242, 4234, 4334, 4376, 4289, 4485, 4445, 4514, 4518, 4520, 4524, 4591, 4590, + 4632, 4517, 4378, 4442, 4531, 4460, 4495, 4431, 4456, 4386, 4352, 4257, 4239, 4641, 4300, + 4109, 4100, 4092, 4106, 4154, 4084, 4372, 4304, 4644, 4816, 4857, 4766, 4807, 4674, 4734, + 4678, 4702, 4779, 4826, 4892, 4886, 4860, 4867, 4857, 4908, 4760, 4845, 4875, 4899, 4974, + 4964, 4961, 4952, 4938, 4950, 4900, 4748, 4753, 4803, 4904, 4757, 4731, 4869, 4871, 4884, + 4872, 4866, 4814, 4768, 4766, 4828, 4631, 4662, 4748, 4745, 4788, 4768, 4774, 4789, 4787, + 4794, 4794, 4814, 4806, 4800, 4806, 4815, 4813, 4827, 4801, 4811, 4830, 4833, 4826, 4821, + 4811, 4790, 4770, 4761, 4740, 4730, 4714, 4736, 4710, 4732, 4697, 4691, 4698, 4666, 4667, + 4668, 4689, 4681, 4671, 4664, 4650, 4641, 4634, 4628, 4597, 4595, 4569, 4576, 4567, 4574, + 4553, 4713, 4566, 4562, 4502, 4479, 4518, 4515, 4472, 4408, 4364, 4306, 4321, 4395, 4516, + 4489, 4436, 4355, 4338, 4339, 4394, 4395, 4392, 4437, 4416, 4531, 4574, 4621, 4641, 4634, + 4666, 4659, 4664, 4671, 4681, 4555, 4578, 4301, 4481, 4682, 4563, 4517, 4558, 4596, 4574, + 4543, 4534, 4511, 4521, 4506, 4503, 4501, 4473, 4456, 4279, 4486, 4424, 4227, 4530, 4402, + 4431, 4225, 4417, 4360, 4390, 4395, 4365, 4359, 4337, 4320, 4281, 4283, 4274, 4234, 4161, + 4165, 4090, 3967, 3958, 3989, 4005, 3997, 3896, 3908, 3865, 3852, 3927, 3939, 3911, 4006, + 3973, 4063, 4112, 4107, 4203, 4447, 4415, 4396, 4402, 4354, 4390, 4415, 4362, 4346, 4309, + 4336, + ], + [ + 4310, 4247, 4270, 4352, 4346, 4385, 4436, 4419, 4438, 4436, 4489, 4502, 4484, 4494, 4518, + 4485, 4501, 4524, 4482, 4536, 4492, 4411, 4409, 4374, 4409, 4488, 4781, 4250, 4407, 4404, + 4353, 4231, 4298, 4540, 4287, 4182, 4591, 4691, 4718, 4819, 4824, 4853, 4849, 4823, 4795, + 4726, 4740, 4778, 4757, 4949, 4846, 4760, 4821, 4787, 4783, 4833, 4786, 4869, 4863, 4886, + 4919, 4902, 4891, 4904, 4874, 5083, 4793, 4664, 4732, 4732, 4835, 4805, 4593, 4705, 4825, + 4807, 4811, 4788, 4737, 4739, 4623, 4658, 4712, 4777, 4788, 4777, 4793, 4821, 4789, 4826, + 4818, 4822, 4827, 4816, 4806, 4826, 4830, 4807, 4842, 4855, 4869, 4836, 4856, 4859, 4842, + 4828, 4787, 4813, 4776, 4781, 4765, 4760, 4752, 4745, 4737, 4755, 4734, 4698, 4719, 4732, + 4729, 4742, 4765, 4761, 4745, 4731, 4697, 4673, 4654, 4654, 4625, 4639, 4619, 4571, 4593, + 4630, 4618, 4581, 4523, 4521, 4563, 4569, 4524, 4539, 4527, 4458, 4474, 4458, 4522, 4524, + 4547, 4506, 4479, 4471, 4509, 4504, 4510, 4492, 4527, 4561, 4603, 4621, 4620, 4606, 4656, + 4654, 4650, 4657, 4617, 4584, 4586, 4584, 4596, 4575, 4207, 4437, 4350, 4630, 4506, 4666, + 4600, 4287, 4587, 4588, 4566, 4559, 4513, 4552, 4520, 4583, 4483, 4537, 4509, 4449, 4508, + 4462, 4481, 4457, 4457, 4428, 4453, 4457, 4413, 4393, 4383, 4359, 4323, 4318, 4327, 4321, + 4264, 4245, 4162, 4133, 4155, 4222, 4194, 4168, 4213, 4298, 4056, 4074, 4136, 4052, 4069, + 4129, 4170, 4188, 4199, 4448, 4405, 4396, 4344, 4368, 4351, 4363, 4375, 4329, 4331, 4330, + 4310, + ], + [ + 4323, 4313, 4328, 4346, 4359, 4410, 4402, 4395, 4418, 4415, 4408, 4434, 4476, 4464, 4446, + 4416, 4428, 4428, 4428, 4474, 4387, 4399, 4422, 4381, 4470, 4454, 4254, 4289, 4333, 4666, + 4448, 4502, 4358, 4342, 4475, 4603, 4591, 4668, 4786, 4821, 4863, 4821, 4810, 4799, 4803, + 4759, 4734, 4716, 4726, 4830, 4793, 4706, 4796, 4752, 4774, 4813, 4856, 4831, 4816, 4845, + 4855, 4858, 4838, 4847, 4830, 4789, 4718, 4744, 4715, 4700, 4753, 4822, 4651, 4751, 4765, + 4805, 4767, 4747, 4777, 4804, 4896, 4714, 4774, 4772, 4775, 4778, 4807, 4802, 4827, 4807, + 4823, 4830, 4829, 4813, 4807, 4823, 4839, 4835, 4844, 4877, 4885, 4884, 4863, 4867, 4835, + 4820, 4809, 4816, 4787, 4791, 4785, 4795, 4769, 4770, 4765, 4756, 4754, 4750, 4752, 4754, + 4775, 4782, 4772, 4774, 4782, 4755, 4724, 4718, 4690, 4688, 4684, 4673, 4667, 4684, 4651, + 4655, 4662, 4643, 4603, 4593, 4620, 4588, 4559, 4569, 4593, 4596, 4588, 4576, 4549, 4588, + 4563, 4560, 4523, 4549, 4585, 4581, 4553, 4571, 4586, 4585, 4623, 4654, 4651, 4658, 4664, + 4678, 4679, 4644, 4603, 4616, 4602, 4545, 4678, 4591, 4523, 4643, 4705, 4605, 4569, 4383, + 4431, 4503, 4403, 4475, 4601, 4555, 4597, 4599, 4554, 4627, 4543, 4581, 4584, 4510, 4511, + 4508, 4541, 4507, 4513, 4433, 4515, 4503, 4488, 4473, 4462, 4424, 4394, 4406, 4419, 4411, + 4406, 4402, 4365, 4308, 4351, 4377, 4374, 4336, 4374, 4342, 4453, 4269, 4276, 4229, 4048, + 4240, 4238, 4259, 4316, 4444, 4393, 4377, 4370, 4351, 4373, 4379, 4365, 4365, 4317, 4324, + 4323, + ], + [ + 4314, 4334, 4336, 4367, 4353, 4388, 4380, 4410, 4406, 4417, 4410, 4439, 4451, 4456, 4458, + 4436, 4317, 4434, 4439, 4419, 4412, 4386, 4408, 4432, 4531, 4354, 4474, 4393, 4472, 5123, + 4600, 4950, 4529, 4543, 4546, 4623, 4608, 4693, 4732, 4797, 4846, 4794, 4781, 4794, 4726, + 4708, 4716, 4689, 4748, 4747, 4744, 4723, 4693, 4668, 4755, 4800, 4803, 4807, 4820, 4785, + 4807, 4823, 4786, 4819, 4792, 4774, 4724, 4740, 4704, 4760, 4665, 4773, 4871, 4657, 4753, + 4761, 4782, 4799, 4765, 4734, 4825, 4708, 4699, 4697, 4761, 4793, 4797, 4779, 4821, 4804, + 4817, 4818, 4800, 4806, 4821, 4809, 4832, 4821, 4858, 4877, 4870, 4870, 4853, 4862, 4844, + 4811, 4814, 4808, 4817, 4797, 4803, 4782, 4790, 4784, 4782, 4777, 4772, 4776, 4773, 4774, + 4776, 4765, 4771, 4779, 4787, 4770, 4771, 4747, 4723, 4713, 4704, 4719, 4720, 4702, 4705, + 4705, 4678, 4655, 4662, 4610, 4627, 4605, 4610, 4647, 4633, 4650, 4636, 4628, 4620, 4605, + 4615, 4606, 4585, 4621, 4619, 4612, 4622, 4600, 4607, 4633, 4635, 4681, 4674, 4683, 4715, + 4694, 4668, 4671, 4642, 4623, 4612, 4671, 4645, 4571, 4593, 4617, 4620, 4663, 4566, 4716, + 4450, 4745, 4564, 4462, 4639, 4534, 4654, 4590, 4662, 4582, 4655, 4501, 4475, 4518, 4517, + 4619, 4503, 4535, 4549, 4448, 4525, 4548, 4549, 4522, 4507, 4485, 4479, 4479, 4452, 4458, + 4476, 4508, 4464, 4450, 4472, 4467, 4429, 4521, 4503, 4481, 4436, 4408, 4340, 4346, 4327, + 4335, 4327, 4345, 4375, 4445, 4385, 4390, 4390, 4385, 4392, 4390, 4398, 4398, 4367, 4322, + 4314, + ], + [ + 4361, 4359, 4380, 4402, 4377, 4369, 4378, 4406, 4402, 4441, 4453, 4438, 4457, 4426, 4423, + 4428, 4398, 4397, 4410, 4428, 4411, 4367, 4432, 4477, 4509, 4646, 4494, 4431, 4390, 4340, + 4389, 4381, 4595, 4596, 4575, 4639, 4656, 4677, 4704, 4746, 4771, 4779, 4732, 4729, 4677, + 4690, 4692, 4704, 4710, 4690, 4675, 4702, 4644, 4713, 4725, 4752, 4788, 4796, 4785, 4757, + 4762, 4753, 4758, 4774, 4752, 4716, 4735, 4704, 4693, 4632, 4733, 4755, 4717, 4595, 4721, + 4772, 4802, 4769, 4771, 4776, 4791, 4688, 5040, 4716, 4774, 4784, 4779, 4806, 4789, 4799, + 4779, 4786, 4797, 4805, 4814, 4809, 4805, 4820, 4857, 4868, 4868, 4850, 4850, 4839, 4850, + 4831, 4805, 4798, 4824, 4803, 4815, 4797, 4794, 4802, 4814, 4810, 4799, 4802, 4792, 4795, + 4803, 4791, 4779, 4778, 4804, 4801, 4771, 4753, 4746, 4762, 4765, 4748, 4753, 4742, 4739, + 4703, 4683, 4686, 4684, 4707, 4677, 4689, 4670, 4653, 4677, 4669, 4691, 4670, 4681, 4650, + 4648, 4659, 4654, 4645, 4673, 4630, 4634, 4632, 4626, 4648, 4669, 4692, 4711, 4709, 4696, + 4707, 4713, 4679, 4664, 4666, 4665, 4682, 4652, 4629, 4671, 4634, 4617, 4663, 4674, 4678, + 4651, 4628, 4616, 4672, 4586, 4638, 4647, 4641, 4616, 4635, 4735, 4779, 4619, 4600, 4515, + 4536, 4513, 4506, 4524, 4520, 4551, 4535, 4528, 4521, 4544, 4553, 4535, 4555, 4546, 4551, + 4519, 4526, 4539, 4529, 4521, 4541, 4540, 4505, 4532, 4491, 4473, 4440, 4441, 4429, 4447, + 4415, 4406, 4417, 4423, 4414, 4438, 4476, 4439, 4400, 4409, 4428, 4445, 4417, 4410, 4380, + 4361, + ], + [ + 4429, 4394, 4418, 4431, 4432, 4412, 4372, 4446, 4454, 4370, 4447, 4443, 4461, 4437, 4442, + 4463, 4409, 4402, 4398, 4436, 4435, 4415, 4436, 4391, 4507, 4423, 4515, 4382, 4473, 4509, + 4599, 4686, 4346, 4603, 4588, 4654, 4672, 4676, 4699, 4722, 4740, 4742, 4743, 4692, 4695, + 4690, 4663, 4691, 4704, 4697, 4676, 4774, 4699, 4733, 4707, 4724, 4778, 4766, 4763, 4764, + 4715, 4736, 4732, 4718, 4701, 4702, 4706, 4691, 4649, 4697, 4722, 4741, 4724, 4798, 4798, + 4748, 4728, 4787, 4803, 4769, 4761, 4760, 4744, 4729, 4771, 4782, 4760, 4773, 4774, 4768, + 4767, 4771, 4777, 4814, 4803, 4804, 4778, 4806, 4840, 4824, 4841, 4835, 4820, 4806, 4811, + 4811, 4799, 4801, 4783, 4805, 4775, 4796, 4783, 4778, 4797, 4803, 4816, 4818, 4816, 4826, + 4806, 4798, 4805, 4809, 4796, 4790, 4783, 4782, 4767, 4753, 4755, 4756, 4750, 4752, 4751, + 4722, 4701, 4717, 4712, 4705, 4679, 4691, 4682, 4689, 4671, 4672, 4697, 4685, 4678, 4681, + 4686, 4669, 4675, 4674, 4667, 4674, 4670, 4652, 4658, 4663, 4690, 4711, 4709, 4703, 4703, + 4696, 4689, 4699, 4716, 4676, 4694, 4693, 4651, 4693, 4695, 4658, 4652, 4665, 4741, 4684, + 4643, 4646, 4669, 4695, 3850, 4801, 4538, 4675, 4641, 4611, 4626, 4256, 4511, 4530, 4529, + 4645, 4174, 4359, 4563, 4511, 4553, 4537, 4529, 4537, 4535, 4539, 4563, 4579, 4567, 4559, + 4545, 4549, 4544, 4551, 4543, 4532, 4557, 4528, 4547, 4510, 4504, 4470, 4473, 4480, 4454, + 4442, 4437, 4448, 4447, 4446, 4465, 4527, 4455, 4442, 4448, 4462, 4466, 4457, 4441, 4430, + 4429, + ], + [ + 4497, 4460, 4479, 4482, 4488, 4438, 4387, 4473, 4440, 4495, 4442, 4436, 4440, 4445, 4455, + 4451, 4374, 4361, 4351, 4384, 4418, 4437, 4455, 4372, 4438, 4415, 4423, 4460, 4361, 4430, + 4533, 4594, 4566, 4507, 4638, 4679, 4717, 4691, 4702, 4701, 4700, 4712, 4709, 4669, 4676, + 4662, 4682, 4683, 4661, 4641, 4631, 4634, 4803, 4671, 4659, 4709, 4723, 4753, 4747, 4726, + 4707, 4688, 4686, 4683, 4667, 4693, 4632, 4638, 4630, 4668, 4679, 4699, 4732, 4729, 4721, + 4738, 4742, 4743, 4762, 4723, 4778, 4724, 4700, 4731, 4748, 4733, 4755, 4743, 4723, 4746, + 4764, 4734, 4781, 4796, 4788, 4778, 4768, 4799, 4804, 4797, 4786, 4768, 4780, 4772, 4763, + 4779, 4759, 4780, 4767, 4764, 4753, 4743, 4769, 4761, 4766, 4781, 4803, 4810, 4817, 4810, + 4796, 4805, 4804, 4798, 4798, 4800, 4795, 4777, 4772, 4765, 4745, 4758, 4752, 4743, 4736, + 4737, 4725, 4723, 4721, 4716, 4709, 4700, 4710, 4695, 4695, 4699, 4690, 4695, 4697, 4701, + 4705, 4709, 4680, 4683, 4683, 4690, 4688, 4684, 4690, 4689, 4688, 4704, 4715, 4719, 4705, + 4710, 4712, 4708, 4706, 4723, 4728, 4699, 4681, 4715, 4706, 4715, 4686, 4680, 4712, 4678, + 4706, 4715, 4662, 4657, 4306, 4552, 4397, 4516, 4390, 4542, 4507, 4569, 4952, 4223, 4583, + 4641, 4569, 4572, 4573, 4541, 4518, 4517, 4518, 4519, 4539, 4546, 4554, 4559, 4561, 4544, + 4550, 4550, 4558, 4548, 4546, 4555, 4543, 4543, 4523, 4517, 4522, 4504, 4480, 4482, 4478, + 4467, 4463, 4467, 4465, 4498, 4480, 4520, 4516, 4468, 4422, 4516, 4479, 4483, 4477, 4478, + 4497, + ], + [ + 4555, 4490, 4492, 4530, 4488, 4483, 4485, 4576, 4454, 4431, 4461, 4465, 4428, 4452, 4435, + 4397, 4361, 4342, 4371, 4387, 4408, 4413, 4398, 4493, 4350, 4424, 4686, 4374, 4545, 4485, + 4502, 4561, 4559, 4608, 4648, 4716, 4683, 4696, 4670, 4660, 4673, 4672, 4654, 4652, 4664, + 4662, 4663, 4643, 4629, 4645, 4633, 4661, 4672, 4679, 4616, 4706, 4718, 4717, 4707, 4690, + 4687, 4667, 4659, 4643, 4635, 4651, 4643, 4623, 4645, 4648, 4668, 4714, 4675, 4685, 4703, + 4686, 4710, 4705, 4734, 4687, 4660, 4713, 4603, 4698, 4677, 4731, 4732, 4718, 4710, 4705, + 4711, 4752, 4801, 4785, 4789, 4739, 4771, 4793, 4768, 4752, 4745, 4726, 4741, 4733, 4743, + 4727, 4758, 4742, 4768, 4739, 4753, 4738, 4731, 4739, 4755, 4785, 4791, 4790, 4804, 4802, + 4806, 4793, 4795, 4801, 4805, 4793, 4790, 4781, 4772, 4762, 4771, 4755, 4745, 4746, 4739, + 4739, 4742, 4733, 4729, 4732, 4731, 4722, 4728, 4716, 4715, 4705, 4714, 4700, 4701, 4729, + 4716, 4702, 4704, 4691, 4689, 4703, 4704, 4714, 4729, 4721, 4730, 4728, 4710, 4715, 4738, + 4728, 4711, 4731, 4720, 4746, 4744, 4716, 4739, 4723, 4722, 4723, 4713, 4719, 4701, 4712, + 4696, 4703, 4650, 4717, 4613, 4696, 4682, 4672, 4477, 4693, 4686, 4675, 4332, 4569, 4438, + 4519, 4632, 4532, 4519, 4502, 4505, 4429, 4502, 4533, 4523, 4534, 4559, 4552, 4551, 4544, + 4564, 4553, 4551, 4556, 4547, 4544, 4538, 4538, 4520, 4538, 4524, 4525, 4523, 4516, 4506, + 4513, 4506, 4513, 4518, 4510, 4509, 4516, 4541, 4511, 4532, 4441, 4509, 4505, 4511, 4503, + 4555, + ], + [ + 4501, 4524, 4514, 4521, 4543, 4523, 4625, 4367, 4531, 4510, 4452, 4417, 4421, 4426, 4440, + 4400, 4364, 4365, 4366, 4391, 4389, 4407, 4437, 4410, 4525, 4333, 4566, 4501, 4575, 4551, + 4549, 4618, 4614, 4599, 4617, 4642, 4640, 4649, 4653, 4653, 4649, 4622, 4633, 4663, 4647, + 4653, 4652, 4626, 4628, 4635, 4615, 4633, 4659, 4710, 4592, 4674, 4668, 4685, 4671, 4655, + 4660, 4655, 4619, 4641, 4605, 4637, 4608, 4727, 4676, 4682, 4622, 4638, 4673, 4672, 4619, + 4657, 4622, 4687, 4566, 4686, 4657, 4619, 4673, 4532, 4675, 4695, 4742, 4702, 4696, 4695, + 4700, 4769, 4763, 4774, 4738, 4751, 4789, 4744, 4732, 4746, 4721, 4721, 4708, 4716, 4726, + 4716, 4758, 4745, 4738, 4741, 4729, 4731, 4729, 4735, 4734, 4758, 4782, 4801, 4802, 4791, + 4791, 4800, 4810, 4806, 4791, 4795, 4795, 4788, 4776, 4763, 4756, 4756, 4771, 4745, 4744, + 4763, 4766, 4758, 4750, 4747, 4752, 4755, 4748, 4742, 4741, 4741, 4733, 4729, 4735, 4722, + 4731, 4721, 4716, 4715, 4718, 4725, 4723, 4742, 4763, 4768, 4764, 4754, 4752, 4745, 4738, + 4740, 4750, 4753, 4755, 4754, 4744, 4739, 4770, 4752, 4750, 4736, 4749, 4726, 4686, 4708, + 4688, 4684, 4710, 4631, 4769, 4720, 4613, 4538, 4590, 4771, 4662, 4474, 4128, 4425, 4457, + 4567, 4261, 4506, 4476, 4356, 4462, 4517, 4523, 4511, 4481, 4539, 4528, 4543, 4547, 4551, + 4541, 4557, 4548, 4546, 4557, 4536, 4542, 4541, 4547, 4547, 4548, 4525, 4543, 4542, 4532, + 4533, 4527, 4513, 4532, 4526, 4526, 4529, 4519, 4495, 4551, 4543, 4523, 4534, 4538, 4556, + 4501, + ], + [ + 4552, 4525, 4532, 4540, 4553, 4518, 4571, 4553, 4475, 4468, 4451, 4418, 4385, 4407, 4415, + 4403, 4372, 4358, 4368, 4403, 4427, 4425, 4344, 4527, 4456, 4476, 4487, 4496, 4569, 4529, + 4545, 4598, 4574, 4616, 4590, 4604, 4624, 4621, 4631, 4630, 4648, 4633, 4622, 4635, 4647, + 4655, 4650, 4626, 4633, 4621, 4638, 4643, 4628, 4635, 4620, 4665, 4640, 4653, 4645, 4651, + 4637, 4616, 4596, 4657, 4632, 4446, 4686, 4480, 4622, 4540, 4603, 4648, 4597, 4583, 4630, + 4622, 4769, 4622, 4660, 4853, 4625, 4632, 4581, 4676, 4706, 4716, 4657, 4718, 4708, 4697, + 4682, 4738, 4724, 4733, 4729, 4763, 4767, 4739, 4724, 4712, 4714, 4724, 4714, 4721, 4701, + 4741, 4718, 4758, 4738, 4735, 4740, 4736, 4724, 4731, 4742, 4751, 4764, 4794, 4793, 4803, + 4804, 4803, 4799, 4810, 4809, 4802, 4801, 4796, 4783, 4784, 4784, 4776, 4762, 4777, 4781, + 4775, 4789, 4783, 4774, 4778, 4787, 4778, 4758, 4767, 4747, 4770, 4759, 4756, 4753, 4748, + 4747, 4746, 4747, 4761, 4762, 4749, 4772, 4779, 4771, 4784, 4780, 4780, 4773, 4778, 4777, + 4766, 4764, 4759, 4760, 4764, 4749, 4759, 4754, 4736, 4759, 4771, 4776, 4734, 4681, 4675, + 4728, 4691, 4733, 4696, 4731, 4717, 4676, 4595, 4579, 4879, 4641, 4261, 4499, 4422, 4469, + 4428, 4565, 4409, 4485, 4482, 4425, 4492, 4508, 4542, 4516, 4522, 4544, 4552, 4539, 4563, + 4553, 4554, 4559, 4542, 4540, 4542, 4556, 4547, 4564, 4556, 4562, 4573, 4563, 4564, 4574, + 4549, 4534, 4535, 4543, 4533, 4543, 4527, 4535, 4525, 4558, 4612, 4554, 4539, 4548, 4531, + 4552, + ], + [ + 4556, 4555, 4557, 4554, 4552, 4534, 4549, 4542, 4500, 4457, 4442, 4400, 4396, 4383, 4392, + 4365, 4362, 4373, 4371, 4431, 4494, 4453, 4421, 4439, 4529, 4590, 4537, 4523, 4541, 4533, + 4548, 4554, 4569, 4610, 4597, 4581, 4590, 4587, 4589, 4628, 4631, 4614, 4634, 4640, 4643, + 4636, 4632, 4630, 4644, 4640, 4637, 4628, 4628, 4603, 4605, 4628, 4654, 4639, 4626, 4622, + 4617, 4626, 4607, 4576, 4604, 4756, 4508, 4656, 4584, 4600, 4580, 4536, 4595, 4599, 4551, + 4561, 4643, 4638, 4620, 4630, 4629, 4551, 4562, 4668, 4631, 4695, 4687, 4713, 4689, 4662, + 4696, 4678, 4695, 4666, 4713, 4765, 4735, 4700, 4709, 4701, 4720, 4708, 4716, 4728, 4718, + 4728, 4731, 4719, 4740, 4754, 4742, 4731, 4730, 4727, 4737, 4733, 4752, 4778, 4793, 4807, + 4813, 4803, 4806, 4804, 4812, 4820, 4816, 4804, 4801, 4806, 4794, 4795, 4782, 4775, 4785, + 4795, 4787, 4796, 4797, 4793, 4774, 4783, 4771, 4766, 4790, 4767, 4779, 4785, 4777, 4757, + 4759, 4761, 4764, 4757, 4766, 4786, 4787, 4777, 4779, 4776, 4775, 4768, 4776, 4793, 4768, + 4764, 4757, 4762, 4758, 4747, 4749, 4769, 4754, 4762, 4741, 4758, 4762, 4740, 4716, 4681, + 4670, 4711, 4690, 4729, 4724, 4704, 4655, 4683, 4613, 4598, 4514, 4462, 4415, 4411, 4435, + 4439, 4367, 4496, 4434, 4468, 4457, 4449, 4480, 4533, 4515, 4552, 4459, 4532, 4569, 4564, + 4564, 4557, 4554, 4558, 4547, 4547, 4547, 4559, 4566, 4578, 4569, 4583, 4588, 4583, 4572, + 4575, 4563, 4566, 4556, 4551, 4558, 4570, 4564, 4546, 4553, 4548, 4555, 4545, 4531, 4542, + 4556, + ], + [ + 4565, 4572, 4571, 4572, 4580, 4564, 4569, 4546, 4531, 4479, 4431, 4415, 4403, 4429, 4393, + 4385, 4391, 4386, 4429, 4448, 4509, 4450, 4474, 4360, 4519, 4577, 4573, 4555, 4563, 4569, + 4557, 4540, 4558, 4604, 4599, 4564, 4577, 4587, 4589, 4606, 4613, 4633, 4631, 4628, 4638, + 4631, 4621, 4646, 4628, 4632, 4633, 4624, 4617, 4603, 4617, 4630, 4640, 4627, 4625, 4635, + 4620, 4606, 4640, 4543, 4634, 4552, 4628, 4662, 4594, 4604, 4642, 4631, 4568, 4588, 4608, + 4612, 4576, 4674, 4536, 4455, 4642, 4389, 4529, 4580, 4679, 4710, 4670, 4666, 4701, 4664, + 4731, 4603, 4636, 4673, 4737, 4752, 4681, 4697, 4718, 4705, 4721, 4706, 4738, 4688, 4750, + 4717, 4732, 4724, 4742, 4750, 4758, 4757, 4749, 4731, 4735, 4739, 4763, 4780, 4794, 4794, + 4808, 4814, 4811, 4815, 4814, 4807, 4818, 4820, 4815, 4809, 4814, 4793, 4784, 4783, 4797, + 4800, 4802, 4814, 4818, 4813, 4802, 4780, 4787, 4787, 4790, 4791, 4805, 4802, 4804, 4797, + 4801, 4782, 4772, 4780, 4775, 4800, 4816, 4805, 4775, 4769, 4788, 4753, 4773, 4799, 4790, + 4805, 4795, 4776, 4759, 4735, 4772, 4787, 4793, 4764, 4742, 4737, 4721, 4725, 4745, 4737, + 4685, 4713, 4669, 4736, 4730, 4723, 4795, 4697, 4553, 4325, 4677, 4446, 4457, 4481, 4387, + 4397, 4257, 4497, 4442, 4438, 4473, 4455, 4475, 4528, 4521, 4538, 4542, 4533, 4556, 4564, + 4561, 4558, 4564, 4559, 4550, 4553, 4539, 4564, 4570, 4563, 4576, 4586, 4569, 4576, 4572, + 4573, 4574, 4577, 4562, 4564, 4568, 4580, 4564, 4577, 4570, 4563, 4563, 4566, 4559, 4574, + 4565, + ], + [ + 4566, 4556, 4577, 4590, 4555, 4578, 4587, 4596, 4549, 4465, 4442, 4429, 4412, 4399, 4394, + 4396, 4388, 4394, 4449, 4422, 4359, 4480, 4471, 4619, 4560, 4516, 4560, 4537, 4555, 4549, + 4587, 4572, 4575, 4572, 4588, 4582, 4586, 4587, 4601, 4608, 4607, 4627, 4623, 4618, 4619, + 4617, 4627, 4627, 4617, 4623, 4622, 4633, 4617, 4623, 4624, 4622, 4629, 4651, 4632, 4629, + 4619, 4613, 4599, 4659, 4547, 4573, 4618, 4514, 4643, 4630, 4562, 4570, 4599, 4656, 4654, + 4691, 4614, 4619, 4630, 4626, 4629, 4738, 4726, 4693, 4654, 4643, 4763, 4611, 4580, 4732, + 4683, 4651, 4615, 4688, 4775, 4708, 4660, 4712, 4702, 4725, 4718, 4721, 4724, 4723, 4712, + 4747, 4712, 4732, 4741, 4750, 4764, 4743, 4751, 4760, 4753, 4774, 4761, 4766, 4794, 4812, + 4811, 4812, 4814, 4818, 4812, 4812, 4811, 4809, 4827, 4826, 4817, 4800, 4797, 4798, 4805, + 4814, 4812, 4809, 4830, 4826, 4805, 4793, 4791, 4801, 4791, 4803, 4816, 4819, 4813, 4814, + 4805, 4818, 4810, 4787, 4810, 4836, 4837, 4814, 4797, 4784, 4758, 4769, 4795, 4796, 4803, + 4783, 4806, 4802, 4771, 4756, 4794, 4784, 4803, 4779, 4759, 4726, 4729, 4745, 4749, 4611, + 4712, 4687, 4717, 4714, 4666, 4693, 4787, 4789, 4120, 4605, 4439, 4454, 4435, 4416, 4424, + 4399, 4485, 4503, 4447, 4447, 4468, 4497, 4471, 4471, 4496, 4516, 4531, 4538, 4546, 4549, + 4547, 4555, 4566, 4559, 4551, 4546, 4557, 4556, 4570, 4576, 4573, 4578, 4598, 4583, 4585, + 4579, 4586, 4576, 4568, 4579, 4564, 4573, 4589, 4591, 4562, 4584, 4583, 4579, 4584, 4585, + 4566, + ], + [ + 4581, 4584, 4589, 4585, 4585, 4555, 4573, 4580, 4551, 4528, 4433, 4430, 4402, 4390, 4390, + 4399, 4421, 4436, 4394, 4417, 4491, 4544, 4510, 4515, 4558, 4621, 4530, 4565, 4548, 4598, + 4607, 4598, 4585, 4583, 4597, 4601, 4597, 4622, 4624, 4598, 4604, 4609, 4613, 4615, 4617, + 4618, 4628, 4604, 4611, 4610, 4610, 4624, 4633, 4638, 4637, 4638, 4628, 4637, 4650, 4638, + 4615, 4654, 4597, 4598, 4616, 4633, 4563, 4277, 4694, 4600, 4641, 4605, 4614, 4629, 4613, + 4632, 4622, 4612, 4631, 4683, 4577, 4571, 4587, 4625, 4714, 4370, 4770, 4693, 4709, 4367, + 4690, 4591, 4566, 4777, 4779, 4602, 4675, 4702, 4715, 4764, 4658, 4783, 4693, 4775, 4719, + 4724, 4730, 4733, 4740, 4743, 4747, 4763, 4768, 4770, 4763, 4774, 4766, 4781, 4790, 4804, + 4813, 4817, 4808, 4810, 4799, 4802, 4816, 4828, 4826, 4826, 4809, 4805, 4803, 4806, 4802, + 4810, 4814, 4826, 4826, 4821, 4814, 4816, 4813, 4809, 4810, 4819, 4808, 4820, 4809, 4816, + 4803, 4813, 4817, 4819, 4821, 4825, 4824, 4817, 4787, 4779, 4773, 4762, 4761, 4779, 4791, + 4771, 4766, 4766, 4756, 4770, 4757, 4737, 4755, 4743, 4748, 4726, 4723, 4711, 4688, 4645, + 4709, 4706, 4752, 4719, 4703, 4665, 4694, 4874, 4327, 4468, 4476, 4457, 4444, 4434, 4430, + 4422, 4435, 4420, 4458, 4480, 4476, 4468, 4483, 4478, 4482, 4466, 4521, 4538, 4538, 4541, + 4547, 4538, 4537, 4547, 4557, 4541, 4552, 4568, 4558, 4572, 4590, 4585, 4598, 4601, 4591, + 4600, 4597, 4586, 4596, 4590, 4616, 4595, 4593, 4580, 4580, 4583, 4585, 4591, 4596, 4584, + 4581, + ], + [ + 4585, 4578, 4596, 4583, 4583, 4571, 4560, 4603, 4641, 4556, 4451, 4407, 4398, 4357, 4383, + 4395, 4384, 4414, 4425, 4327, 4571, 4512, 4518, 4521, 4524, 4476, 4588, 4549, 4576, 4583, + 4598, 4611, 4600, 4585, 4606, 4645, 4626, 4624, 4621, 4611, 4618, 4619, 4633, 4639, 4621, + 4629, 4628, 4606, 4611, 4620, 4632, 4622, 4648, 4658, 4662, 4641, 4638, 4649, 4650, 4645, + 4654, 4593, 4645, 4629, 4599, 4551, 4599, 4676, 4540, 4649, 4620, 4679, 4654, 4642, 4648, + 4645, 4651, 4609, 4666, 4676, 4773, 4647, 4669, 4741, 4472, 4707, 4690, 4673, 4624, 4671, + 4698, 4702, 4766, 4789, 4667, 4428, 4656, 4731, 4752, 4723, 4721, 4595, 4768, 4714, 4762, + 4718, 4742, 4733, 4717, 4749, 4769, 4782, 4768, 4760, 4768, 4770, 4781, 4785, 4800, 4798, + 4801, 4795, 4797, 4798, 4797, 4800, 4811, 4827, 4821, 4818, 4811, 4801, 4795, 4798, 4799, + 4796, 4798, 4814, 4818, 4828, 4809, 4792, 4801, 4799, 4790, 4794, 4791, 4785, 4808, 4803, + 4796, 4810, 4798, 4771, 4801, 4810, 4792, 4791, 4796, 4790, 4790, 4787, 4773, 4743, 4748, + 4752, 4743, 4755, 4757, 4754, 4745, 4726, 4728, 4740, 4734, 4730, 4703, 4713, 4694, 4694, + 4687, 4705, 4721, 4748, 4718, 4661, 4737, 4775, 4691, 4415, 4444, 4433, 4446, 4449, 4436, + 4423, 4428, 4447, 4456, 4487, 4466, 4487, 4497, 4478, 4488, 4483, 4509, 4512, 4515, 4522, + 4523, 4522, 4579, 4566, 4519, 4580, 4559, 4548, 4569, 4583, 4588, 4611, 4609, 4616, 4612, + 4614, 4603, 4596, 4607, 4617, 4627, 4614, 4612, 4587, 4584, 4574, 4581, 4584, 4584, 4590, + 4585, + ], + [ + 4596, 4600, 4575, 4606, 4587, 4580, 4565, 4565, 4624, 4574, 4508, 4387, 4403, 4380, 4381, + 4408, 4391, 4422, 4433, 4416, 4551, 4577, 4501, 4463, 4463, 4622, 4626, 4564, 4610, 4595, + 4588, 4604, 4604, 4606, 4633, 4638, 4645, 4607, 4621, 4630, 4646, 4646, 4656, 4649, 4626, + 4635, 4626, 4629, 4626, 4630, 4638, 4654, 4660, 4662, 4652, 4660, 4654, 4652, 4668, 4631, + 4652, 4657, 4632, 4599, 4626, 4631, 4618, 4558, 4712, 4510, 4689, 4618, 4665, 4669, 4657, + 4648, 4637, 4676, 4674, 4704, 4694, 4625, 4528, 4675, 4745, 4782, 4741, 4693, 4714, 4748, + 4558, 4946, 4605, 4488, 4631, 4809, 4780, 4598, 4732, 4645, 4857, 4639, 4613, 4803, 4760, + 4715, 4716, 4750, 4759, 4778, 4779, 4771, 4773, 4766, 4775, 4769, 4787, 4801, 4807, 4801, + 4794, 4785, 4791, 4803, 4802, 4810, 4817, 4809, 4819, 4815, 4806, 4795, 4787, 4781, 4779, + 4789, 4806, 4802, 4805, 4801, 4799, 4794, 4777, 4749, 4770, 4767, 4768, 4784, 4774, 4793, + 4796, 4790, 4780, 4783, 4775, 4769, 4778, 4781, 4753, 4761, 4761, 4766, 4752, 4750, 4719, + 4712, 4692, 4728, 4750, 4762, 4743, 4723, 4728, 4727, 4719, 4715, 4740, 4726, 4704, 4702, + 4679, 4702, 4644, 4644, 4738, 4717, 4764, 4385, 4620, 4544, 4457, 4455, 4406, 4416, 4461, + 4454, 4434, 4434, 4447, 4481, 4471, 4493, 4487, 4488, 4497, 4504, 4490, 4502, 4508, 4519, + 4520, 4517, 4574, 4515, 4508, 4532, 4565, 4566, 4574, 4601, 4612, 4621, 4626, 4628, 4629, + 4627, 4600, 4614, 4609, 4637, 4632, 4633, 4650, 4643, 4623, 4581, 4547, 4574, 4564, 4597, + 4596, + ], + [ + 4625, 4604, 4585, 4607, 4613, 4587, 4579, 4569, 4552, 4607, 4491, 4493, 4368, 4403, 4402, + 4391, 4411, 4430, 4400, 4407, 4565, 4464, 4482, 4460, 4608, 4616, 4491, 4565, 4564, 4594, + 4583, 4620, 4636, 4638, 4628, 4634, 4656, 4652, 4646, 4669, 4664, 4664, 4665, 4658, 4659, + 4650, 4638, 4638, 4634, 4638, 4645, 4654, 4657, 4677, 4667, 4677, 4678, 4652, 4656, 4703, + 4652, 4650, 4644, 4653, 4629, 4597, 4662, 4662, 4573, 4679, 4627, 4436, 4710, 4711, 4686, + 4612, 4622, 4676, 4676, 4676, 4635, 4645, 4693, 4630, 4657, 4733, 4765, 4704, 4712, 4745, + 4674, 4655, 4673, 4714, 4732, 4570, 4549, 4682, 4747, 4692, 4711, 4707, 4809, 4721, 4473, + 4738, 4757, 4766, 4788, 4785, 4782, 4783, 4768, 4768, 4777, 4784, 4789, 4807, 4784, 4788, + 4782, 4792, 4791, 4801, 4808, 4811, 4816, 4817, 4803, 4795, 4801, 4791, 4787, 4788, 4779, + 4780, 4804, 4795, 4794, 4798, 4790, 4781, 4772, 4753, 4747, 4747, 4747, 4769, 4778, 4782, + 4783, 4799, 4783, 4780, 4770, 4760, 4789, 4771, 4773, 4762, 4778, 4736, 4730, 4710, 4674, + 4697, 4704, 4730, 4755, 4756, 4763, 4769, 4723, 4723, 4737, 4740, 4761, 4742, 4727, 4681, + 4682, 4663, 4636, 4659, 4672, 4707, 4652, 4508, 4542, 4399, 4513, 4456, 4462, 4452, 4431, + 4441, 4452, 4467, 4458, 4434, 4479, 4480, 4500, 4497, 4484, 4502, 4491, 4476, 4505, 4516, + 4520, 4510, 4523, 4496, 4547, 4579, 4543, 4606, 4617, 4611, 4637, 4634, 4647, 4644, 4650, + 4626, 4617, 4641, 4642, 4635, 4636, 4661, 4668, 4615, 4580, 4569, 4572, 4631, 4587, 4631, + 4625, + ], + [ + 4575, 4572, 4590, 4590, 4621, 4572, 4592, 4564, 4556, 4597, 4528, 4461, 4422, 4400, 4390, + 4397, 4403, 4376, 4413, 4413, 4561, 4438, 4471, 4557, 4523, 4670, 4596, 4560, 4562, 4584, + 4611, 4627, 4643, 4654, 4635, 4634, 4658, 4672, 4677, 4696, 4684, 4681, 4670, 4662, 4678, + 4658, 4656, 4661, 4657, 4646, 4663, 4673, 4682, 4673, 4683, 4680, 4672, 4685, 4672, 4683, + 4681, 4681, 4666, 4629, 4639, 4681, 4635, 4681, 4691, 4677, 4658, 4683, 4590, 4633, 4632, + 4689, 4673, 4655, 4736, 4637, 4696, 4781, 4617, 4623, 4683, 4674, 4680, 4704, 4745, 4749, + 4703, 4668, 4686, 4806, 4728, 4768, 4818, 4892, 4664, 4899, 4779, 4689, 4725, 4753, 4767, + 4684, 4720, 4777, 4808, 4793, 4790, 4784, 4780, 4794, 4776, 4791, 4791, 4790, 4785, 4779, + 4782, 4784, 4799, 4803, 4810, 4823, 4812, 4804, 4807, 4805, 4790, 4779, 4786, 4787, 4783, + 4793, 4784, 4789, 4787, 4779, 4778, 4787, 4770, 4753, 4752, 4745, 4734, 4757, 4768, 4767, + 4776, 4784, 4773, 4783, 4790, 4785, 4812, 4801, 4787, 4801, 4790, 4766, 4740, 4710, 4710, + 4702, 4708, 4764, 4787, 4777, 4781, 4793, 4763, 4750, 4740, 4752, 4752, 4724, 4701, 4661, + 4674, 4665, 4670, 4672, 4685, 4631, 4626, 5255, 4466, 4543, 4515, 4465, 4491, 4459, 4442, + 4448, 4441, 4457, 4465, 4423, 4463, 4485, 4441, 4493, 4495, 4468, 4467, 4486, 4487, 4501, + 4515, 4490, 4506, 4485, 4484, 4553, 4552, 4574, 4622, 4640, 4657, 4638, 4666, 4645, 4632, + 4620, 4660, 4638, 4654, 4627, 4659, 4668, 4642, 4573, 4585, 4519, 4676, 4624, 4623, 4594, + 4575, + ], + [ + 4516, 4546, 4551, 4558, 4598, 4599, 4593, 4590, 4548, 4610, 4534, 4467, 4530, 4444, 4426, + 4401, 4401, 4458, 4484, 4399, 4524, 4380, 4460, 4500, 4536, 4569, 4516, 4534, 4569, 4619, + 4636, 4588, 4619, 4648, 4646, 4651, 4651, 4684, 4702, 4706, 4708, 4707, 4679, 4685, 4678, + 4664, 4676, 4674, 4681, 4682, 4695, 4697, 4695, 4682, 4689, 4704, 4710, 4678, 4705, 4690, + 4700, 4672, 4674, 4669, 4645, 4680, 4712, 4697, 4732, 4692, 4708, 4595, 4650, 4680, 4695, + 4773, 4747, 4685, 4508, 4573, 4638, 4353, 4669, 4601, 4488, 4667, 4672, 4728, 4712, 4724, + 4727, 4748, 4748, 4744, 4721, 4720, 4730, 4718, 5105, 4969, 4710, 4716, 4702, 4792, 4758, + 4713, 4779, 4572, 4789, 4787, 4799, 4804, 4800, 4781, 4789, 4790, 4791, 4773, 4781, 4765, + 4773, 4771, 4788, 4802, 4816, 4805, 4803, 4795, 4791, 4788, 4789, 4789, 4775, 4783, 4789, + 4789, 4783, 4780, 4772, 4770, 4764, 4778, 4765, 4761, 4737, 4720, 4735, 4735, 4730, 4740, + 4762, 4765, 4774, 4795, 4804, 4815, 4822, 4801, 4812, 4822, 4818, 4797, 4763, 4735, 4700, + 4709, 4707, 4820, 4801, 4793, 4749, 4846, 4792, 4795, 4824, 4780, 4740, 4760, 4681, 4708, + 4687, 4627, 4646, 4637, 4626, 4675, 4706, 4735, 4790, 4377, 4609, 4466, 4521, 4496, 4482, + 4444, 4479, 4482, 4447, 4476, 4489, 4495, 4510, 4470, 4476, 4475, 4461, 4502, 4495, 4465, + 4480, 4476, 4489, 4507, 4518, 4579, 4483, 4631, 4631, 4652, 4667, 4697, 4705, 4674, 4653, + 4642, 4663, 4671, 4636, 4570, 4522, 4704, 4733, 4614, 4600, 4533, 4163, 4768, 4594, 4627, + 4516, + ], + [ + 4548, 4563, 4579, 4581, 4522, 4588, 4593, 4566, 4545, 4543, 4501, 4517, 4485, 4470, 4458, + 4436, 4428, 4439, 4476, 4443, 4423, 4465, 4438, 4613, 4511, 4542, 4517, 4506, 4566, 4621, + 4622, 4616, 4598, 4599, 4638, 4654, 4651, 4670, 4714, 4698, 4716, 4715, 4703, 4699, 4690, + 4692, 4686, 4683, 4686, 4697, 4704, 4704, 4695, 4704, 4718, 4712, 4717, 4730, 4721, 4694, + 4697, 4697, 4685, 4658, 4690, 4689, 4694, 4710, 4745, 4719, 4693, 4698, 4706, 4713, 4751, + 4695, 4697, 4709, 4715, 4719, 4668, 4715, 4707, 4672, 4723, 4654, 4670, 4732, 4727, 4712, + 4705, 4781, 4826, 4725, 4713, 4725, 4650, 4773, 4770, 4807, 4751, 4722, 4728, 4750, 4753, + 4763, 4764, 4669, 4665, 4799, 4795, 4790, 4803, 4770, 4782, 4782, 4800, 4771, 4763, 4771, + 4763, 4778, 4787, 4785, 4799, 4798, 4784, 4779, 4777, 4779, 4777, 4779, 4783, 4777, 4789, + 4779, 4775, 4776, 4778, 4756, 4737, 4731, 4746, 4743, 4718, 4715, 4702, 4690, 4699, 4704, + 4709, 4738, 4759, 4764, 4774, 4783, 4800, 4821, 4859, 4834, 4840, 4833, 4791, 4741, 4754, + 4776, 4793, 4798, 4843, 4816, 4805, 4874, 4884, 4899, 4821, 4851, 4778, 4739, 4761, 4711, + 4655, 4587, 4588, 4637, 4661, 4798, 4748, 4621, 4157, 4986, 4876, 4612, 4555, 4523, 4498, + 4507, 4498, 4502, 4484, 4507, 4513, 4502, 4469, 4524, 4470, 4485, 4460, 4480, 4495, 4496, + 4448, 4479, 4551, 4478, 4524, 4522, 4571, 4559, 4652, 4655, 4672, 4716, 4730, 4735, 4704, + 4725, 4684, 4771, 4709, 4671, 4671, 4705, 4656, 4585, 4479, 4416, 4435, 4622, 4592, 4617, + 4548, + ], + [ + 4606, 4537, 4535, 4609, 4586, 4535, 4566, 4576, 4531, 4544, 4496, 4457, 4502, 4494, 4455, + 4471, 4439, 4481, 4430, 4454, 4482, 4440, 4516, 4615, 4503, 4549, 4543, 4448, 4554, 4469, + 4591, 4655, 4590, 4524, 4618, 4624, 4653, 4679, 4691, 4690, 4694, 4695, 4721, 4704, 4681, + 4689, 4695, 4697, 4685, 4700, 4699, 4703, 4708, 4716, 4714, 4734, 4726, 4746, 4723, 4714, + 4696, 4686, 4693, 4681, 4673, 4685, 4696, 4731, 4721, 4751, 4727, 4723, 4753, 4744, 4749, + 4728, 4715, 4736, 4751, 4704, 4722, 4724, 4696, 4690, 4776, 4666, 4715, 4708, 4741, 4729, + 4747, 4771, 4772, 4733, 4708, 4714, 4814, 4712, 4803, 4666, 4753, 4727, 4733, 4721, 4782, + 4748, 4727, 4707, 4761, 4757, 4776, 4777, 4784, 4782, 4778, 4787, 4770, 4774, 4759, 4763, + 4768, 4779, 4774, 4793, 4775, 4760, 4763, 4770, 4767, 4764, 4761, 4762, 4768, 4766, 4765, + 4763, 4755, 4745, 4752, 4746, 4722, 4700, 4704, 4711, 4707, 4680, 4677, 4671, 4662, 4673, + 4671, 4688, 4687, 4698, 4700, 4734, 4732, 4774, 4832, 4811, 4812, 4789, 4792, 4753, 4798, + 4784, 4768, 4752, 4779, 4746, 4852, 4839, 4917, 4936, 4779, 4906, 4818, 4661, 4510, 4595, + 4497, 4524, 4574, 4679, 4654, 4669, 4719, 4771, 4832, 5038, 4624, 4502, 4528, 4629, 4526, + 4530, 4532, 4551, 4545, 4544, 4487, 4484, 4505, 4497, 4498, 4497, 4464, 4455, 4479, 4473, + 4473, 4488, 4442, 4537, 4545, 4491, 4558, 4591, 4636, 4654, 4696, 4719, 4737, 4715, 4748, + 4679, 4776, 4838, 4695, 4587, 4815, 4672, 4694, 4631, 4532, 4539, 4446, 4447, 4546, 4513, + 4606, + ], + [ + 4530, 4381, 4595, 4498, 4556, 4624, 4633, 4495, 4578, 4665, 4529, 4515, 4509, 4500, 4476, + 4495, 4504, 4478, 4471, 4440, 4431, 4499, 4503, 4575, 4402, 4487, 4547, 4347, 4569, 4577, + 4569, 4576, 4590, 4545, 4606, 4633, 4641, 4656, 4647, 4673, 4648, 4667, 4680, 4675, 4689, + 4683, 4685, 4684, 4678, 4672, 4697, 4680, 4690, 4717, 4716, 4703, 4718, 4721, 4717, 4699, + 4678, 4692, 4675, 4678, 4683, 4695, 4718, 4708, 4728, 4698, 4700, 4723, 4733, 4733, 4694, + 4702, 4686, 4733, 4734, 4694, 4758, 4772, 4696, 4711, 4713, 4723, 4636, 4699, 4675, 4666, + 4742, 4765, 4711, 4673, 4719, 4731, 4685, 4741, 4716, 4711, 4747, 4793, 4761, 4732, 4746, + 4734, 4716, 4726, 4730, 4724, 4726, 4735, 4699, 4770, 4778, 4776, 4767, 4774, 4758, 4757, + 4771, 4766, 4770, 4758, 4743, 4739, 4725, 4736, 4750, 4753, 4747, 4755, 4739, 4736, 4720, + 4718, 4714, 4707, 4696, 4708, 4683, 4668, 4669, 4654, 4643, 4639, 4625, 4611, 4616, 4599, + 4606, 4621, 4612, 4605, 4610, 4608, 4645, 4670, 4712, 4718, 4720, 4737, 4755, 4779, 4757, + 4739, 4735, 4725, 4720, 4794, 4709, 4877, 4817, 4959, 4720, 4715, 4683, 4455, 4692, 4569, + 4580, 4635, 4672, 4652, 4815, 4763, 4790, 4743, 4609, 4838, 4870, 4911, 4756, 4651, 4704, + 4602, 4575, 4574, 4566, 4555, 4542, 4519, 4521, 4520, 4499, 4509, 4511, 4438, 4432, 4465, + 4477, 4521, 4465, 4462, 4436, 4531, 4542, 4585, 4579, 4615, 4612, 4697, 4699, 4642, 4641, + 4701, 4730, 4710, 4711, 4770, 4725, 4795, 4765, 4851, 4742, 4766, 4763, 4619, 4581, 4599, + 4530, + ], + [ + 4578, 4481, 4626, 4532, 4438, 4508, 4570, 4574, 4450, 4557, 4558, 4492, 4490, 4507, 4501, + 4489, 4496, 4491, 4511, 4491, 4460, 4459, 4514, 4407, 4506, 4471, 4482, 4528, 4521, 4562, + 4589, 4550, 4688, 4462, 4523, 4573, 4616, 4625, 4620, 4643, 4640, 4652, 4643, 4650, 4678, + 4666, 4676, 4669, 4680, 4672, 4660, 4654, 4674, 4685, 4695, 4688, 4700, 4681, 4687, 4685, + 4668, 4657, 4672, 4646, 4640, 4672, 4702, 4671, 4694, 4707, 4724, 4722, 4700, 4685, 4662, + 4626, 4649, 4658, 4662, 4707, 4743, 4715, 4709, 4689, 4616, 4589, 4633, 4594, 4638, 4671, + 4671, 4690, 4679, 4697, 4664, 4730, 4761, 4653, 4660, 4733, 4747, 4770, 4747, 4735, 4702, + 4712, 4732, 4732, 4708, 4696, 4717, 4559, 4667, 4724, 4754, 4753, 4762, 4749, 4753, 4749, + 4764, 4734, 4740, 4729, 4716, 4701, 4706, 4717, 4717, 4725, 4732, 4734, 4722, 4705, 4687, + 4680, 4669, 4663, 4644, 4651, 4650, 4638, 4620, 4619, 4603, 4577, 4564, 4572, 4565, 4548, + 4551, 4549, 4550, 4545, 4539, 4515, 4541, 4550, 4582, 4605, 4630, 4638, 4699, 4681, 4656, + 4702, 4716, 4705, 4643, 4636, 4562, 4867, 4774, 4867, 4886, 4875, 4321, 4678, 4770, 4558, + 4664, 4590, 4632, 4566, 4844, 4515, 4475, 4757, 4533, 4743, 4833, 4873, 5253, 5295, 4564, + 4743, 4689, 4615, 4667, 4590, 4570, 4534, 4502, 4524, 4533, 4505, 4527, 4510, 4451, 4495, + 4426, 4511, 4512, 4425, 4378, 4462, 4480, 4513, 4524, 4523, 4548, 4590, 4593, 4617, 4606, + 4629, 4649, 4710, 4733, 4712, 4712, 4651, 4648, 4662, 4625, 4727, 4816, 4827, 4838, 4646, + 4578, + ], + [ + 4647, 4579, 4498, 4537, 4467, 4548, 4558, 4521, 4775, 4564, 4522, 4520, 4504, 4511, 4518, + 4492, 4489, 4537, 4487, 4497, 4448, 4496, 4503, 4586, 4486, 4532, 4535, 4537, 4541, 4552, + 4530, 4578, 4526, 4536, 4517, 4530, 4576, 4588, 4611, 4598, 4609, 4612, 4620, 4633, 4644, + 4633, 4638, 4676, 4657, 4628, 4627, 4610, 4611, 4624, 4640, 4657, 4632, 4651, 4640, 4616, + 4632, 4611, 4603, 4604, 4588, 4600, 4610, 4627, 4642, 4662, 4668, 4673, 4630, 4586, 4600, + 4601, 4576, 4595, 4626, 4652, 4666, 4677, 4671, 4584, 4490, 4452, 4529, 4519, 4534, 4537, + 4590, 4616, 4602, 4602, 4604, 4662, 4729, 4496, 4659, 4698, 4703, 4699, 4721, 4697, 4700, + 4706, 4688, 4701, 4702, 4670, 4639, 4673, 4524, 4678, 4692, 4729, 4720, 4722, 4744, 4713, + 4549, 4718, 4697, 4686, 4672, 4664, 4672, 4680, 4679, 4674, 4686, 4682, 4684, 4675, 4638, + 4621, 4616, 4604, 4613, 4546, 4625, 4610, 4571, 4556, 4558, 4524, 4511, 4498, 4497, 4498, + 4487, 4492, 4482, 4486, 4478, 4470, 4446, 4417, 4444, 4459, 4500, 4517, 4567, 4512, 4501, + 4497, 4577, 4569, 4573, 4428, 4425, 4506, 4528, 4772, 4863, 4635, 4509, 4806, 4757, 4669, + 4592, 4565, 4671, 4711, 4654, 4683, 4325, 4506, 4531, 4428, 4766, 4604, 5023, 5166, 5223, + 4511, 4555, 4800, 4704, 4629, 4600, 4531, 4532, 4584, 4530, 4515, 4491, 4481, 4478, 4473, + 4486, 4460, 4500, 4446, 4369, 4425, 4451, 4447, 4451, 4459, 4459, 4483, 4498, 4503, 4487, + 4514, 4511, 4569, 4564, 4644, 4676, 4548, 4576, 4539, 4611, 4588, 4781, 4917, 4856, 4735, + 4647, + ], + [ + 4590, 4431, 4259, 4379, 4439, 4544, 4525, 4413, 4761, 4517, 4523, 4504, 4527, 4473, 4473, + 4478, 4486, 4504, 4507, 4484, 4604, 4557, 4456, 4452, 4458, 4404, 4548, 4521, 4563, 4486, + 4613, 4531, 4462, 4346, 4393, 4469, 4521, 4541, 4519, 4558, 4597, 4584, 4564, 4585, 4598, + 4605, 4604, 4600, 4603, 4572, 4571, 4564, 4561, 4552, 4547, 4579, 4576, 4577, 4552, 4539, + 4518, 4519, 4510, 4505, 4511, 4548, 4592, 4579, 4633, 4585, 4583, 4633, 4539, 4496, 4436, + 4459, 4455, 4357, 4389, 4475, 4527, 4625, 4538, 4496, 4500, 4474, 4463, 4443, 4477, 4484, + 4489, 4466, 4492, 4498, 4507, 4523, 4620, 4517, 4641, 4615, 4621, 4625, 4636, 4635, 4671, + 4634, 4646, 4669, 4639, 4625, 4592, 4569, 4538, 4561, 4584, 4629, 4643, 4640, 4668, 4470, + 4673, 4648, 4642, 4617, 4617, 4613, 4601, 4631, 4628, 4635, 4620, 4614, 4613, 4610, 4585, + 4569, 4551, 4559, 4541, 4546, 4457, 4537, 4519, 4527, 4515, 4477, 4452, 4433, 4415, 4409, + 4401, 4417, 4401, 4410, 4394, 4404, 4388, 4365, 4351, 4367, 4393, 4400, 4404, 4374, 4343, + 4400, 4442, 4409, 4401, 4406, 4413, 4369, 4326, 4188, 4324, 4401, 4419, 4686, 4662, 4582, + 4785, 4345, 4517, 4346, 4352, 4843, 4471, 4388, 4460, 4420, 4426, 4381, 4646, 5207, 5098, + 5278, 4975, 4599, 4605, 4654, 4545, 4537, 4524, 4537, 4549, 4495, 4454, 4472, 4457, 4425, + 4495, 4467, 4426, 4388, 4366, 4348, 4374, 4382, 4388, 4385, 4396, 4386, 4379, 4365, 4437, + 4424, 4432, 4390, 4433, 4420, 4455, 4461, 4479, 4312, 4328, 4449, 4148, 4800, 4823, 4594, + 4590, + ], + [ + 4185, 4260, 4226, 4293, 4371, 4360, 4422, 4347, 4500, 4610, 4507, 4504, 4430, 4474, 4465, + 4448, 4481, 4464, 4537, 4504, 4515, 4534, 4437, 4471, 4406, 4465, 4523, 4529, 4566, 4464, + 4572, 4537, 4316, 4390, 4373, 4370, 4394, 4454, 4433, 4477, 4507, 4531, 4534, 4513, 4527, + 4521, 4530, 4521, 4510, 4508, 4501, 4492, 4475, 4462, 4479, 4493, 4472, 4495, 4489, 4424, + 4397, 4374, 4370, 4313, 4442, 4503, 4487, 4496, 4540, 4577, 4547, 4539, 4460, 4416, 4283, + 4218, 4172, 4245, 4343, 4338, 4364, 4583, 4510, 4474, 4488, 4438, 4355, 4345, 4385, 4384, + 4377, 4423, 4394, 4397, 4422, 4420, 4477, 4457, 4442, 4464, 4481, 4537, 4569, 4566, 4590, + 4593, 4593, 4611, 4596, 4578, 4502, 4470, 4492, 4419, 4490, 4532, 4533, 4562, 4551, 4576, + 4549, 4575, 4577, 4529, 4531, 4522, 4505, 4527, 4556, 4561, 4549, 4535, 4536, 4517, 4501, + 4521, 4495, 4484, 4466, 4463, 4472, 4458, 4482, 4465, 4449, 4420, 4386, 4371, 4347, 4311, + 4319, 4307, 4334, 4315, 4301, 4304, 4293, 4283, 4315, 4315, 4271, 4292, 4264, 4257, 4223, + 4266, 4292, 4326, 4310, 4296, 4302, 4290, 4164, 4129, 4069, 4110, 4221, 4237, 4235, 4357, + 4686, 4267, 4205, 4211, 4220, 3663, 4412, 4346, 4441, 4506, 4362, 4432, 4420, 4782, 4850, + 5272, 5011, 4736, 4652, 4711, 4623, 4560, 4532, 4530, 4513, 4449, 4435, 4442, 4380, 4374, + 4467, 4459, 4497, 4346, 4326, 4306, 4285, 4292, 4297, 4324, 4330, 4302, 4319, 4303, 4310, + 4331, 4320, 4282, 4287, 4291, 4312, 4369, 4330, 4442, 4369, 4362, 4244, 4378, 4217, 4442, + 4185, + ], + [ + 4154, 4274, 4081, 4145, 4226, 4244, 4322, 4326, 4276, 4622, 4479, 4413, 4431, 4409, 4414, + 4430, 4434, 4469, 4501, 4568, 4518, 4500, 4514, 4348, 4398, 4439, 4470, 4511, 4529, 4463, + 4489, 4535, 4521, 4265, 4348, 4277, 4289, 4285, 4323, 4380, 4330, 4400, 4445, 4398, 4401, + 4408, 4421, 4410, 4428, 4420, 4389, 4386, 4385, 4387, 4389, 4371, 4363, 4350, 4326, 4302, + 4259, 4242, 4207, 4177, 4242, 4382, 4337, 4411, 4337, 4499, 4429, 4450, 4300, 4266, 4070, + 3993, 4016, 4154, 4391, 4339, 4363, 4469, 4458, 4429, 4439, 4384, 4301, 4250, 4278, 4305, + 4299, 4317, 4339, 4294, 4322, 4270, 4377, 4284, 4308, 4259, 4338, 4396, 4425, 4463, 4460, + 4481, 4461, 4487, 4482, 4507, 4427, 4356, 4432, 4447, 4390, 4400, 4395, 4402, 4457, 4496, + 4453, 4464, 4478, 4461, 4442, 4446, 4409, 4428, 4444, 4441, 4439, 4462, 4440, 4421, 4385, + 4405, 4414, 4412, 4411, 4405, 4399, 4394, 4386, 4382, 4354, 4338, 4308, 4293, 4263, 4222, + 4223, 4226, 4229, 4221, 4226, 4204, 4215, 4224, 4228, 4208, 4187, 4158, 4177, 4156, 4093, + 4097, 4108, 4115, 4123, 4121, 4217, 4098, 4142, 3977, 4014, 3907, 3868, 3866, 3599, 3842, + 4231, 4025, 3421, 4060, 4073, 3291, 3862, 3975, 4341, 3995, 4272, 4449, 4306, 4469, 4689, + 5257, 5180, 4718, 4647, 4662, 4636, 4577, 4502, 4480, 4469, 4439, 4412, 4392, 4361, 4322, + 4417, 4442, 4362, 4085, 4269, 4263, 4247, 4213, 4200, 4213, 4251, 4256, 4226, 4238, 4196, + 4223, 4215, 4177, 4165, 4172, 4106, 4150, 4166, 4150, 4188, 4226, 4464, 4156, 4354, 4196, + 4154, + ], + [ + 4135, 4274, 4221, 4279, 4255, 4202, 4274, 4258, 4246, 4361, 4345, 4446, 4313, 4378, 4379, + 4342, 4357, 4388, 4364, 4489, 4361, 4370, 4407, 4428, 4301, 4380, 4379, 4411, 4462, 4504, + 4461, 4412, 4120, 4223, 4217, 4177, 4242, 4233, 4178, 4178, 4208, 4251, 4211, 4280, 4264, + 4258, 4282, 4285, 4304, 4292, 4236, 4244, 4220, 4237, 4231, 4234, 4189, 4188, 4195, 4114, + 4053, 4056, 4020, 4058, 4244, 4288, 4202, 4245, 4242, 4170, 4086, 4280, 4279, 4143, 4021, + 3986, 4167, 4457, 4434, 4406, 4293, 4303, 4383, 4337, 4366, 4325, 4263, 4110, 4077, 4086, + 4158, 4232, 4223, 4222, 4127, 4141, 4110, 4053, 4099, 4087, 4163, 4048, 4110, 4174, 4165, + 4249, 4224, 4249, 4312, 4273, 4329, 4182, 4260, 4290, 4291, 4284, 4217, 4181, 4331, 4384, + 4221, 4220, 4256, 4323, 4345, 4303, 4268, 4242, 4291, 4299, 4325, 4302, 4287, 4314, 4295, + 4314, 4319, 4301, 4308, 4297, 4293, 4289, 4265, 4265, 4262, 4251, 4214, 4180, 4158, 4131, + 4114, 4115, 4109, 4132, 4121, 4139, 4111, 4142, 4113, 4122, 4082, 4058, 4015, 3979, 3990, + 3980, 3955, 3969, 3981, 4029, 4102, 4023, 3970, 3930, 3833, 3845, 3650, 3824, 3675, 3678, + 3777, 3894, 4092, 3898, 3248, 3259, 3638, 3769, 3947, 4038, 4292, 4478, 3983, 3627, 4969, + 5255, 5192, 4694, 4664, 4659, 4601, 4571, 4504, 4403, 4409, 4413, 4378, 4334, 4356, 4359, + 4247, 4360, 4002, 4201, 4237, 4225, 4183, 4168, 4171, 4188, 4194, 4205, 4187, 4202, 4156, + 4131, 4115, 4075, 4074, 4046, 3998, 3978, 4031, 4019, 4030, 4038, 3998, 4107, 4039, 4092, + 4135, + ], + [ + 4106, 3922, 4288, 4300, 4229, 4146, 4240, 4223, 4207, 4242, 4382, 4295, 4345, 4322, 4339, + 4295, 4275, 4261, 4343, 4242, 4261, 4228, 4291, 4301, 4215, 4224, 4304, 4345, 4337, 4362, + 4468, 4239, 4048, 4101, 4083, 4126, 4146, 4137, 4132, 4102, 4111, 4153, 4124, 4085, 4087, + 4100, 4160, 4107, 4124, 4122, 4133, 4080, 4098, 4104, 4114, 4100, 4027, 4023, 3963, 3878, + 3881, 3810, 3871, 3952, 4073, 4092, 4028, 3944, 4125, 4043, 4076, 3864, 4022, 4080, 3935, + 3871, 3894, 4251, 4350, 4401, 4181, 4196, 4194, 4197, 4189, 4228, 4076, 4027, 3972, 3957, + 4004, 4031, 4043, 4127, 3932, 4013, 3974, 3865, 3938, 3910, 3990, 4102, 3781, 3876, 3965, + 3964, 4003, 4038, 4079, 4085, 4074, 4039, 4084, 3980, 4060, 4027, 3991, 4010, 4118, 4074, + 4076, 4014, 4085, 4148, 4094, 4133, 4106, 4127, 4108, 4180, 4131, 4144, 4128, 4148, 4139, + 4157, 4188, 4191, 4169, 4184, 4193, 4197, 4187, 4184, 4197, 4165, 4128, 4102, 4062, 4043, + 4039, 4038, 3999, 4022, 4029, 4001, 4019, 4033, 4005, 4008, 4008, 3957, 3913, 3851, 3840, + 3853, 3875, 3826, 3832, 3945, 3980, 3952, 3849, 3831, 3801, 3739, 3596, 3542, 3678, 3752, + 3769, 3724, 3708, 3899, 3248, 3269, 3804, 3845, 3894, 4196, 4232, 3435, 3846, 4220, 4950, + 4951, 4989, 4740, 4617, 4642, 4578, 4522, 4484, 4371, 4414, 4359, 4340, 4319, 4269, 4086, + 4263, 4220, 4200, 4135, 4178, 4169, 4146, 4118, 4117, 4109, 4102, 4120, 4113, 4107, 4111, + 4100, 4072, 4023, 3995, 4007, 3949, 3908, 3917, 3974, 3987, 3923, 3813, 3853, 3768, 3929, + 4106, + ], + [ + 3762, 3951, 4202, 4289, 4400, 4197, 4210, 4187, 4184, 4217, 4310, 4169, 4275, 4247, 4292, + 4253, 4237, 4177, 4183, 4179, 4123, 4138, 4102, 4075, 4080, 4137, 4111, 4134, 4159, 4223, + 4108, 4004, 3998, 3968, 3962, 3984, 4017, 4020, 4021, 4000, 3993, 4054, 3961, 3966, 3941, + 3999, 4043, 3985, 3993, 3986, 4009, 3996, 3959, 3954, 4007, 3984, 3893, 3867, 3853, 3698, + 3715, 3642, 3725, 3756, 3881, 3923, 3819, 3651, 3725, 3793, 3837, 3703, 3717, 3901, 3785, + 3734, 3851, 4107, 4234, 4154, 4053, 4025, 4006, 4070, 4050, 4022, 3906, 3916, 3913, 3860, + 3768, 3882, 3952, 3938, 3844, 3872, 3809, 3749, 3769, 3731, 3874, 3824, 3483, 3638, 3750, + 3767, 3757, 3846, 3874, 3926, 3890, 3826, 3799, 3767, 3824, 3838, 3754, 3785, 3809, 3826, + 3905, 3834, 3767, 3895, 3808, 3911, 3918, 3950, 3991, 3931, 3925, 3883, 3851, 3898, 3960, + 3978, 4026, 4044, 4029, 4063, 4097, 4096, 4093, 4049, 4111, 4095, 4053, 3998, 3971, 3950, + 3949, 3949, 3910, 3877, 3895, 3896, 3906, 3908, 3931, 3892, 3878, 3868, 3788, 3731, 3755, + 3739, 3734, 3709, 3669, 3708, 3831, 3866, 3782, 3779, 3745, 3662, 3596, 3528, 3525, 3658, + 3842, 3858, 3069, 3096, 3290, 3596, 3634, 3680, 3735, 3799, 3872, 3428, 3723, 4420, 4454, + 5574, 4845, 4747, 4649, 4654, 4500, 4478, 4405, 4359, 4335, 4263, 4325, 4208, 4139, 4148, + 4113, 4197, 4138, 4130, 4068, 4050, 4082, 4067, 4000, 3989, 4018, 4032, 4027, 3987, 4016, + 4035, 4039, 3953, 3947, 3916, 3906, 3839, 3804, 3845, 3858, 3857, 3660, 3722, 3690, 3682, + 3762, + ], + [ + 3589, 3664, 3721, 4187, 4282, 4319, 4137, 4201, 4114, 4097, 4032, 3921, 4155, 4084, 4114, + 4218, 4133, 4163, 4162, 4162, 4193, 3983, 3958, 3999, 3947, 3997, 3956, 3915, 3919, 3935, + 3997, 3919, 3910, 3911, 3868, 3881, 3948, 3968, 3872, 3839, 3861, 3817, 3894, 3867, 3870, + 3851, 3851, 3944, 3889, 3865, 3810, 3845, 3901, 3814, 3756, 3706, 3608, 3653, 3694, 3690, + 3600, 3585, 3570, 3523, 3482, 3343, 3558, 3585, 3602, 3505, 3187, 3289, 3156, 3340, 3330, + 3504, 3435, 3517, 3961, 3719, 4002, 3977, 4009, 4060, 3983, 3877, 3849, 3718, 3640, 3527, + 3664, 3732, 3716, 3728, 3729, 3754, 3651, 3632, 3619, 3693, 3685, 3704, 3530, 3422, 3558, + 3610, 3545, 3667, 3661, 3630, 3641, 3466, 3483, 3386, 3544, 3463, 3475, 3505, 3533, 3576, + 3519, 3499, 3442, 3614, 3521, 3552, 3664, 3670, 3706, 3657, 3646, 3620, 3639, 3702, 3756, + 3806, 3811, 3824, 3892, 3913, 3916, 3898, 3947, 3920, 3968, 3938, 3899, 3863, 3780, 3829, + 3828, 3773, 3775, 3732, 3729, 3801, 3771, 3817, 3838, 3869, 3808, 3756, 3685, 3679, 3664, + 3615, 3644, 3551, 3633, 3569, 3574, 3631, 3667, 3676, 3625, 3600, 3597, 3487, 3561, 3458, + 3556, 3087, 3095, 3302, 2863, 3156, 3458, 3508, 3568, 3439, 3560, 3608, 3805, 3953, 5138, + 4754, 4476, 4744, 4611, 4561, 4464, 4418, 4405, 4319, 4255, 4259, 4222, 4151, 4161, 4069, + 4048, 4081, 4091, 4067, 4032, 4017, 3974, 3997, 3927, 3933, 3932, 3950, 3943, 3852, 3855, + 3891, 3906, 3881, 3875, 3852, 3869, 3830, 3816, 3827, 3710, 3747, 3749, 3754, 3756, 3740, + 3589, + ], + [ + 3504, 3379, 3532, 3786, 4101, 4076, 4129, 4161, 3998, 4062, 3961, 3727, 3987, 3984, 4062, + 4099, 4098, 4110, 4172, 4170, 4263, 3912, 3888, 3861, 3737, 3791, 3854, 3755, 3761, 3743, + 3760, 3808, 3802, 3819, 3859, 3818, 3829, 3802, 3749, 3674, 3699, 3656, 3683, 3729, 3714, + 3732, 3733, 3751, 3768, 3695, 3676, 3671, 3647, 3653, 3606, 3584, 3535, 3471, 3421, 3371, + 3417, 3284, 3390, 3370, 3245, 3229, 3330, 3346, 3312, 3171, 2950, 3098, 3057, 3022, 3015, + 3227, 3208, 3095, 3443, 3531, 3618, 3742, 3746, 3752, 3789, 3705, 3633, 3615, 3323, 3361, + 3496, 3625, 3667, 3636, 3583, 3607, 3655, 3530, 3542, 3559, 3697, 3781, 3387, 3238, 3396, + 3475, 3384, 3401, 3435, 3384, 3387, 3303, 3276, 3245, 3265, 3265, 3214, 3249, 3320, 3268, + 3311, 3241, 3292, 3326, 3212, 3197, 3258, 3349, 3428, 3362, 3436, 3372, 3368, 3456, 3525, + 3598, 3616, 3617, 3591, 3661, 3686, 3687, 3734, 3814, 3788, 3840, 3800, 3768, 3736, 3704, + 3693, 3674, 3681, 3623, 3636, 3639, 3639, 3656, 3668, 3688, 3736, 3700, 3634, 3517, 3499, + 3509, 3511, 3466, 3474, 3448, 3458, 3473, 3411, 3487, 3478, 3322, 3354, 3381, 3247, 3143, + 3225, 2905, 2916, 3105, 2853, 2809, 2946, 3332, 3397, 3474, 3523, 3779, 3532, 3458, 4426, + 4455, 4547, 4578, 4550, 4466, 4403, 4339, 4288, 4252, 4198, 4098, 4185, 4038, 4095, 4014, + 4025, 3979, 3973, 3979, 3954, 3896, 3882, 3827, 3833, 3792, 3752, 3787, 3750, 3745, 3701, + 3657, 3663, 3704, 3649, 3646, 3692, 3660, 3618, 3655, 3717, 3614, 3610, 3638, 3667, 3669, + 3504, + ], + [ + 3346, 3252, 3251, 3395, 3524, 3691, 3855, 3772, 3635, 3856, 3753, 3563, 3692, 3843, 3861, + 3936, 3974, 3978, 4087, 4139, 4141, 3725, 3703, 3686, 3692, 3709, 3710, 3764, 3713, 3671, + 3673, 3696, 3740, 3732, 3719, 3692, 3639, 3613, 3561, 3499, 3478, 3554, 3526, 3602, 3583, + 3584, 3580, 3546, 3548, 3602, 3574, 3591, 3502, 3380, 3365, 3237, 3183, 3215, 3030, 3086, + 3148, 3074, 3105, 3070, 3041, 3045, 3067, 3041, 3011, 2936, 2969, 2791, 2942, 2813, 2861, + 2890, 2870, 2935, 3161, 3433, 3391, 3481, 3691, 3535, 3502, 3477, 3405, 3320, 3431, 3420, + 3383, 3599, 3653, 3621, 3623, 3524, 3433, 3507, 3498, 3497, 3533, 3579, 3377, 3111, 3178, + 3164, 3224, 3193, 3229, 3195, 3155, 3070, 2973, 3051, 3042, 2969, 3035, 2993, 2987, 3134, + 2992, 2933, 2964, 3075, 2996, 3074, 2974, 3129, 3118, 3157, 3231, 3140, 3154, 3275, 3255, + 3323, 3339, 3401, 3399, 3487, 3461, 3447, 3508, 3570, 3607, 3542, 3569, 3574, 3591, 3572, + 3591, 3427, 3393, 3423, 3473, 3512, 3474, 3459, 3456, 3493, 3498, 3522, 3415, 3405, 3356, + 3353, 3378, 3260, 3330, 3330, 3320, 3284, 3294, 3294, 3328, 3189, 3173, 3167, 3157, 3070, + 2938, 2852, 2843, 2900, 2712, 2873, 2685, 3154, 3224, 3306, 3688, 3219, 3371, 3396, 4521, + 4365, 4545, 4318, 4421, 4362, 4313, 4254, 4239, 4166, 4109, 4099, 4256, 3865, 3849, 3971, + 3926, 3883, 3823, 3844, 3814, 3793, 3679, 3657, 3678, 3598, 3547, 3559, 3547, 3479, 3489, + 3488, 3450, 3470, 3447, 3415, 3423, 3494, 3481, 3452, 3476, 3526, 3505, 3461, 3519, 3422, + 3346, + ], + [ + 3245, 3225, 3112, 3075, 3107, 3192, 3268, 3224, 3437, 3469, 3452, 3378, 3545, 3711, 3682, + 3611, 3775, 3983, 3967, 4027, 3542, 3702, 3766, 3473, 3546, 3579, 3582, 3627, 3593, 3596, + 3541, 3585, 3596, 3634, 3561, 3545, 3474, 3382, 3350, 3266, 3326, 3271, 3339, 3409, 3435, + 3436, 3347, 3358, 3473, 3364, 3268, 3256, 3248, 3203, 3172, 2978, 2932, 2948, 2891, 2772, + 2827, 2814, 2795, 2820, 2889, 2900, 2764, 2732, 2634, 2739, 2723, 2647, 2764, 2681, 2673, + 2669, 2568, 2532, 3013, 3322, 3351, 3305, 3358, 3322, 3368, 3198, 3225, 3038, 3274, 3274, + 3393, 3519, 3649, 3498, 3438, 3456, 3439, 3481, 3403, 3529, 3612, 3462, 2799, 3023, 3021, + 3021, 3027, 3000, 3012, 2974, 2906, 2868, 2808, 2776, 2758, 2772, 2753, 2841, 2788, 2779, + 2806, 2770, 2785, 2751, 2736, 2751, 2846, 2902, 2864, 2898, 2849, 2828, 2882, 2928, 3005, + 3010, 2938, 3029, 3117, 3106, 3165, 3149, 3148, 3172, 3132, 3209, 3191, 3177, 3256, 3283, + 3293, 3188, 3186, 3165, 3099, 3182, 3216, 3129, 3239, 3244, 3218, 3220, 3196, 3137, 3180, + 3101, 3103, 3138, 3124, 3112, 3114, 3128, 3148, 3080, 3086, 3026, 3043, 3108, 2978, 3040, + 2970, 2844, 2933, 2645, 2665, 2709, 2618, 2680, 2952, 2690, 3284, 2973, 3210, 3987, 4336, + 4007, 4397, 4257, 4216, 4236, 4165, 4157, 4122, 4073, 4003, 3990, 3765, 3688, 3759, 3760, + 3753, 3715, 3639, 3646, 3646, 3577, 3536, 3460, 3387, 3380, 3252, 3253, 3258, 3242, 3228, + 3190, 3197, 3226, 3181, 3184, 3240, 3291, 3291, 3314, 3285, 3321, 3342, 3359, 3325, 3272, + 3245, + ], + [ + 3007, 2895, 2898, 2872, 2800, 2878, 2897, 2929, 2881, 2871, 2999, 3085, 3062, 3251, 3722, + 3785, 3811, 3816, 3682, 3300, 3478, 3446, 3516, 3365, 3334, 3427, 3447, 3448, 3473, 3449, + 3387, 3445, 3477, 3465, 3387, 3374, 3357, 3322, 3251, 3185, 3177, 3261, 3215, 3236, 3227, + 3188, 3179, 3124, 3191, 3143, 3035, 3010, 2945, 2986, 2911, 2921, 2855, 2767, 2638, 2649, + 2675, 2699, 2672, 2670, 2649, 2588, 2568, 2606, 2469, 2507, 2429, 2403, 2349, 2397, 2355, + 2392, 2292, 2319, 2676, 3035, 3010, 2974, 3022, 2607, 2737, 2806, 2802, 2865, 2918, 2820, + 3199, 3339, 3489, 3383, 3290, 3293, 3363, 3286, 3265, 3425, 3392, 3317, 2873, 2912, 2938, + 2891, 2865, 2898, 2824, 2747, 2755, 2659, 2612, 2593, 2623, 2667, 2644, 2625, 2626, 2637, + 2633, 2596, 2579, 2639, 2651, 2609, 2657, 2692, 2730, 2675, 2639, 2603, 2636, 2764, 2796, + 2841, 2765, 2763, 2634, 2699, 2756, 2801, 2787, 2869, 2825, 2873, 2893, 2933, 2912, 2895, + 2999, 3051, 2883, 2835, 2793, 2798, 2792, 2801, 2966, 2897, 2880, 2966, 2854, 2813, 2766, + 2848, 2865, 2856, 2841, 2897, 2843, 2904, 2879, 2874, 2937, 2802, 2797, 2832, 2708, 2759, + 2826, 2649, 2721, 2607, 2664, 2757, 2616, 2426, 2918, 2946, 3131, 3076, 2821, 3613, 4080, + 4062, 4132, 4144, 4073, 4109, 4041, 3994, 3975, 3874, 3829, 3544, 3551, 3514, 3615, 3555, + 3468, 3491, 3472, 3366, 3420, 3324, 3357, 3284, 3183, 3196, 3146, 3169, 3185, 3036, 3054, + 3017, 2990, 3000, 2971, 2975, 2993, 2946, 3011, 3006, 3069, 3108, 3147, 3085, 3014, 2964, + 3007, + ], + [ + 2791, 2755, 2720, 2644, 2611, 2571, 2652, 2566, 2541, 2564, 2594, 2676, 2763, 2966, 2841, + 3018, 2990, 2994, 2905, 2994, 3143, 3209, 3270, 3239, 3234, 3314, 3296, 3212, 3223, 3245, + 3211, 3260, 3234, 3189, 3254, 3220, 3229, 3267, 3154, 3147, 3139, 3138, 3057, 2996, 3005, + 3039, 2981, 3008, 2971, 2877, 2932, 2906, 2887, 2750, 2822, 2672, 2695, 2699, 2607, 2587, + 2493, 2465, 2514, 2497, 2485, 2427, 2413, 2403, 2300, 2357, 2267, 2229, 2201, 2115, 2102, + 2127, 2182, 2131, 2260, 2710, 2329, 2405, 2433, 2490, 2524, 2595, 2595, 2646, 2712, 2637, + 2609, 2638, 2569, 3268, 3127, 3122, 3265, 3294, 3163, 3340, 3322, 2763, 2720, 2745, 2805, + 2784, 2768, 2742, 2601, 2578, 2543, 2572, 2482, 2451, 2491, 2535, 2448, 2484, 2453, 2436, + 2504, 2523, 2453, 2462, 2445, 2402, 2494, 2461, 2475, 2492, 2349, 2379, 2404, 2538, 2551, + 2571, 2536, 2525, 2485, 2412, 2506, 2553, 2594, 2624, 2563, 2572, 2575, 2577, 2565, 2592, + 2713, 2695, 2618, 2561, 2567, 2549, 2576, 2524, 2503, 2575, 2560, 2566, 2607, 2454, 2474, + 2515, 2574, 2531, 2567, 2646, 2637, 2750, 2737, 2693, 2712, 2619, 2555, 2588, 2513, 2572, + 2600, 2401, 2478, 2430, 2389, 2521, 2438, 2369, 2797, 2653, 2784, 2650, 2856, 3546, 4120, + 3720, 4138, 4063, 3896, 3943, 3899, 3839, 3803, 3763, 3488, 3465, 3409, 3370, 3381, 3309, + 3227, 3213, 3250, 3122, 3130, 3105, 3047, 3026, 2979, 3024, 2943, 2918, 2913, 2841, 2852, + 2892, 2796, 2738, 2757, 2756, 2756, 2730, 2684, 2806, 2804, 2858, 2905, 2921, 2859, 2811, + 2791, + ], + [ + 2672, 2630, 2647, 2582, 2518, 2478, 2452, 2401, 2289, 2352, 2404, 2451, 2477, 2548, 2550, + 2667, 2715, 2830, 2853, 2857, 3004, 2992, 3010, 3118, 3111, 3147, 3112, 3014, 3053, 2956, + 2932, 2976, 2907, 2889, 2961, 2918, 2893, 2934, 2967, 2948, 3023, 2971, 2967, 2940, 2886, + 2772, 2857, 2724, 2782, 2728, 2717, 2711, 2698, 2681, 2655, 2632, 2512, 2630, 2554, 2495, + 2441, 2407, 2371, 2321, 2317, 2161, 2162, 2195, 2155, 2091, 2112, 2061, 1992, 1989, 1959, + 1952, 1934, 2001, 2024, 2096, 2132, 2234, 2219, 2254, 2394, 2401, 2376, 2470, 2498, 2533, + 2542, 2485, 2448, 2670, 2740, 2959, 3062, 3091, 3324, 3260, 3455, 2706, 2661, 2619, 2626, + 2605, 2571, 2534, 2534, 2479, 2462, 2445, 2440, 2409, 2348, 2323, 2417, 2455, 2407, 2327, + 2324, 2348, 2339, 2382, 2396, 2289, 2316, 2279, 2277, 2238, 2203, 2254, 2270, 2272, 2329, + 2284, 2300, 2303, 2210, 2299, 2258, 2257, 2301, 2383, 2348, 2337, 2378, 2261, 2385, 2431, + 2346, 2341, 2446, 2419, 2401, 2386, 2350, 2288, 2241, 2290, 2310, 2264, 2265, 2302, 2239, + 2231, 2207, 2225, 2341, 2394, 2395, 2483, 2509, 2463, 2506, 2440, 2426, 2431, 2335, 2394, + 2462, 2299, 2227, 2205, 2222, 2195, 2093, 2054, 2375, 2240, 2382, 2228, 2760, 3257, 3892, + 3436, 3800, 3849, 3745, 3711, 3634, 3671, 3467, 3440, 3344, 3241, 3110, 3051, 3029, 2921, + 2891, 2920, 2972, 2921, 2858, 2813, 2786, 2765, 2617, 2660, 2659, 2664, 2682, 2543, 2540, + 2560, 2543, 2426, 2490, 2508, 2534, 2528, 2484, 2549, 2659, 2604, 2633, 2705, 2636, 2654, + 2672, + ], + [ + 2471, 2401, 2412, 2382, 2336, 2295, 2347, 2292, 2182, 2134, 2103, 2159, 2233, 2371, 2432, + 2525, 2619, 2624, 2730, 2799, 2825, 2808, 2834, 2848, 2897, 2842, 2851, 2836, 2838, 2808, + 2766, 2766, 2663, 2639, 2621, 2617, 2649, 2622, 2606, 2647, 2709, 2742, 2736, 2683, 2601, + 2650, 2532, 2584, 2448, 2462, 2494, 2440, 2450, 2438, 2449, 2470, 2406, 2359, 2359, 2278, + 2245, 2286, 2252, 2153, 2156, 2105, 2027, 2022, 1993, 1982, 1992, 1924, 1873, 1839, 1855, + 1826, 1839, 1908, 1894, 1942, 1999, 2046, 2117, 2212, 2213, 2253, 2247, 2304, 2362, 2426, + 2438, 2418, 2422, 2307, 2513, 2584, 2766, 2855, 2855, 3287, 2341, 2557, 2568, 2563, 2478, + 2403, 2417, 2427, 2389, 2428, 2292, 2321, 2349, 2207, 2232, 2210, 2291, 2429, 2255, 2259, + 2208, 2249, 2221, 2198, 2240, 2186, 2148, 2119, 2091, 2103, 2101, 2165, 2156, 2094, 2114, + 2107, 2062, 2076, 2088, 2125, 2155, 2122, 2166, 2246, 2231, 2335, 2332, 2281, 2243, 2195, + 2143, 2167, 2173, 2168, 2247, 2189, 2219, 2171, 2146, 2166, 2129, 2029, 2005, 2016, 2081, + 2064, 2036, 1994, 2055, 2122, 2197, 2239, 2279, 2225, 2271, 2295, 2299, 2333, 2236, 2267, + 2284, 2166, 2136, 2014, 1977, 1980, 1966, 1903, 2010, 1914, 2210, 2048, 2453, 3036, 3202, + 3205, 3605, 3560, 3604, 3572, 3538, 3471, 3244, 3260, 3200, 3022, 2891, 2824, 2690, 2735, + 2671, 2685, 2723, 2584, 2634, 2530, 2466, 2501, 2472, 2420, 2475, 2361, 2345, 2316, 2251, + 2221, 2222, 2216, 2244, 2253, 2219, 2319, 2352, 2318, 2338, 2299, 2359, 2444, 2439, 2412, + 2471, + ], + [ + 2201, 2188, 2236, 2188, 2160, 2107, 2171, 2101, 2039, 1989, 1978, 1988, 2022, 2138, 2161, + 2213, 2336, 2476, 2547, 2582, 2648, 2633, 2599, 2588, 2615, 2607, 2626, 2596, 2595, 2606, + 2584, 2516, 2513, 2428, 2367, 2389, 2347, 2336, 2373, 2415, 2365, 2452, 2429, 2408, 2386, + 2313, 2382, 2341, 2161, 2120, 2168, 2221, 2152, 2160, 2156, 2111, 2164, 2100, 2094, 2072, + 2063, 2100, 2023, 1946, 1970, 1890, 1869, 1899, 1813, 1783, 1833, 1785, 1686, 1650, 1649, + 1638, 1703, 1717, 1729, 1791, 1823, 1843, 1922, 1994, 2011, 2102, 2172, 2184, 2221, 2260, + 2301, 2256, 2292, 2238, 2162, 2169, 2220, 2261, 2258, 2325, 2446, 2397, 2374, 2352, 2343, + 2317, 2329, 2315, 2226, 2197, 2249, 2205, 2285, 2167, 2095, 2244, 2409, 2272, 2465, 2157, + 2123, 2176, 2107, 2014, 2075, 2063, 2025, 1997, 1983, 1985, 1966, 1985, 1987, 1953, 1940, + 1909, 1895, 1910, 1957, 1981, 1964, 1976, 1994, 2025, 2045, 2107, 2126, 2067, 2113, 2017, + 1974, 1991, 1980, 2005, 2007, 2015, 1981, 2003, 1989, 2006, 1989, 1935, 1846, 1779, 1812, + 1825, 1875, 1818, 1847, 1870, 1895, 1987, 2005, 2031, 2087, 2112, 2115, 2174, 2075, 2080, + 2018, 1986, 1973, 1831, 1777, 1772, 1843, 1807, 1876, 1862, 1928, 1984, 2156, 2613, 2765, + 2901, 3210, 3371, 3386, 3132, 3102, 2994, 3140, 3044, 2907, 2786, 2574, 2471, 2372, 2453, + 2378, 2439, 2473, 2365, 2376, 2249, 2172, 2156, 2140, 2125, 2171, 2129, 2059, 2042, 1996, + 1972, 1985, 1989, 2011, 2016, 2078, 2079, 2101, 2124, 2152, 2149, 2195, 2152, 2155, 2153, + 2201, + ], + [ + 1969, 1982, 2019, 1988, 2020, 2033, 2019, 2001, 1910, 1808, 1798, 1841, 1866, 1908, 1946, + 2032, 2092, 2186, 2389, 2382, 2461, 2469, 2521, 2512, 2461, 2403, 2503, 2421, 2390, 2382, + 2314, 2320, 2397, 2398, 2333, 2293, 2286, 2243, 2175, 2147, 2131, 2142, 2041, 2105, 2110, + 2081, 2092, 2009, 1964, 1954, 1898, 1917, 1952, 2028, 1990, 1940, 1900, 1914, 1913, 1916, + 1836, 1871, 1833, 1754, 1759, 1725, 1652, 1638, 1579, 1584, 1592, 1596, 1597, 1544, 1528, + 1564, 1571, 1561, 1625, 1718, 1686, 1649, 1766, 1871, 1960, 1926, 2004, 2106, 2076, 2042, + 2094, 2203, 2205, 2230, 2195, 2196, 2203, 2150, 2308, 2414, 2469, 2291, 2229, 2143, 2189, + 2178, 2219, 2185, 2299, 2244, 2209, 2062, 2007, 2110, 2131, 2397, 2411, 2144, 1958, 1974, + 2064, 1972, 1896, 1831, 1842, 1869, 1915, 1837, 1791, 1789, 1761, 1803, 1782, 1799, 1771, + 1744, 1705, 1740, 1781, 1824, 1836, 1866, 1860, 1817, 1782, 1778, 1788, 1727, 1847, 1851, + 1811, 1828, 1825, 1848, 1847, 1831, 1844, 1858, 1783, 1829, 1804, 1777, 1735, 1680, 1630, + 1684, 1639, 1660, 1712, 1690, 1729, 1810, 1768, 1800, 1867, 1851, 1889, 1914, 1855, 1837, + 1886, 1845, 1777, 1781, 1717, 1684, 1682, 1722, 1688, 1672, 1808, 1888, 2244, 2459, 2536, + 2850, 2715, 2868, 2692, 2721, 2833, 2712, 2742, 2914, 2487, 2325, 2170, 2056, 2079, 2115, + 2133, 2138, 2106, 2011, 2026, 2024, 1973, 1953, 1976, 1925, 1911, 1870, 1830, 1824, 1823, + 1799, 1764, 1730, 1764, 1773, 1766, 1735, 1771, 1824, 1811, 1849, 1835, 1882, 1921, 1965, + 1969, + ], + [ + 1703, 1729, 1800, 1756, 1745, 1781, 1769, 1760, 1719, 1672, 1584, 1671, 1644, 1756, 1813, + 1792, 1956, 2051, 2113, 2215, 2242, 2283, 2266, 2277, 2256, 2339, 2300, 2256, 2251, 2207, + 2198, 2266, 2291, 2241, 2229, 2134, 2089, 2080, 1976, 1990, 1966, 1869, 1859, 1843, 1851, + 1862, 1942, 1877, 1816, 1778, 1725, 1733, 1740, 1755, 1742, 1792, 1761, 1699, 1695, 1697, + 1675, 1601, 1587, 1551, 1521, 1502, 1533, 1502, 1442, 1422, 1419, 1400, 1438, 1402, 1437, + 1455, 1456, 1501, 1525, 1529, 1573, 1568, 1594, 1717, 1815, 1859, 1850, 1978, 1994, 1970, + 1961, 2005, 2027, 2125, 2120, 2111, 2094, 2338, 2381, 2109, 2240, 2152, 2113, 2084, 1991, + 2030, 2073, 2063, 2136, 2176, 2021, 2084, 2078, 1999, 2061, 2230, 2324, 2033, 2145, 1980, + 1896, 1821, 1708, 1721, 1690, 1675, 1733, 1720, 1688, 1678, 1647, 1609, 1604, 1596, 1647, + 1637, 1648, 1642, 1635, 1668, 1688, 1756, 1742, 1757, 1691, 1633, 1649, 1688, 1651, 1633, + 1562, 1641, 1665, 1601, 1548, 1634, 1665, 1699, 1683, 1694, 1678, 1714, 1661, 1560, 1585, + 1529, 1462, 1470, 1521, 1595, 1560, 1609, 1658, 1610, 1615, 1625, 1592, 1727, 1722, 1639, + 1636, 1673, 1652, 1581, 1589, 1615, 1563, 1583, 1633, 1649, 1663, 1740, 2283, 2563, 2178, + 2384, 2531, 2203, 2397, 2470, 2399, 2436, 2490, 2416, 2204, 1970, 1854, 1790, 1853, 1961, + 1860, 1910, 1929, 1856, 1842, 1842, 1811, 1734, 1769, 1749, 1693, 1689, 1707, 1617, 1566, + 1549, 1583, 1551, 1547, 1557, 1549, 1527, 1547, 1481, 1524, 1552, 1571, 1591, 1626, 1718, + 1703, + ], + [ + 1403, 1463, 1522, 1536, 1505, 1498, 1496, 1447, 1502, 1461, 1485, 1515, 1487, 1529, 1537, + 1646, 1708, 1871, 1927, 1970, 1984, 1948, 1960, 1991, 2049, 2083, 2023, 2014, 1985, 1892, + 1879, 1996, 1962, 2056, 1984, 1938, 1938, 1886, 1785, 1731, 1678, 1653, 1667, 1650, 1650, + 1677, 1683, 1669, 1640, 1587, 1590, 1571, 1545, 1516, 1485, 1441, 1505, 1449, 1449, 1470, + 1411, 1402, 1377, 1368, 1336, 1326, 1313, 1310, 1245, 1239, 1201, 1230, 1280, 1291, 1322, + 1276, 1309, 1304, 1381, 1350, 1389, 1414, 1438, 1476, 1583, 1621, 1686, 1696, 1729, 1735, + 1849, 1809, 1866, 1934, 1990, 2047, 1960, 1855, 1576, 1953, 1933, 1896, 1921, 1907, 1888, + 1862, 1921, 1931, 1915, 1956, 1912, 1904, 1953, 2253, 2391, 2744, 1978, 2016, 2043, 1932, + 1827, 1718, 1679, 1595, 1596, 1564, 1583, 1677, 1617, 1594, 1526, 1558, 1538, 1506, 1506, + 1538, 1534, 1536, 1527, 1539, 1538, 1538, 1566, 1541, 1499, 1488, 1503, 1484, 1493, 1471, + 1515, 1451, 1481, 1460, 1470, 1506, 1515, 1544, 1532, 1485, 1458, 1501, 1518, 1495, 1410, + 1379, 1377, 1365, 1404, 1438, 1430, 1497, 1448, 1463, 1474, 1462, 1431, 1484, 1580, 1532, + 1468, 1502, 1545, 1445, 1483, 1445, 1414, 1457, 1477, 1606, 1636, 1739, 2267, 2257, 2127, + 2264, 2241, 2152, 2190, 2246, 2192, 2242, 2103, 1935, 1845, 1730, 1659, 1667, 1654, 1679, + 1617, 1590, 1629, 1608, 1564, 1529, 1514, 1511, 1467, 1509, 1535, 1493, 1452, 1448, 1491, + 1390, 1341, 1373, 1397, 1382, 1340, 1387, 1366, 1315, 1302, 1337, 1308, 1347, 1392, 1436, + 1403, + ], + [ + 1200, 1205, 1241, 1230, 1293, 1284, 1239, 1208, 1192, 1205, 1234, 1279, 1251, 1380, 1369, + 1384, 1440, 1533, 1621, 1647, 1662, 1665, 1763, 1738, 1726, 1830, 1718, 1797, 1749, 1734, + 1718, 1645, 1622, 1573, 1611, 1572, 1524, 1538, 1493, 1516, 1452, 1446, 1531, 1584, 1606, + 1534, 1510, 1530, 1477, 1393, 1391, 1422, 1353, 1350, 1341, 1255, 1194, 1190, 1158, 1196, + 1158, 1164, 1158, 1163, 1128, 1118, 1113, 1081, 1139, 1123, 1114, 1116, 1125, 1119, 1150, + 1139, 1188, 1182, 1198, 1264, 1274, 1269, 1318, 1345, 1369, 1477, 1482, 1480, 1521, 1550, + 1509, 1558, 1621, 1656, 1713, 1702, 1712, 1689, 1731, 1688, 1738, 1754, 1775, 1789, 1781, + 1791, 1775, 1811, 1816, 1845, 1794, 1405, 2211, 2373, 1963, 2026, 1879, 1762, 1762, 1785, + 1668, 1621, 1521, 1503, 1421, 1405, 1460, 1393, 1441, 1391, 1387, 1454, 1409, 1399, 1383, + 1388, 1412, 1426, 1400, 1410, 1372, 1390, 1460, 1446, 1449, 1358, 1310, 1332, 1345, 1349, + 1331, 1313, 1336, 1229, 1290, 1326, 1351, 1372, 1342, 1317, 1359, 1326, 1336, 1286, 1266, + 1237, 1264, 1286, 1232, 1203, 1279, 1344, 1295, 1263, 1338, 1369, 1358, 1317, 1312, 1370, + 1332, 1355, 1313, 1357, 1388, 1310, 1347, 1439, 1390, 1531, 1470, 1673, 1901, 2083, 1953, + 2217, 2047, 1944, 1740, 1797, 1885, 1919, 1800, 1688, 1521, 1596, 1553, 1537, 1527, 1498, + 1490, 1436, 1438, 1388, 1301, 1218, 1229, 1212, 1305, 1358, 1319, 1296, 1290, 1287, 1261, + 1220, 1182, 1186, 1200, 1187, 1208, 1132, 1150, 1173, 1217, 1157, 1178, 1126, 1168, 1178, + 1200, + ], + [ + 985, 996, 1003, 976, 1046, 1046, 1060, 1040, 1023, 1073, 1039, 1063, 1099, 1123, 1223, + 1236, 1278, 1315, 1309, 1355, 1315, 1386, 1402, 1427, 1379, 1429, 1573, 1511, 1478, 1471, + 1417, 1413, 1347, 1373, 1393, 1327, 1312, 1273, 1372, 1385, 1358, 1409, 1393, 1494, 1482, + 1492, 1460, 1400, 1377, 1320, 1224, 1250, 1261, 1192, 1132, 1078, 1013, 967, 943, 977, 978, + 946, 979, 979, 995, 956, 975, 967, 924, 904, 928, 924, 955, 945, 976, 991, 1003, 1039, + 1054, 1105, 1133, 1160, 1185, 1254, 1216, 1260, 1334, 1332, 1328, 1392, 1363, 1365, 1373, + 1437, 1481, 1530, 1532, 1563, 1564, 1597, 1583, 1622, 1703, 1641, 1595, 1635, 1642, 1658, + 1632, 1660, 1617, 1589, 1806, 1472, 1616, 1665, 1536, 1471, 1520, 1514, 1425, 1372, 1384, + 1357, 1290, 1293, 1356, 1332, 1318, 1325, 1312, 1354, 1301, 1286, 1312, 1271, 1250, 1286, + 1289, 1292, 1247, 1233, 1264, 1319, 1295, 1285, 1276, 1252, 1185, 1207, 1197, 1242, 1224, + 1197, 1188, 1204, 1224, 1251, 1234, 1214, 1145, 1210, 1184, 1158, 1182, 1154, 1146, 1148, + 1154, 1087, 1134, 1153, 1177, 1186, 1181, 1220, 1235, 1216, 1205, 1176, 1149, 1174, 1201, + 1176, 1198, 1234, 1325, 1269, 1365, 1365, 1441, 2034, 2021, 2062, 1914, 1687, 1903, 1697, + 1574, 1591, 1677, 1637, 1607, 1482, 1453, 1492, 1441, 1431, 1379, 1353, 1322, 1289, 1264, + 1214, 1146, 1095, 1095, 1135, 1135, 1186, 1218, 1147, 1190, 1259, 1193, 1134, 1089, 1086, + 1023, 1043, 1046, 1011, 1058, 1105, 1126, 1126, 1044, 1079, 1022, 1041, 985, + ], + [ + 848, 853, 854, 843, 902, 846, 861, 799, 843, 847, 846, 900, 944, 986, 1025, 1068, 1070, + 1093, 1030, 1107, 1138, 1180, 1168, 1204, 1198, 1232, 1190, 1206, 1119, 1221, 1229, 1292, + 1231, 1228, 1147, 1265, 1213, 1204, 1149, 1158, 1165, 1167, 1209, 1249, 1267, 1220, 1142, + 1255, 1166, 1140, 1059, 1001, 944, 993, 950, 844, 852, 830, 784, 781, 814, 817, 773, 780, + 812, 827, 817, 872, 851, 789, 782, 752, 781, 777, 799, 820, 822, 832, 909, 885, 898, 967, + 999, 1017, 1060, 1073, 1137, 1152, 1203, 1206, 1258, 1223, 1214, 1244, 1265, 1351, 1351, + 1367, 1388, 1442, 1407, 1440, 1552, 1534, 1524, 1488, 1511, 1557, 1495, 1497, 1440, 1389, + 1341, 1398, 1324, 1358, 1377, 1317, 1319, 1213, 1216, 1252, 1175, 1128, 1121, 1165, 1185, + 1200, 1182, 1175, 1225, 1218, 1215, 1206, 1225, 1159, 1108, 1154, 1129, 1179, 1172, 1126, + 1121, 1142, 1146, 1171, 1172, 1120, 1084, 1096, 1113, 1094, 1091, 1102, 1142, 1121, 1079, + 1064, 1081, 1081, 1046, 1040, 1069, 1056, 1035, 1058, 1036, 1052, 1020, 1053, 1047, 1011, + 1025, 1041, 1086, 1039, 1063, 1069, 1109, 1075, 1035, 1027, 1044, 1081, 1053, 1122, 1120, + 1140, 1242, 1265, 1237, 1766, 1966, 1879, 1825, 1856, 1436, 1475, 1372, 1434, 1488, 1468, + 1394, 1426, 1430, 1264, 1263, 1256, 1254, 1196, 1152, 1153, 1155, 1087, 1022, 985, 1008, + 1029, 1032, 1073, 1070, 1074, 1036, 1119, 1096, 1013, 983, 905, 900, 901, 959, 948, 914, + 942, 1032, 1033, 963, 922, 929, 921, 848, + ], + [ + 637, 671, 694, 738, 730, 731, 710, 773, 737, 680, 741, 768, 780, 843, 850, 803, 903, 846, + 893, 910, 897, 925, 930, 859, 993, 1079, 1062, 1140, 1010, 987, 949, 1033, 996, 1057, 986, + 1036, 1085, 1027, 970, 980, 1004, 1059, 896, 903, 936, 882, 1116, 865, 901, 862, 854, 814, + 793, 749, 666, 682, 705, 655, 673, 703, 676, 656, 651, 635, 702, 704, 681, 698, 714, 731, + 698, 659, 665, 655, 675, 718, 705, 691, 698, 767, 770, 792, 808, 806, 868, 893, 927, 945, + 993, 1029, 1030, 1055, 1084, 1131, 1143, 1154, 1189, 1195, 1224, 1249, 1265, 1252, 1278, + 1349, 1297, 1348, 1308, 1314, 1291, 1290, 1296, 1200, 1244, 1211, 1170, 1111, 1103, 1165, + 1148, 1180, 1125, 1072, 1031, 1050, 1042, 1018, 1034, 1000, 1051, 1061, 1077, 1054, 1085, + 1087, 1085, 1075, 1001, 993, 1031, 1012, 1012, 1001, 1004, 1009, 1005, 992, 985, 980, 978, + 963, 930, 962, 959, 976, 966, 956, 939, 936, 951, 929, 919, 934, 922, 897, 876, 876, 875, + 859, 890, 921, 929, 911, 884, 859, 890, 937, 940, 909, 942, 967, 947, 944, 952, 936, 913, + 964, 1004, 889, 1032, 1139, 1302, 1854, 1923, 1904, 1901, 1633, 1306, 1298, 1310, 1265, + 1299, 1338, 1235, 1289, 1208, 1172, 1166, 1157, 1074, 1055, 1101, 1056, 1029, 1097, 1084, + 958, 977, 1033, 1034, 1007, 1065, 914, 886, 975, 934, 977, 797, 812, 720, 660, 676, 728, + 656, 659, 712, 770, 716, 690, 662, 648, 637, + ], + [ + 596, 616, 544, 539, 601, 546, 612, 585, 605, 597, 572, 601, 649, 653, 724, 752, 695, 764, + 767, 723, 679, 696, 763, 774, 779, 877, 850, 940, 987, 976, 970, 919, 845, 882, 886, 908, + 798, 856, 894, 831, 785, 744, 777, 814, 809, 746, 608, 666, 712, 693, 784, 731, 728, 656, + 661, 616, 583, 593, 563, 552, 586, 559, 573, 593, 608, 588, 608, 582, 602, 599, 589, 558, + 563, 546, 551, 598, 620, 623, 623, 606, 627, 680, 686, 698, 701, 741, 740, 803, 859, 871, + 879, 919, 943, 981, 1024, 1052, 1055, 1056, 1057, 1084, 1113, 1127, 1094, 1123, 1127, 1133, + 1119, 1112, 1120, 1123, 1087, 1014, 1057, 988, 1014, 994, 979, 1086, 973, 905, 908, 936, + 892, 901, 881, 926, 939, 907, 920, 966, 942, 970, 985, 957, 942, 979, 956, 934, 903, 910, + 880, 876, 898, 887, 878, 883, 897, 927, 881, 856, 846, 834, 846, 839, 821, 817, 815, 823, + 827, 805, 815, 802, 789, 775, 770, 777, 778, 761, 764, 752, 732, 758, 750, 743, 760, 806, + 832, 829, 838, 830, 852, 847, 835, 857, 853, 821, 890, 870, 896, 978, 1076, 1260, 1609, + 1674, 1352, 1209, 1200, 1082, 1112, 1140, 1155, 1034, 1114, 1110, 1071, 1027, 1010, 1039, + 962, 984, 1039, 954, 940, 980, 969, 918, 925, 840, 834, 787, 822, 848, 825, 768, 770, 746, + 746, 740, 675, 633, 605, 660, 647, 589, 638, 689, 620, 569, 606, 611, 596, + ], + [ + 447, 351, 502, 553, 619, 505, 527, 491, 584, 472, 486, 573, 643, 630, 685, 795, 719, 600, + 666, 642, 648, 579, 635, 657, 625, 690, 724, 753, 709, 688, 839, 885, 864, 932, 835, 764, + 710, 781, 772, 795, 692, 732, 697, 640, 656, 591, 536, 533, 591, 643, 666, 641, 555, 511, + 507, 519, 559, 485, 471, 460, 524, 549, 538, 495, 529, 559, 537, 517, 484, 484, 487, 507, + 500, 501, 471, 467, 477, 511, 510, 483, 522, 546, 554, 585, 580, 589, 605, 645, 682, 723, + 741, 764, 774, 845, 908, 881, 943, 922, 933, 953, 945, 950, 971, 964, 945, 949, 967, 990, + 973, 937, 938, 935, 909, 889, 872, 854, 844, 863, 831, 857, 866, 828, 735, 826, 776, 741, + 762, 816, 824, 870, 874, 841, 830, 814, 842, 827, 827, 806, 816, 805, 812, 825, 776, 752, + 732, 757, 777, 766, 764, 736, 729, 687, 677, 696, 675, 679, 690, 705, 714, 757, 724, 681, + 715, 686, 697, 634, 634, 639, 640, 657, 654, 630, 645, 687, 673, 703, 716, 723, 699, 710, + 686, 726, 741, 745, 737, 734, 754, 762, 792, 860, 932, 973, 1166, 1380, 1318, 1011, 1069, + 1006, 1028, 1000, 948, 891, 933, 928, 910, 881, 874, 882, 896, 899, 873, 864, 852, 790, + 858, 834, 812, 764, 709, 729, 837, 959, 843, 742, 628, 625, 601, 670, 614, 645, 638, 637, + 550, 610, 690, 640, 640, 650, 527, 462, 447, + ], + [ + 626, 707, 734, 633, 639, 582, 606, 578, 529, 601, 548, 501, 469, 552, 604, 626, 681, 679, + 566, 613, 643, 611, 582, 492, 487, 516, 553, 638, 596, 622, 659, 620, 701, 732, 714, 708, + 647, 660, 674, 612, 621, 627, 600, 572, 574, 531, 555, 538, 621, 640, 557, 560, 573, 520, + 504, 469, 478, 421, 475, 486, 462, 490, 506, 496, 493, 479, 489, 416, 453, 448, 477, 440, + 418, 409, 362, 369, 377, 353, 406, 406, 441, 431, 452, 461, 488, 503, 521, 560, 571, 559, + 571, 610, 640, 671, 712, 746, 767, 765, 721, 770, 747, 816, 815, 804, 774, 792, 806, 830, + 820, 784, 776, 727, 719, 736, 716, 696, 721, 689, 701, 730, 717, 645, 674, 690, 710, 675, + 649, 653, 742, 728, 720, 754, 731, 756, 695, 776, 763, 772, 739, 771, 749, 743, 686, 696, + 704, 696, 702, 694, 701, 672, 637, 650, 635, 641, 598, 593, 598, 605, 606, 612, 647, 609, + 586, 603, 602, 604, 613, 595, 614, 610, 599, 607, 607, 567, 549, 571, 590, 577, 604, 594, + 587, 602, 630, 651, 608, 641, 661, 672, 703, 720, 739, 808, 892, 978, 1166, 1119, 858, 809, + 764, 742, 758, 753, 793, 785, 766, 751, 734, 701, 732, 724, 668, 703, 746, 668, 624, 892, + 1087, 866, 878, 765, 614, 810, 781, 696, 709, 578, 594, 691, 569, 643, 675, 644, 517, 651, + 855, 915, 727, 689, 599, 692, 626, + ], + [ + 1095, 832, 782, 793, 869, 779, 756, 750, 714, 721, 673, 581, 512, 549, 547, 443, 542, 618, + 488, 575, 513, 448, 420, 542, 507, 409, 517, 617, 707, 703, 656, 647, 733, 701, 751, 744, + 698, 613, 528, 527, 500, 550, 503, 572, 561, 602, 537, 518, 522, 529, 514, 521, 490, 394, + 461, 395, 424, 352, 374, 332, 506, 521, 489, 498, 458, 440, 424, 436, 476, 423, 393, 384, + 332, 370, 319, 334, 332, 346, 323, 330, 319, 331, 377, 422, 413, 453, 439, 432, 453, 468, + 494, 482, 528, 547, 571, 584, 599, 620, 646, 648, 614, 666, 664, 640, 649, 651, 675, 738, + 743, 742, 701, 695, 687, 623, 662, 671, 662, 630, 651, 667, 646, 624, 614, 625, 612, 586, + 616, 618, 657, 617, 670, 703, 691, 689, 650, 639, 665, 722, 679, 715, 747, 744, 741, 691, + 692, 687, 639, 606, 561, 586, 599, 594, 568, 527, 492, 517, 518, 549, 518, 500, 490, 504, + 500, 526, 532, 551, 572, 539, 518, 531, 540, 524, 534, 521, 485, 513, 511, 518, 519, 514, + 511, 504, 513, 521, 535, 538, 574, 583, 546, 563, 610, 652, 719, 735, 523, 606, 686, 642, + 686, 668, 658, 690, 697, 680, 706, 670, 621, 598, 631, 584, 601, 620, 635, 571, 438, 384, + 557, 597, 727, 728, 763, 874, 1036, 699, 641, 576, 580, 540, 731, 639, 671, 606, 552, 507, + 504, 641, 784, 763, 881, 957, 1095, + ], + [ + 619, 746, 743, 771, 628, 744, 635, 637, 641, 658, 756, 690, 567, 493, 474, 441, 339, 408, + 430, 452, 394, 273, 358, 346, 377, 462, 378, 414, 501, 544, 613, 655, 625, 638, 664, 665, + 610, 741, 661, 646, 605, 570, 593, 612, 597, 563, 513, 447, 446, 448, 459, 443, 456, 472, + 500, 514, 452, 407, 367, 454, 363, 376, 342, 411, 336, 337, 387, 357, 360, 392, 337, 279, + 277, 298, 287, 278, 310, 328, 288, 282, 297, 298, 310, 354, 362, 311, 342, 365, 392, 378, + 390, 352, 414, 422, 427, 502, 487, 583, 604, 632, 585, 596, 624, 585, 603, 575, 649, 716, + 719, 655, 642, 654, 614, 599, 572, 556, 581, 616, 627, 646, 641, 648, 607, 603, 558, 563, + 563, 587, 587, 601, 653, 659, 697, 598, 591, 590, 608, 649, 614, 628, 700, 739, 738, 753, + 721, 729, 697, 607, 529, 584, 559, 514, 515, 515, 498, 506, 511, 453, 443, 433, 424, 446, + 491, 471, 476, 468, 452, 469, 461, 440, 423, 443, 430, 419, 414, 415, 424, 428, 423, 435, + 454, 446, 429, 432, 460, 455, 457, 457, 477, 457, 496, 511, 507, 489, 475, 459, 518, 564, + 613, 562, 567, 546, 605, 545, 584, 597, 583, 545, 514, 537, 536, 516, 536, 564, 543, 529, + 561, 619, 629, 622, 695, 774, 949, 857, 665, 710, 558, 582, 684, 669, 688, 570, 581, 669, + 604, 867, 873, 917, 902, 604, 619, + ], + [ + 1131, 950, 1065, 1040, 900, 658, 711, 757, 755, 580, 641, 513, 456, 386, 499, 431, 320, + 443, 416, 364, 416, 299, 303, 159, 161, 199, 310, 440, 454, 516, 506, 458, 664, 705, 878, + 862, 933, 863, 802, 821, 827, 755, 756, 615, 471, 476, 474, 464, 405, 463, 448, 469, 533, + 497, 516, 471, 394, 405, 470, 361, 374, 478, 489, 534, 471, 467, 477, 391, 364, 252, 243, + 255, 218, 208, 202, 225, 236, 208, 232, 252, 275, 320, 298, 312, 326, 335, 360, 315, 350, + 374, 386, 367, 345, 336, 341, 422, 470, 429, 456, 432, 499, 527, 472, 441, 473, 444, 425, + 494, 519, 597, 541, 540, 502, 494, 500, 514, 528, 573, 578, 609, 619, 593, 636, 613, 592, + 544, 541, 532, 522, 539, 600, 628, 642, 648, 615, 608, 621, 615, 579, 624, 607, 661, 693, + 739, 748, 766, 709, 703, 698, 625, 631, 578, 547, 566, 483, 527, 467, 429, 413, 390, 350, + 349, 397, 382, 360, 414, 404, 378, 369, 357, 359, 323, 345, 349, 359, 389, 379, 365, 368, + 365, 373, 375, 372, 384, 397, 404, 335, 352, 355, 407, 413, 451, 439, 444, 438, 447, 455, + 489, 501, 493, 486, 522, 542, 539, 556, 660, 607, 665, 694, 718, 672, 507, 547, 489, 550, + 486, 583, 610, 680, 451, 609, 632, 789, 771, 663, 1027, 891, 811, 947, 820, 827, 1016, + 1124, 1022, 974, 1065, 1396, 884, 907, 974, 1131, + ], + [ + 849, 597, 158, 554, 644, 109, 496, 664, 648, 988, 759, 447, 523, 492, 492, 388, 312, 211, + 240, 293, 384, 312, 159, 130, 125, 119, 120, 165, 365, 540, 588, 376, 621, 681, 765, 756, + 838, 943, 766, 898, 771, 590, 753, 725, 579, 737, 708, 550, 554, 500, 459, 345, 489, 296, + 315, 232, 427, 410, 358, 349, 388, 498, 432, 335, 627, 595, 555, 549, 501, 259, 246, 187, + 186, 150, 156, 231, 234, 244, 238, 257, 245, 296, 275, 342, 316, 367, 343, 333, 293, 268, + 259, 335, 339, 381, 391, 387, 395, 337, 347, 407, 442, 509, 547, 520, 473, 415, 456, 389, + 499, 482, 454, 403, 481, 410, 420, 404, 452, 486, 529, 529, 511, 513, 488, 483, 540, 534, + 532, 590, 535, 549, 574, 614, 572, 552, 570, 598, 533, 564, 652, 614, 755, 737, 713, 724, + 690, 645, 682, 629, 662, 653, 593, 573, 576, 514, 460, 443, 375, 404, 399, 398, 420, 374, + 348, 369, 424, 418, 379, 407, 393, 366, 336, 367, 336, 315, 353, 377, 385, 352, 328, 354, + 332, 334, 333, 349, 325, 330, 318, 324, 359, 371, 350, 349, 386, 424, 417, 430, 422, 462, + 496, 521, 544, 573, 643, 648, 532, 515, 582, 622, 671, 611, 641, 648, 599, 576, 501, 479, + 493, 475, 614, 605, 534, 509, 746, 793, 657, 732, 720, 911, 757, 1079, 1175, 1102, 1251, + 1445, 1240, 1176, 1403, 1288, 957, 942, 849, + ], + [ + 740, 619, 610, 839, 644, 86, 496, 892, 1143, 486, 812, 702, 416, 429, 105, 121, 329, 1256, + 435, 452, 457, 368, 240, 333, 263, 207, 187, 214, 216, 434, 454, 402, 447, 413, 366, 491, + 569, 530, 682, 622, 662, 698, 671, 693, 635, 654, 619, 592, 512, 500, 445, 524, 196, 179, + 152, 103, 255, 253, 227, 277, 120, 147, 106, 83, 93, 173, 356, 511, 107, 66, 246, 157, 374, + 604, 283, 176, 190, 210, 269, 245, 254, 183, 200, 197, 233, 201, 239, 208, 244, 243, 250, + 258, 297, 357, 388, 355, 349, 383, 357, 402, 462, 461, 473, 482, 545, 558, 592, 495, 531, + 477, 469, 510, 395, 526, 434, 453, 544, 527, 554, 525, 487, 472, 440, 476, 581, 504, 566, + 560, 577, 523, 430, 426, 469, 502, 546, 624, 614, 731, 782, 749, 814, 731, 693, 672, 630, + 536, 576, 596, 623, 507, 487, 585, 580, 550, 523, 513, 483, 425, 442, 420, 368, 420, 371, + 364, 404, 466, 438, 425, 403, 370, 337, 363, 326, 359, 365, 388, 390, 312, 256, 290, 299, + 303, 315, 315, 313, 313, 322, 325, 310, 313, 308, 332, 347, 397, 426, 445, 494, 563, 586, + 567, 576, 728, 686, 663, 632, 584, 588, 653, 730, 742, 880, 877, 894, 733, 630, 713, 710, + 884, 813, 1422, 1085, 735, 472, 627, 635, 816, 810, 844, 1061, 1047, 945, 1024, 995, 1096, + 1170, 989, 743, 1129, 973, 628, 740, + ], + [ + 778, 861, 925, 925, 272, 193, 227, 753, 666, 913, 744, 715, 729, 429, 105, 113, 484, 141, + 341, 552, 572, 199, 198, 136, 168, 143, 142, 182, 229, 182, 152, 229, 270, 380, 272, 364, + 483, 566, 654, 733, 776, 766, 689, 493, 526, 538, 549, 582, 579, 399, 378, 270, 232, 101, + 152, 103, 91, 131, 141, 277, 120, 186, 232, 129, 93, 173, 88, 511, 107, 76, 91, 157, 374, + 604, 142, 145, 151, 131, 112, 131, 156, 109, 134, 167, 291, 383, 454, 269, 119, 98, 215, + 170, 137, 378, 272, 288, 369, 575, 516, 458, 310, 580, 438, 548, 568, 584, 489, 582, 624, + 664, 648, 468, 502, 534, 605, 546, 516, 624, 536, 683, 669, 523, 572, 596, 672, 609, 569, + 577, 428, 607, 596, 664, 518, 461, 463, 696, 732, 805, 708, 692, 589, 613, 631, 575, 482, + 429, 412, 469, 504, 491, 616, 765, 785, 704, 635, 700, 580, 659, 616, 464, 411, 352, 294, + 326, 365, 494, 495, 523, 459, 382, 409, 362, 424, 405, 430, 430, 459, 409, 265, 307, 391, + 373, 331, 337, 294, 317, 328, 337, 358, 364, 344, 348, 363, 296, 351, 359, 441, 473, 511, + 586, 632, 650, 672, 664, 904, 658, 664, 607, 688, 661, 706, 931, 912, 815, 888, 830, 844, + 960, 945, 910, 940, 827, 942, 722, 706, 759, 718, 784, 700, 464, 596, 552, 831, 1089, 886, + 1004, 814, 1595, 1757, 1701, 778, + ], + [ + 778, 861, 925, 925, 272, 193, 227, 82, 285, 301, 533, 494, 468, 193, 105, 113, 83, 88, 110, + 133, 137, 83, 348, 97, 123, 121, 99, 251, 231, 195, 179, 213, 268, 220, 195, 268, 541, 781, + 609, 665, 657, 700, 716, 512, 438, 545, 498, 428, 579, 263, 146, 270, 232, 101, 152, 103, + 137, 250, 302, 279, 379, 358, 288, 158, 91, 173, 88, 511, 107, 455, 511, 157, 374, 604, + 142, 97, 79, 66, 207, 279, 156, 109, 134, 167, 291, 141, 454, 209, 119, 98, 215, 309, 412, + 505, 531, 433, 447, 691, 614, 776, 843, 586, 850, 669, 729, 639, 704, 740, 800, 724, 790, + 711, 519, 782, 864, 769, 703, 742, 640, 645, 853, 610, 699, 731, 688, 687, 584, 636, 590, + 582, 734, 578, 545, 513, 478, 510, 861, 889, 808, 1110, 873, 745, 634, 629, 560, 549, 532, + 490, 500, 654, 667, 714, 713, 726, 751, 628, 636, 825, 716, 595, 492, 440, 370, 359, 367, + 440, 556, 555, 530, 516, 597, 575, 562, 507, 514, 520, 558, 464, 315, 302, 339, 366, 357, + 366, 342, 359, 381, 324, 340, 351, 395, 390, 404, 418, 388, 406, 475, 560, 780, 825, 370, + 1294, 629, 609, 645, 726, 677, 343, 528, 495, 855, 934, 758, 481, 532, 723, 751, 694, 786, + 690, 661, 762, 630, 741, 807, 820, 765, 944, 501, 810, 787, 806, 825, 1199, 886, 840, 1405, + 1289, 1757, 1701, 778, + ], + [ + 778, 861, 925, 925, 272, 193, 227, 82, 285, 301, 533, 494, 468, 193, 105, 113, 69, 99, 110, + 133, 809, 901, 636, 794, 123, 136, 160, 196, 252, 138, 134, 324, 293, 109, 133, 924, 815, + 1043, 330, 399, 471, 532, 580, 623, 517, 459, 498, 428, 579, 263, 146, 270, 232, 101, 152, + 103, 137, 250, 302, 279, 379, 358, 288, 158, 91, 173, 88, 812, 1269, 1403, 511, 157, 374, + 604, 719, 733, 79, 66, 207, 279, 156, 109, 134, 78, 291, 141, 454, 209, 119, 201, 865, 309, + 412, 846, 792, 433, 447, 691, 614, 776, 843, 282, 511, 625, 658, 665, 529, 380, 328, 815, + 721, 740, 881, 899, 941, 1250, 1225, 1232, 830, 891, 919, 910, 781, 728, 702, 682, 925, + 818, 589, 637, 901, 848, 776, 634, 567, 758, 716, 488, 561, 773, 803, 501, 595, 549, 463, + 540, 569, 420, 613, 618, 720, 792, 1171, 1022, 917, 772, 711, 815, 774, 750, 549, 475, 376, + 370, 454, 479, 682, 781, 585, 732, 736, 708, 686, 589, 460, 758, 749, 553, 509, 298, 275, + 452, 406, 431, 386, 423, 423, 434, 416, 456, 418, 394, 381, 424, 421, 425, 567, 1016, 861, + 713, 627, 654, 640, 668, 577, 506, 544, 538, 843, 495, 540, 934, 758, 913, 747, 783, 1016, + 777, 716, 611, 661, 721, 630, 741, 833, 793, 765, 944, 501, 738, 948, 1221, 1290, 1303, + 1249, 1018, 1405, 1289, 1757, 1701, 778, + ], + [ + 778, 69, 925, 925, 272, 193, 227, 82, 285, 301, 533, 494, 468, 193, 105, 113, 69, 99, 110, + 133, 809, 901, 262, 794, 123, 226, 88, 191, 219, 140, 160, 456, 548, 831, 1135, 1456, 1640, + 1460, 1108, 1212, 1015, 853, 787, 623, 517, 459, 498, 428, 579, 263, 146, 270, 232, 101, + 182, 581, 765, 1105, 1091, 1237, 1420, 1485, 1516, 1551, 1590, 1636, 1605, 1611, 1764, + 1835, 1829, 1778, 1532, 1238, 1190, 1216, 1068, 894, 875, 838, 917, 1141, 1277, 1429, 1392, + 1175, 1131, 1435, 1599, 1619, 1651, 1672, 1637, 1535, 1325, 987, 656, 300, 262, 335, 517, + 1169, 1111, 625, 658, 580, 503, 380, 1105, 1125, 649, 874, 954, 1061, 1144, 1236, 1114, + 1409, 1186, 1222, 1260, 1552, 1434, 1247, 1006, 1007, 1302, 969, 897, 960, 1246, 1426, + 1465, 1243, 944, 512, 375, 498, 612, 613, 580, 608, 617, 659, 514, 503, 994, 951, 1028, + 1047, 980, 1281, 1190, 1452, 1291, 1025, 1190, 1017, 776, 582, 588, 491, 542, 508, 546, + 528, 711, 849, 791, 657, 684, 791, 726, 596, 609, 980, 758, 779, 671, 581, 397, 387, 413, + 431, 414, 327, 462, 466, 550, 476, 466, 456, 462, 426, 742, 938, 1026, 816, 520, 621, 670, + 530, 558, 525, 612, 572, 544, 538, 843, 495, 540, 934, 758, 913, 747, 783, 1016, 777, 716, + 611, 661, 721, 630, 741, 833, 793, 765, 944, 501, 738, 1034, 1221, 930, 758, 1249, 1018, + 1405, 1289, 1757, 1701, 778, + ], + [ + 778, 69, 925, 925, 272, 193, 227, 82, 285, 301, 533, 494, 468, 193, 105, 113, 69, 99, 110, + 133, 809, 901, 149, 383, 123, 226, 265, 866, 1232, 1377, 1401, 1417, 1501, 1778, 2114, + 2354, 2365, 2357, 2381, 2331, 2205, 2052, 1908, 1746, 1460, 1041, 644, 428, 579, 263, 146, + 270, 1013, 1583, 1903, 1938, 1984, 2068, 2140, 2205, 2287, 2373, 2420, 2393, 2366, 2318, + 2255, 2254, 2304, 2348, 2333, 2296, 2256, 2233, 2195, 2118, 2051, 1984, 1907, 1836, 1810, + 1915, 2059, 2119, 2056, 2033, 2044, 2064, 2125, 2260, 2362, 2364, 2355, 2276, 2079, 1770, + 1488, 1314, 1162, 1112, 1073, 866, 603, 636, 95, 108, 292, 336, 1105, 1239, 1277, 1322, + 741, 571, 1420, 1270, 1458, 1904, 1940, 1827, 1550, 1599, 1395, 1373, 1353, 1284, 1106, + 1471, 1496, 1392, 1718, 1207, 1214, 1474, 1636, 2709, 1035, 1055, 1207, 1060, 1308, 1232, + 1305, 1131, 1201, 1286, 1414, 1554, 1720, 1568, 1499, 1589, 1324, 1279, 1458, 1245, 1032, + 921, 876, 474, 520, 583, 631, 327, 483, 472, 607, 750, 924, 831, 816, 813, 623, 626, 542, + 333, 674, 636, 514, 508, 385, 386, 416, 471, 478, 676, 510, 460, 420, 458, 523, 498, 870, + 229, 259, 492, 1370, 1389, 387, 547, 223, 530, 558, 525, 612, 572, 544, 538, 557, 495, 540, + 934, 758, 913, 747, 783, 1016, 777, 716, 611, 661, 721, 630, 741, 833, 793, 765, 944, 501, + 738, 1034, 1221, 930, 758, 1249, 1018, 1405, 1289, 1757, 1701, 778, + ], + [ + 778, 69, 465, 386, 564, 629, 541, 702, 849, 524, 836, 887, 629, 571, 471, 409, 501, 523, + 445, 687, 839, 841, 1058, 1242, 1317, 1513, 1684, 1836, 2176, 2324, 2361, 2466, 2494, 2498, + 2598, 2734, 2828, 2833, 2739, 2662, 2563, 2393, 2275, 2144, 1805, 1078, 268, 569, 386, + 1085, 1542, 1778, 2109, 2350, 2474, 2677, 2774, 2800, 2883, 2926, 2891, 2980, 3022, 2981, + 2991, 2924, 2792, 2770, 2739, 2712, 2722, 2683, 2645, 2669, 2667, 2640, 2676, 2664, 2607, + 2673, 2733, 2742, 2777, 2787, 2734, 2749, 2692, 2613, 2655, 2679, 2679, 2669, 2594, 2481, + 2370, 2270, 2153, 2075, 1966, 1835, 1814, 1811, 1783, 1770, 1767, 1751, 1690, 1362, 798, + 519, 1210, 833, 808, 754, 767, 557, 584, 512, 1810, 1653, 1539, 1359, 1390, 1436, 1384, + 1696, 1709, 1478, 1676, 1283, 1298, 1320, 1109, 1293, 1282, 2523, 2600, 2660, 2691, 2723, + 1452, 1538, 1711, 1707, 1767, 1699, 1994, 1937, 2188, 2115, 2177, 1806, 1640, 1503, 1399, + 1315, 949, 899, 970, 474, 520, 583, 631, 358, 403, 526, 641, 746, 565, 534, 728, 804, 740, + 545, 757, 897, 902, 656, 558, 644, 487, 536, 500, 414, 414, 415, 407, 491, 559, 519, 435, + 327, 511, 691, 1018, 1484, 1867, 2042, 1477, 560, 223, 530, 558, 525, 612, 572, 544, 538, + 557, 495, 540, 934, 758, 913, 747, 783, 1016, 777, 716, 611, 661, 721, 630, 741, 833, 793, + 765, 944, 501, 738, 1034, 1221, 930, 758, 1249, 1018, 1405, 1289, 1757, 1701, 778, + ], + [ + 1327, 1648, 2051, 2326, 2340, 2352, 2423, 2446, 2479, 2470, 2349, 2203, 2054, 1869, 1778, + 1943, 2120, 2440, 2652, 2517, 2307, 2123, 2034, 2118, 2332, 2444, 2526, 2585, 2628, 2693, + 2729, 2739, 2790, 2840, 2838, 2800, 2741, 2714, 2661, 2552, 2410, 2184, 1983, 1807, 1406, + 877, 637, 763, 1325, 1761, 2151, 2457, 2662, 2870, 3009, 3069, 3113, 3145, 3163, 3188, + 3207, 3226, 3249, 3263, 3260, 3250, 3204, 3111, 2999, 2925, 2877, 2839, 2826, 2831, 2837, + 2857, 2882, 2927, 2953, 2946, 2948, 2965, 2983, 3019, 3059, 3066, 3034, 2980, 2923, 2870, + 2821, 2763, 2669, 2549, 2450, 2363, 2320, 2284, 2231, 2191, 2167, 2164, 2160, 2162, 2222, + 2286, 2254, 2143, 2010, 1943, 1971, 2038, 1885, 1343, 767, 349, 546, 566, 890, 1028, 643, + 1115, 1270, 1153, 1126, 1096, 567, 634, 594, 625, 1167, 1122, 1639, 1463, 1512, 1516, 1478, + 1231, 1225, 1091, 1274, 1256, 1320, 1964, 1518, 1803, 1994, 1991, 1887, 1820, 1381, 1205, + 1267, 1346, 1156, 1315, 949, 899, 909, 892, 817, 288, 425, 127, 264, 267, 585, 713, 743, + 714, 738, 795, 945, 970, 961, 952, 536, 521, 621, 636, 651, 558, 420, 405, 353, 328, 340, + 360, 300, 345, 369, 378, 449, 579, 474, 710, 1471, 2077, 1841, 1012, 223, 530, 558, 525, + 612, 572, 544, 538, 557, 495, 540, 934, 758, 913, 747, 783, 1016, 777, 716, 611, 661, 721, + 630, 741, 833, 793, 765, 944, 501, 738, 1034, 73, 273, 535, 730, 1010, 1249, 1390, 1274, + 1136, 1327, + ], + [ + 2490, 2578, 2814, 3170, 3473, 3726, 3787, 3761, 3665, 3529, 3454, 3473, 3608, 3651, 3544, + 3324, 3220, 3211, 3164, 3079, 2931, 2873, 2895, 2906, 2894, 2906, 2921, 2914, 2893, 2862, + 2849, 2844, 2827, 2788, 2746, 2676, 2588, 2506, 2409, 2299, 2187, 1960, 1619, 1348, 1142, + 1229, 1541, 1928, 2250, 2469, 2715, 2913, 2984, 3014, 3073, 3160, 3255, 3304, 3357, 3426, + 3474, 3458, 3448, 3460, 3475, 3437, 3345, 3270, 3181, 3088, 3029, 2988, 3000, 3032, 3062, + 3079, 3081, 3080, 3070, 3065, 3057, 3038, 3018, 3001, 2997, 2988, 2950, 2892, 2847, 2812, + 2793, 2780, 2741, 2677, 2620, 2556, 2493, 2430, 2353, 2289, 2261, 2238, 2232, 2237, 2233, + 2180, 2133, 2113, 2091, 1957, 1597, 1410, 984, 295, 767, 349, 546, 566, 890, 1028, 643, + 1115, 1351, 762, 490, 537, 680, 810, 800, 766, 1167, 1122, 1639, 1463, 1512, 1516, 1478, + 1891, 1827, 1786, 1745, 1849, 1802, 1734, 1518, 1803, 1994, 1991, 1887, 1684, 1600, 1440, + 1031, 899, 1156, 258, 459, 899, 909, 348, 366, 333, 425, 281, 278, 320, 484, 533, 593, 718, + 761, 877, 809, 970, 385, 529, 822, 745, 1060, 863, 1063, 1086, 1070, 979, 87, 468, 793, + 329, 440, 485, 327, 494, 965, 1158, 1065, 1411, 1680, 1654, 1244, 753, 223, 530, 558, 525, + 612, 572, 544, 538, 557, 495, 540, 934, 758, 913, 747, 783, 1016, 777, 716, 611, 661, 721, + 630, 741, 833, 793, 765, 944, 951, 995, 1117, 1247, 1393, 1565, 1751, 1983, 2323, 2551, + 2610, 2557, 2490, + ], + [ + 2718, 2761, 2930, 3138, 3341, 3428, 3462, 3509, 3536, 3535, 3490, 3465, 3469, 3410, 3344, + 3286, 3287, 3300, 3276, 3254, 3235, 3231, 3232, 3200, 3148, 3160, 3141, 3097, 3018, 2955, + 2913, 2873, 2817, 2751, 2740, 2710, 2641, 2619, 2573, 2476, 2399, 2221, 2008, 1938, 1872, + 1811, 1939, 2137, 2398, 2766, 2984, 3082, 3133, 3197, 3271, 3323, 3350, 3382, 3455, 3527, + 3570, 3582, 3597, 3599, 3599, 3552, 3479, 3444, 3376, 3270, 3221, 3183, 3172, 3183, 3170, + 3148, 3156, 3151, 3124, 3115, 3112, 3114, 3106, 3064, 2997, 2941, 2881, 2813, 2756, 2704, + 2685, 2676, 2672, 2654, 2636, 2619, 2605, 2564, 2499, 2419, 2353, 2290, 2213, 2156, 2063, + 1915, 1719, 1381, 990, 333, 140, 1410, 984, 295, 767, 349, 546, 566, 890, 1028, 441, 399, + 1371, 1402, 1437, 1465, 1483, 1488, 1502, 1043, 1064, 541, 489, 429, 1512, 1516, 1646, + 1629, 1827, 1786, 1745, 1849, 1802, 1734, 133, 196, 132, 72, 1041, 562, 456, 739, 815, 640, + 904, 931, 674, 924, 1017, 747, 964, 930, 731, 866, 836, 612, 614, 491, 312, 500, 661, 590, + 892, 561, 655, 742, 796, 864, 928, 1022, 1124, 1180, 1180, 1141, 1073, 1025, 970, 869, 766, + 811, 911, 1147, 1480, 1562, 1590, 1582, 1184, 765, 131, 753, 223, 530, 558, 525, 612, 572, + 544, 538, 557, 495, 540, 934, 758, 913, 747, 783, 1016, 777, 716, 611, 661, 721, 630, 741, + 833, 586, 1101, 944, 1759, 1905, 2052, 2206, 2518, 2727, 2792, 2827, 2854, 2949, 2918, + 2849, 2718, + ], + [ + 2835, 2924, 3056, 3216, 3317, 3411, 3456, 3466, 3452, 3420, 3405, 3392, 3375, 3355, 3333, + 3327, 3339, 3346, 3339, 3321, 3296, 3266, 3237, 3211, 3196, 3197, 3178, 3134, 3078, 3024, + 2991, 2951, 2902, 2855, 2835, 2831, 2822, 2798, 2740, 2663, 2581, 2472, 2373, 2307, 2319, + 2418, 2553, 2747, 2954, 3042, 3125, 3170, 3208, 3255, 3306, 3343, 3394, 3461, 3514, 3573, + 3631, 3674, 3722, 3739, 3718, 3664, 3606, 3567, 3512, 3448, 3382, 3321, 3274, 3255, 3232, + 3211, 3192, 3173, 3161, 3159, 3153, 3134, 3113, 3092, 3080, 3061, 2989, 2874, 2767, 2694, + 2661, 2664, 2648, 2624, 2619, 2617, 2618, 2575, 2529, 2490, 2482, 2463, 2414, 2399, 2400, + 2392, 2203, 1728, 1003, 333, 140, 1410, 984, 295, 767, 349, 546, 566, 890, 1028, 441, 399, + 1371, 1402, 1437, 1465, 1483, 1488, 1502, 1043, 1064, 541, 489, 769, 1512, 1516, 1646, + 1629, 1827, 1786, 35, 108, 223, 408, 659, 921, 1279, 1677, 1902, 2117, 2214, 2219, 2220, + 2251, 2286, 2320, 2268, 2176, 2035, 1936, 1901, 1867, 1798, 1688, 1536, 1378, 1281, 1185, + 1115, 1088, 1077, 1098, 1082, 1069, 1070, 1080, 1137, 1214, 1234, 1255, 1283, 1283, 1232, + 1083, 925, 751, 595, 526, 430, 358, 405, 540, 715, 734, 497, 309, 128, 765, 131, 753, 223, + 530, 558, 525, 612, 572, 544, 538, 557, 495, 540, 934, 758, 913, 747, 783, 1016, 777, 716, + 611, 661, 500, 618, 849, 1187, 1519, 1704, 1888, 2078, 2235, 2466, 2666, 2772, 2822, 2841, + 2858, 2880, 2894, 2864, 2840, 2835, + ], + [ + 2908, 3002, 3117, 3237, 3295, 3343, 3365, 3376, 3386, 3388, 3382, 3371, 3362, 3364, 3372, + 3383, 3382, 3374, 3360, 3353, 3349, 3351, 3357, 3363, 3371, 3381, 3388, 3389, 3389, 3369, + 3331, 3265, 3172, 3057, 2992, 2929, 2888, 2871, 2854, 2851, 2869, 2911, 2952, 2996, 3043, + 3091, 3140, 3194, 3242, 3275, 3308, 3333, 3360, 3392, 3434, 3480, 3553, 3624, 3673, 3704, + 3711, 3700, 3687, 3682, 3680, 3671, 3650, 3621, 3576, 3529, 3491, 3446, 3379, 3323, 3249, + 3191, 3171, 3158, 3158, 3145, 3122, 3099, 3086, 3086, 3071, 3051, 2996, 2928, 2869, 2795, + 2726, 2674, 2632, 2619, 2616, 2600, 2545, 2493, 2440, 2428, 2422, 2376, 2312, 2249, 2263, + 2307, 2278, 2122, 1717, 1317, 837, 467, 262, 295, 767, 349, 546, 566, 890, 1028, 441, 399, + 1371, 1402, 1437, 1465, 1483, 1488, 1502, 1043, 1064, 541, 489, 769, 112, 240, 403, 587, + 705, 746, 726, 703, 715, 790, 900, 1005, 1115, 1231, 1313, 1438, 1580, 1669, 1754, 1814, + 1818, 1825, 1828, 1817, 1808, 1798, 1780, 1752, 1715, 1675, 1629, 1579, 1565, 1554, 1567, + 1581, 1589, 1576, 1578, 1608, 1679, 1743, 1776, 1732, 1693, 1736, 1838, 1972, 1938, 1658, + 1215, 666, 241, 24, 117, 178, 170, 138, 51, 58, 69, 94, 128, 765, 131, 753, 223, 530, 558, + 525, 612, 125, 155, 327, 347, 432, 540, 934, 758, 913, 747, 783, 338, 418, 621, 784, 889, + 1009, 1159, 1323, 1543, 1775, 1936, 2130, 2333, 2497, 2668, 2763, 2793, 2794, 2817, 2844, + 2881, 2892, 2876, 2882, 2908, + ], + [ + 2783, 2851, 2938, 3078, 3169, 3236, 3304, 3304, 3317, 3350, 3369, 3403, 3438, 3449, 3461, + 3462, 3478, 3498, 3511, 3533, 3547, 3548, 3555, 3565, 3568, 3579, 3581, 3544, 3534, 3496, + 3443, 3427, 3396, 3347, 3352, 3348, 3315, 3360, 3371, 3349, 3362, 3353, 3322, 3383, 3427, + 3478, 3574, 3633, 3669, 3714, 3740, 3725, 3755, 3748, 3717, 3746, 3756, 3759, 3812, 3813, + 3789, 3775, 3735, 3704, 3674, 3647, 3632, 3588, 3552, 3523, 3465, 3400, 3346, 3276, 3218, + 3198, 3176, 3154, 3141, 3101, 3072, 3077, 3084, 3071, 3070, 2958, 2857, 2787, 2704, 2679, + 2674, 2603, 2543, 2501, 2419, 2410, 2403, 2375, 2337, 2281, 2199, 2194, 2239, 2164, 2101, + 1786, 1421, 770, 356, 101, 837, 467, 262, 295, 767, 349, 546, 566, 890, 1028, 441, 399, + 1371, 1402, 1437, 1465, 1483, 1488, 1502, 1043, 76, 126, 141, 109, 73, 72, 64, 149, 308, + 441, 485, 607, 606, 623, 651, 641, 656, 702, 749, 851, 979, 1086, 1220, 1346, 1407, 1451, + 1506, 1500, 1515, 1565, 1583, 1645, 1720, 1750, 1796, 1834, 1855, 1914, 1968, 2021, 2068, + 2059, 2082, 2113, 2139, 2189, 2226, 2192, 2154, 2100, 2068, 1985, 1902, 1685, 1405, 1022, + 555, 393, 109, 26, 170, 138, 6, 11, 20, 10, 128, 765, 131, 34, 59, 127, 220, 323, 462, 661, + 853, 933, 973, 801, 609, 372, 758, 913, 747, 783, 8, 66, 118, 248, 412, 645, 858, 1148, + 1432, 1700, 1965, 2206, 2427, 2566, 2695, 2743, 2781, 2805, 2836, 2845, 2859, 2836, 2808, + 2789, 2783, + ], + [ + 2784, 2837, 2899, 2987, 3064, 3142, 3191, 3231, 3261, 3289, 3320, 3355, 3386, 3412, 3437, + 3462, 3489, 3520, 3552, 3576, 3590, 3597, 3599, 3606, 3615, 3632, 3651, 3666, 3670, 3675, + 3685, 3682, 3699, 3727, 3729, 3734, 3740, 3720, 3707, 3722, 3726, 3756, 3814, 3841, 3875, + 3914, 3921, 3940, 3968, 3981, 4002, 4011, 3994, 3974, 3949, 3925, 3922, 3932, 3935, 3923, + 3902, 3837, 3758, 3670, 3600, 3526, 3472, 3436, 3405, 3376, 3355, 3324, 3293, 3255, 3209, + 3165, 3134, 3103, 3094, 3093, 3083, 3063, 3034, 2957, 2871, 2815, 2745, 2699, 2676, 2641, + 2571, 2510, 2449, 2391, 2368, 2365, 2330, 2238, 2111, 1941, 1817, 1738, 1764, 1795, 1768, + 1645, 1416, 1010, 356, 101, 837, 467, 262, 295, 767, 349, 546, 566, 890, 1028, 441, 399, + 1371, 1402, 1437, 1465, 1483, 1488, 1502, 1043, 76, 126, 141, 109, 73, 72, 64, 74, 170, + 220, 250, 274, 298, 348, 397, 462, 531, 588, 639, 692, 740, 788, 862, 931, 1006, 1086, + 1151, 1225, 1300, 1382, 1465, 1557, 1637, 1699, 1755, 1810, 1858, 1927, 2006, 2060, 2117, + 2153, 2163, 2176, 2196, 2216, 2224, 2218, 2183, 2066, 1942, 1784, 1597, 1419, 1279, 1112, + 963, 835, 675, 546, 463, 335, 210, 177, 140, 142, 159, 175, 150, 127, 59, 127, 220, 17, 36, + 10, 93, 141, 163, 179, 210, 165, 158, 248, 331, 469, 512, 615, 765, 949, 1069, 1240, 1431, + 1566, 1751, 1955, 2113, 2308, 2493, 2604, 2699, 2759, 2778, 2794, 2803, 2809, 2807, 2795, + 2792, 2785, 2784, + ], + [ + 2743, 2789, 2844, 2904, 2955, 3020, 3071, 3099, 3133, 3164, 3184, 3210, 3239, 3262, 3295, + 3330, 3359, 3398, 3439, 3467, 3498, 3531, 3556, 3587, 3620, 3647, 3682, 3713, 3724, 3738, + 3744, 3742, 3741, 3745, 3752, 3766, 3787, 3805, 3834, 3868, 3895, 3933, 3973, 3999, 4027, + 4055, 4052, 4045, 4035, 4002, 3962, 3925, 3897, 3865, 3848, 3843, 3839, 3831, 3812, 3780, + 3724, 3666, 3593, 3519, 3469, 3435, 3405, 3391, 3384, 3377, 3352, 3316, 3280, 3244, 3201, + 3164, 3147, 3124, 3101, 3078, 3046, 3001, 2963, 2918, 2875, 2844, 2809, 2772, 2735, 2674, + 2610, 2570, 2525, 2478, 2467, 2457, 2439, 2398, 2344, 2293, 2261, 2219, 2198, 2217, 2234, + 2165, 2089, 1953, 1707, 1953, 753, 609, 588, 295, 767, 349, 546, 566, 890, 1028, 441, 399, + 1371, 1402, 1437, 1465, 1483, 1488, 1502, 1043, 76, 126, 141, 109, 73, 72, 66, 141, 225, + 283, 343, 404, 413, 420, 431, 450, 477, 514, 561, 621, 665, 683, 705, 714, 717, 735, 785, + 847, 956, 1086, 1197, 1330, 1464, 1555, 1656, 1762, 1859, 1986, 2114, 2199, 2304, 2379, + 2369, 2356, 2319, 2270, 2213, 2169, 2140, 2095, 2023, 1935, 1782, 1596, 1428, 1212, 995, + 875, 758, 640, 599, 552, 494, 435, 515, 433, 378, 307, 258, 354, 313, 612, 769, 972, 827, + 897, 928, 924, 908, 877, 848, 895, 984, 1076, 1172, 1286, 1390, 1422, 1457, 1501, 1563, + 1634, 1746, 1878, 2038, 2190, 2304, 2432, 2534, 2597, 2662, 2722, 2757, 2781, 2802, 2799, + 2776, 2754, 2747, 2742, 2743, + ], + [ + 2725, 2745, 2768, 2794, 2820, 2858, 2902, 2927, 2957, 2996, 3012, 3037, 3077, 3086, 3115, + 3168, 3181, 3220, 3279, 3297, 3338, 3391, 3407, 3440, 3480, 3487, 3510, 3544, 3541, 3556, + 3594, 3585, 3600, 3646, 3629, 3647, 3693, 3678, 3691, 3728, 3715, 3727, 3756, 3739, 3739, + 3761, 3728, 3712, 3711, 3656, 3625, 3613, 3556, 3523, 3514, 3486, 3470, 3465, 3450, 3443, + 3443, 3418, 3400, 3391, 3361, 3335, 3315, 3286, 3265, 3247, 3227, 3215, 3205, 3194, 3180, + 3162, 3144, 3119, 3087, 3056, 3024, 2996, 2974, 2949, 2923, 2900, 2874, 2843, 2805, 2764, + 2718, 2718, 2712, 2688, 2714, 2733, 2731, 2756, 2726, 2659, 2647, 2606, 2550, 2523, 2521, + 2581, 2588, 2623, 2682, 2644, 2648, 2531, 2410, 2273, 1965, 1886, 1798, 2284, 2179, 2035, + 553, 436, 1371, 1402, 1437, 1465, 1483, 1488, 1502, 1043, 76, 126, 141, 109, 73, 72, 66, + 49, 225, 272, 295, 366, 368, 424, 491, 478, 503, 541, 565, 604, 647, 697, 758, 812, 866, + 921, 942, 1028, 1102, 1121, 1249, 1363, 1418, 1584, 1701, 1769, 1912, 1996, 2025, 2092, + 2127, 2115, 2124, 2122, 2107, 2136, 2145, 2116, 2121, 2102, 2071, 1956, 1820, 1696, 1547, + 1392, 1240, 1121, 1067, 1033, 1010, 1009, 995, 1027, 1016, 924, 951, 926, 860, 941, 965, + 1008, 1152, 1257, 1336, 1411, 1484, 1529, 1529, 1531, 1493, 1558, 1588, 1566, 1665, 1725, + 1746, 1835, 1875, 1884, 1952, 2002, 2037, 2119, 2202, 2280, 2387, 2481, 2554, 2639, 2704, + 2733, 2760, 2780, 2777, 2765, 2753, 2743, 2736, 2729, 2725, + ], + [ + 2716, 2726, 2741, 2758, 2769, 2790, 2817, 2838, 2864, 2886, 2902, 2916, 2929, 2942, 2957, + 2969, 2986, 3008, 3025, 3049, 3078, 3102, 3137, 3170, 3191, 3217, 3237, 3247, 3273, 3285, + 3281, 3293, 3297, 3297, 3311, 3319, 3320, 3337, 3349, 3354, 3375, 3387, 3389, 3407, 3416, + 3412, 3421, 3424, 3422, 3423, 3419, 3413, 3412, 3407, 3392, 3384, 3372, 3353, 3343, 3324, + 3301, 3287, 3266, 3245, 3238, 3226, 3212, 3205, 3196, 3188, 3184, 3178, 3170, 3157, 3141, + 3123, 3110, 3090, 3068, 3051, 3029, 3008, 2990, 2968, 2948, 2927, 2905, 2884, 2862, 2845, + 2830, 2814, 2807, 2812, 2815, 2820, 2821, 2816, 2806, 2795, 2787, 2755, 2715, 2672, 2629, + 2610, 2577, 2556, 2554, 2550, 2564, 2595, 2623, 2663, 2699, 2737, 2787, 2810, 2840, 2866, + 2892, 2869, 2841, 2838, 2792, 2718, 2626, 2467, 2329, 2235, 2022, 1810, 2044, 1875, 1685, + 1557, 1481, 1395, 1306, 1230, 1264, 998, 994, 1072, 1214, 1215, 1654, 1593, 1435, 1500, + 1597, 1572, 1612, 1708, 1699, 1750, 1838, 1847, 1904, 1984, 2005, 2052, 2110, 2134, 2164, + 2177, 2178, 2186, 2194, 2200, 2209, 2219, 2225, 2237, 2240, 2245, 2247, 2220, 2182, 2096, + 1993, 1896, 1767, 1633, 1525, 1411, 1299, 1203, 1167, 1209, 1233, 1271, 1317, 1379, 1458, + 1542, 1603, 1646, 1658, 1655, 1660, 1670, 1659, 1653, 1660, 1659, 1671, 1708, 1737, 1786, + 1841, 1878, 1929, 1979, 2015, 2060, 2109, 2130, 2160, 2196, 2215, 2255, 2311, 2345, 2395, + 2458, 2501, 2559, 2617, 2655, 2701, 2731, 2747, 2751, 2753, 2756, 2750, 2741, 2732, 2722, + 2716, + ], + [ + 2738, 2746, 2755, 2764, 2772, 2781, 2789, 2798, 2807, 2817, 2826, 2837, 2846, 2854, 2862, + 2869, 2877, 2885, 2892, 2903, 2915, 2926, 2936, 2948, 2960, 2972, 2986, 3000, 3012, 3026, + 3040, 3049, 3059, 3069, 3075, 3083, 3093, 3096, 3102, 3109, 3113, 3117, 3124, 3125, 3128, + 3133, 3134, 3137, 3142, 3140, 3141, 3143, 3142, 3143, 3145, 3145, 3146, 3148, 3148, 3149, + 3152, 3154, 3157, 3161, 3163, 3162, 3160, 3153, 3144, 3137, 3129, 3121, 3113, 3100, 3087, + 3073, 3061, 3047, 3034, 3028, 3021, 3017, 3015, 3012, 3009, 3008, 3007, 3005, 3004, 3000, + 2994, 2987, 2979, 2969, 2963, 2954, 2945, 2945, 2944, 2942, 2942, 2941, 2939, 2941, 2943, + 2948, 2955, 2962, 2967, 2966, 2964, 2960, 2960, 2956, 2948, 2950, 2947, 2941, 2943, 2941, + 2933, 2933, 2928, 2918, 2918, 2913, 2903, 2891, 2872, 2842, 2825, 2799, 2769, 2751, 2724, + 2694, 2675, 2649, 2621, 2615, 2603, 2591, 2583, 2571, 2560, 2541, 2519, 2498, 2478, 2456, + 2435, 2404, 2369, 2344, 2323, 2298, 2273, 2267, 2258, 2249, 2244, 2246, 2248, 2265, 2284, + 2300, 2317, 2336, 2349, 2345, 2337, 2326, 2322, 2313, 2300, 2274, 2239, 2189, 2158, 2113, + 2062, 2033, 1990, 1939, 1911, 1884, 1852, 1870, 1881, 1882, 1900, 1911, 1915, 1954, 1990, + 2020, 2057, 2094, 2123, 2147, 2168, 2174, 2190, 2202, 2207, 2219, 2226, 2228, 2240, 2248, + 2253, 2274, 2293, 2309, 2329, 2349, 2366, 2394, 2425, 2454, 2481, 2511, 2540, 2562, 2586, + 2608, 2626, 2648, 2669, 2678, 2689, 2700, 2709, 2716, 2722, 2725, 2728, 2730, 2733, 2736, + 2738, + ], + [ + 2760, 2767, 2777, 2789, 2795, 2804, 2819, 2822, 2832, 2849, 2850, 2859, 2878, 2875, 2883, + 2902, 2898, 2905, 2926, 2920, 2927, 2950, 2942, 2949, 2973, 2961, 2965, 2985, 2973, 2978, + 2996, 2985, 2988, 3007, 2995, 2998, 3018, 3002, 3003, 3019, 3004, 3005, 3019, 3006, 3007, + 3020, 3007, 3007, 3020, 3006, 3005, 3015, 3002, 3001, 3010, 2998, 2997, 3005, 2995, 2993, + 3000, 2991, 2991, 2997, 2989, 2989, 2994, 2987, 2987, 2991, 2986, 2985, 2988, 2986, 2988, + 2995, 2993, 2995, 3002, 3000, 3003, 3010, 3007, 3010, 3017, 3014, 3016, 3022, 3019, 3021, + 3027, 3024, 3026, 3031, 3029, 3030, 3036, 3033, 3035, 3041, 3038, 3039, 3046, 3042, 3044, + 3050, 3046, 3047, 3055, 3052, 3056, 3071, 3064, 3069, 3087, 3077, 3081, 3103, 3089, 3093, + 3119, 3095, 3092, 3112, 3086, 3083, 3105, 3077, 3074, 3098, 3069, 3066, 3091, 3051, 3038, + 3048, 3013, 2999, 3004, 2972, 2959, 2960, 2932, 2918, 2916, 2893, 2880, 2875, 2855, 2842, + 2834, 2818, 2806, 2795, 2783, 2771, 2755, 2755, 2749, 2740, 2740, 2734, 2726, 2724, 2719, + 2711, 2711, 2707, 2698, 2701, 2698, 2690, 2694, 2691, 2682, 2686, 2684, 2674, 2679, 2677, + 2666, 2675, 2675, 2666, 2675, 2675, 2666, 2676, 2676, 2667, 2676, 2676, 2667, 2677, 2678, + 2668, 2678, 2678, 2669, 2679, 2679, 2670, 2679, 2679, 2671, 2677, 2675, 2663, 2671, 2668, + 2655, 2664, 2662, 2648, 2658, 2656, 2640, 2655, 2657, 2646, 2660, 2661, 2652, 2664, 2666, + 2659, 2670, 2673, 2666, 2682, 2689, 2689, 2703, 2710, 2713, 2724, 2731, 2736, 2744, 2752, + 2760, + ], + [ + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, + 2880, + ], +]; diff --git a/crates/rf/apsis-atmosphere/tests/p839.rs b/crates/rf/apsis-atmosphere/tests/p839.rs new file mode 100644 index 0000000..4597840 --- /dev/null +++ b/crates/rf/apsis-atmosphere/tests/p839.rs @@ -0,0 +1,147 @@ +//! Tests for the ITU-R P.839-4 rain height model. +//! +//! The expected values are those of the recommendation's tabulated grid, +//! read at the grid points and interpolated between them. They were produced +//! with the reference implementation of the recommendation. + +use apsis_atmosphere::{ + RAIN_HEIGHT_OFFSET_KM, grid_step_degrees, rain_height, zero_isotherm_height, +}; + +/// The tolerance on an interpolated height, in kilometers. +/// +/// The table is stored in metres, so the interpolation is exact to the +/// resolution the recommendation publishes. +const TOLERANCE: f64 = 1e-9; + +#[test] +fn the_grid_resolution_matches_the_recommendation() { + assert_eq!(grid_step_degrees(), 1.5); +} + +#[test] +fn the_rain_height_offset_matches_the_recommendation() { + assert_eq!(RAIN_HEIGHT_OFFSET_KM, 0.36); +} + +#[test] +fn values_at_grid_points_match_the_recommendation() { + // These are the tabulated values at exact grid points, so no + // interpolation is involved. + let cases = [ + (0.0, 0.0, 4.566), + (45.0, 0.0, 2.356), + (-45.0, 90.0, 1.158), + (90.0, 0.0, 2.096), + (-90.0, 0.0, 2.880), + (60.0, 30.0, 2.086), + (-60.0, 300.0, 0.544), + ]; + for (latitude, longitude, expected) in cases { + let actual = zero_isotherm_height(latitude, longitude).expect("valid coordinates"); + assert!( + (actual - expected).abs() < TOLERANCE, + "({latitude}, {longitude}): got {actual}, expected {expected}" + ); + } +} + +#[test] +fn interpolated_values_match_the_recommendation() { + let cases = [ + (35.7, 139.7, 3.866_48), + (-33.9, 151.2, 3.057_68), + (23.5, 45.0, 3.553_666_666_667), + (89.9, 0.0, 2.118_666_666_667), + (-89.9, 180.0, 2.895_933_333_333), + (10.0, 100.0, 4.676), + ]; + for (latitude, longitude, expected) in cases { + let actual = zero_isotherm_height(latitude, longitude).expect("valid coordinates"); + assert!( + (actual - expected).abs() < 1e-6, + "({latitude}, {longitude}): got {actual}, expected {expected}" + ); + } +} + +#[test] +fn the_rain_height_is_the_isotherm_height_plus_the_offset() { + for (latitude, longitude) in [(0.0, 0.0), (45.0, 30.0), (-20.0, 200.0)] { + let isotherm = zero_isotherm_height(latitude, longitude).expect("valid coordinates"); + let rain = rain_height(latitude, longitude).expect("valid coordinates"); + assert!((rain - isotherm - RAIN_HEIGHT_OFFSET_KM).abs() < TOLERANCE); + } +} + +#[test] +fn longitude_wraps_at_the_seam() { + // The grid runs to 360 degrees, which is the same meridian as zero, so + // the height must be continuous across the seam. + let at_zero = zero_isotherm_height(10.0, 0.0).expect("valid"); + let at_360 = zero_isotherm_height(10.0, 360.0).expect("valid"); + assert!((at_zero - at_360).abs() < TOLERANCE); + + // A negative longitude is the same as its positive equivalent. + let negative = zero_isotherm_height(10.0, -10.0).expect("valid"); + let positive = zero_isotherm_height(10.0, 350.0).expect("valid"); + assert!((negative - positive).abs() < TOLERANCE); +} + +#[test] +fn the_height_is_bounded_by_the_table() { + // Every tabulated value lies between the minimum and maximum of the + // recommendation's global grid, which are about 0.006 km and 6.281 km. + for latitude in [-90.0, -45.0, 0.0, 45.0, 90.0] { + for longitude in [0.0, 90.0, 180.0, 270.0] { + let height = zero_isotherm_height(latitude, longitude).expect("valid coordinates"); + assert!( + (0.0..=7.0).contains(&height), + "({latitude}, {longitude}) gave {height}" + ); + } + } +} + +#[test] +fn the_height_is_continuous_across_the_grid() { + // The interpolation must not jump between neighbouring grid cells. + let mut previous = zero_isotherm_height(0.0, 0.0).expect("valid"); + for step in 1..=240 { + let longitude = step as f64 * 1.5; + let current = zero_isotherm_height(0.0, longitude).expect("valid coordinates"); + assert!( + (current - previous).abs() < 1.0, + "jump at longitude {longitude}: {previous} to {current}" + ); + previous = current; + } +} + +#[test] +fn the_tropics_are_higher_than_the_poles() { + // The isotherm is highest near the equator, where the atmosphere is + // warmest, and lowest at high latitudes. + let equator = zero_isotherm_height(0.0, 100.0).expect("valid"); + let mid_latitude = zero_isotherm_height(50.0, 100.0).expect("valid"); + let pole = zero_isotherm_height(80.0, 100.0).expect("valid"); + assert!(equator > mid_latitude, "{equator} against {mid_latitude}"); + assert!(mid_latitude > pole, "{mid_latitude} against {pole}"); +} + +#[test] +fn invalid_coordinates_are_rejected() { + assert_eq!(zero_isotherm_height(f64::NAN, 0.0), None); + assert_eq!(zero_isotherm_height(0.0, f64::NAN), None); + assert_eq!(zero_isotherm_height(91.0, 0.0), None); + assert_eq!(zero_isotherm_height(-91.0, 0.0), None); + assert_eq!(rain_height(91.0, 0.0), None); + assert_eq!(rain_height(f64::INFINITY, 0.0), None); +} + +#[test] +fn the_poles_are_accepted() { + assert!(zero_isotherm_height(90.0, 0.0).is_some()); + assert!(zero_isotherm_height(-90.0, 0.0).is_some()); + assert!(zero_isotherm_height(90.0, 359.9).is_some()); +} diff --git a/validation/README.md b/validation/README.md index a1938cd..9b62c43 100644 --- a/validation/README.md +++ b/validation/README.md @@ -74,6 +74,10 @@ cargo run -p apsis-rs --features rf --example dump_rain_path \ # ITU-R S.465 参考天线方向图 cargo run -p apsis-rs --features rf --example dump_s465 \ > validation/data/expected/rust_s465.csv + +# ITU-R P.839-4 零度等温线高度 +cargo run -p apsis-rs --features rf --example dump_p839 \ + > validation/data/expected/rust_p839.csv ``` Python 侧读取同一批输入,用参考实现重算并输出误差表: @@ -87,6 +91,7 @@ pixi run python validation/python/atmosphere/check_gas.py pixi run python validation/python/atmosphere/check_rain.py pixi run python validation/python/atmosphere/check_rain_path.py pixi run python validation/python/link/check_s465.py +pixi run python validation/python/atmosphere/check_p839.py ``` 两个脚本都以退出码 0 表示通过、1 表示超差、2 表示缺少输入文件。 @@ -116,6 +121,7 @@ Earth orientation 数据自动下载;本 crate 涉及的换算不需要该数 | `atmosphere/check_rain.py` | 雨衰系数,17 个频率 × 4 组仰角/极化 | `itur` 的 ITU-R P.838-3 实现 | k 7.5e-9,alpha 6.5e-13(相对) | | `atmosphere/check_rain_path.py` | 雨衰斜路径,8 个场景 | ITU-R P.618-13 方程(Python 转写,系数来自 `itur`) | 3.4e-13 km / 4.3e-13 dB | | `link/check_s465.py` | 参考天线方向图,3 种口径 × 8 个离轴角 | ITU-R S.465 方程(Python 转写) | 4.0e-10 dB | +| `atmosphere/check_p839.py` | 零度等温线高度,15 个全球点 | `itur` 的 ITU-R P.839-4 实现 | 3.3e-13 km | ### 关于射频层对拍的说明 @@ -126,7 +132,7 @@ Earth orientation 数据自动下载;本 crate 涉及的换算不需要该数 - 其余以解析性质断言为主:各 crate 的单元测试验证模型必须满足的性质,例如 3 dB 点、 平方律下降、Friis 级联行为、P.838-3 系数在表列频率处的取值。 -所有建议书均采用**现行版本**:P.676-12、P.838-3、P.618-13、S.465。 +所有建议书均采用**现行版本**:P.676-12、P.838-3、P.618-13、P.839-4、S.465。 P.838-3 的系数是闭式曲线拟合,不是已被取代的 P.838-1 数值表。 ### 关于 SGP4 对拍的约定 diff --git a/validation/python/atmosphere/check_p839.py b/validation/python/atmosphere/check_p839.py new file mode 100644 index 0000000..d1c2f5f --- /dev/null +++ b/validation/python/atmosphere/check_p839.py @@ -0,0 +1,105 @@ +"""Cross-check the ApsisRS rain height against ITU-R P.839-4. + +Reads the values written by ``cargo run -p apsis-rs --features rf --example +dump_p839`` and recomputes each one with the ``itur`` package, which +implements the recommendation directly. + +The reference implementation returns a not-a-number value outside the region +its bilinear interpolator covers, which happens near the poles and at the +seam. Those points are reported separately rather than counted as failures, +because the tabulated grid does cover them and the Rust model interpolates +from it. + +The script needs no network access. + +Usage: + + pixi run python validation/python/atmosphere/check_p839.py [path] + +Exit status is zero when every compared value agrees within tolerance and one +otherwise. +""" + +from __future__ import annotations + +import csv +import math +import sys +from pathlib import Path + +import numpy as np + +from itur.models.itu839 import _ITU839_4_ + +# The table is stored in metres, so the interpolation reproduces the +# tabulated values to that resolution. +TOLERANCE_KM = 1e-9 + +DEFAULT_INPUT = Path("validation/data/expected/rust_p839.csv") + + +def read_rows(path: Path) -> list[dict[str, str]]: + """Reads the CSV rows.""" + with path.open(newline="") as handle: + reader = csv.DictReader(handle) + return [row for row in reader if row.get("latitude_deg")] + + +def main(argv: list[str]) -> int: + path = Path(argv[1]) if len(argv) > 1 else DEFAULT_INPUT + if not path.exists(): + print(f"missing input file: {path}", file=sys.stderr) + print( + "generate it with: cargo run -p apsis-rs --features rf " + "--example dump_p839 > " + str(path), + file=sys.stderr, + ) + return 2 + + rows = read_rows(path) + if not rows: + print("input file has no data rows", file=sys.stderr) + return 2 + + model = _ITU839_4_() + worst = 0.0 + worst_at = None + compared = 0 + outside = 0 + + for row in rows: + latitude = float(row["latitude_deg"]) + longitude = float(row["longitude_deg"]) + reference = float( + np.asarray( + model.isoterm_0( + np.array([[latitude]]), np.array([[longitude]]) + ) + ).ravel()[0] + ) + if math.isnan(reference): + # The reference interpolator does not cover this point. + outside += 1 + continue + + actual = float(row["isotherm_km"]) + error = abs(actual - reference) + if error > worst: + worst = error + worst_at = (latitude, longitude) + compared += 1 + + print(f"points compared: {compared}") + print(f"outside the reference: {outside}") + print(f"worst difference: {worst:.3e} km at {worst_at}") + print(f"tolerance: {TOLERANCE_KM:.3e} km") + + if compared > 0 and worst <= TOLERANCE_KM: + print("result: pass") + return 0 + print("result: FAIL") + return 1 + + +if __name__ == "__main__": + raise SystemExit(main(sys.argv)) diff --git a/validation/tools/generate_p839_table.py b/validation/tools/generate_p839_table.py new file mode 100644 index 0000000..2afbd02 --- /dev/null +++ b/validation/tools/generate_p839_table.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 +"""Generate the Rust source for the ITU-R P.839-4 rain height table. + +The recommendation gives the height of the zero degree isotherm as a +tabulated global grid at 1.5 degree resolution. This script reads the grid +from the ``itur`` reference package and emits a Rust module that embeds it as +integer tenths of a kilometre, which is the resolution the recommendation +publishes. + +Usage: + + python validation/tools/generate_p839_table.py > /tmp/p839_table.rs +""" + +from __future__ import annotations + +import sys + +import numpy as np + +BASE = ( + "validation/.pixi/envs/default/lib/python3.12/site-packages/itur/data/839/" +) + +# The grid resolution, in degrees. +STEP_DEGREES = 1.5 + + +def main() -> int: + heights = np.load(BASE + "v4_esa0height.npz")["arr_0"] + latitudes = np.load(BASE + "v4_esalat.npz")["arr_0"] + longitudes = np.load(BASE + "v4_esalon.npz")["arr_0"] + + rows = heights.shape[0] + columns = heights.shape[1] + + # The grid is regular: latitude runs from 90 down to -90 and longitude + # from 0 to 360, both in steps of 1.5 degrees. + assert np.allclose(latitudes[:, 0], np.linspace(90.0, -90.0, rows)), "latitude grid" + assert np.allclose(longitudes[0, :], np.linspace(0.0, 360.0, columns)), "longitude grid" + + # The recommendation publishes the height to the nearest metre, so the + # table is stored in metres to avoid losing precision. + metres = np.round(heights * 1000.0).astype(np.uint16) + + print("/// The height of the zero degree isotherm, in metres.") + print("///") + print("/// The grid runs from 90 degrees north to 90 degrees south in the row") + print("/// direction and from 0 to 360 degrees east in the column direction,") + print("/// both in steps of 1.5 degrees, so there are 121 rows and 241 columns.") + print("/// The value at a fractional latitude or longitude is found by bilinear") + print("/// interpolation between the four surrounding points.") + print("///") + print("/// Source: ITU-R Recommendation P.839-4, *Rain height model for prediction") + print("/// methods*, which tabulates the isotherm height on this grid.") + print(f"pub static ZERO_ISOTHERM_HEIGHT_METRES: [[u16; {columns}]; {rows}] = [") + for row in range(rows): + values = ", ".join(str(int(value)) for value in metres[row]) + print(f" [{values}],") + print("];") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main())