From 7435074c0fdad2c0b7e8f65553f9fc329b20b8ba Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Tue, 14 Apr 2020 12:16:07 +0200 Subject: [PATCH] add CTCSS decoder --- CTCSSDecoder.cpp | 46 ++++++++ CTCSSDecoder.h | 112 ++++++++++++++++++++ HannWindow.h | 268 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 426 insertions(+) create mode 100644 CTCSSDecoder.cpp create mode 100644 CTCSSDecoder.h create mode 100644 HannWindow.h diff --git a/CTCSSDecoder.cpp b/CTCSSDecoder.cpp new file mode 100644 index 0000000..8905b2b --- /dev/null +++ b/CTCSSDecoder.cpp @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2020 by Jonathan Naylor G4KLX / Geoffrey Merck F4FXL - KC3FRA + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "CTCSSDecoder.h" + +CCTCSSDEcoder::CCTCSSDEcoder(const TCTCSSTone& tone, q15_t threshold) : +m_thresholdSquared(threshold * threshold), +m_hasCTCSS(false) +{ + m_goertzel = new CGoertzel(tone.toneLow, tone.tone, tone.toneHi, HANN_WINDOW, HANN_WINDOW_CORR, N_SAMPLES); +} + + +void CCTCSSDEcoder::samples(const q15_t* samples, uint8_t length) +{ + unsigned int f1MagSquared, f2MagSquared, f3MagSquared; + GOERTZEL_RESULT result = m_goertzel->samples(samples, length, &f1MagSquared, &f2MagSquared, &f3MagSquared); + + if(result == GR_READY) { + // Goertzel says it has something for us, so checkt it + // make sure the strongest tone is the wanted one and not the neighbouring tone + m_hasCTCSS = f2MagSquared >= m_thresholdSquared + && f2MagSquared > f1MagSquared + && f2MagSquared > f3MagSquared; + } +} + +bool CCTCSSDEcoder::hasCTCSS() +{ + return m_hasCTCSS; +} diff --git a/CTCSSDecoder.h b/CTCSSDecoder.h new file mode 100644 index 0000000..cf9e5e4 --- /dev/null +++ b/CTCSSDecoder.h @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2020 by Jonathan Naylor G4KLX / Geoffrey Merck F4FXL - KC3FRA + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#if !defined(CTCSSDECODER_H) +#define CTCSSDECODER_H + +#include "Globals.h" +#include "Goertzel.h" +#include "HannWindow.h" + +#define N_SAMPLES 12000 + +typedef struct +{ + TGoertzelParameters toneLow, tone, toneHi; +} TCTCSSTone; + + +/* + * Those are precalculated values (sin, cos, coeff) for ech tone, tone - 2Hz, tone + 2Hz. + * Those are Q15 values but stored in int. This to avoid unnecessary cast during Goertzel calculation. + * We need in since intermediate values in goertzel will overflow Q15 + */ +const TCTCSSTone TONE_067_0 {{558, 32763, 65527}, {575, 32763, 65526}, {592, 32763, 65525}}; +const TCTCSSTone TONE_069_3 {{577, 32763, 65526}, {594, 32763, 65525}, {612, 32762, 65525}}; +const TCTCSSTone TONE_071_9 {{600, 32763, 65525}, {617, 32762, 65524}, {634, 32762, 65524}}; +const TCTCSSTone TONE_074_4 {{621, 32762, 65524}, {638, 32762, 65524}, {655, 32761, 65523}}; +const TCTCSSTone TONE_077_0 {{643, 32762, 65523}, {661, 32761, 65523}, {678, 32761, 65522}}; +const TCTCSSTone TONE_079_7 {{667, 32761, 65522}, {684, 32761, 65522}, {701, 32761, 65521}}; +const TCTCSSTone TONE_082_5 {{691, 32761, 65521}, {708, 32760, 65521}, {725, 32760, 65520}}; +const TCTCSSTone TONE_085_4 {{715, 32760, 65520}, {733, 32760, 65520}, {750, 32759, 65519}}; +const TCTCSSTone TONE_088_5 {{742, 32760, 65519}, {759, 32759, 65518}, {776, 32759, 65518}}; +const TCTCSSTone TONE_091_5 {{768, 32759, 65518}, {785, 32759, 65517}, {802, 32758, 65516}}; +const TCTCSSTone TONE_094_8 {{796, 32758, 65517}, {813, 32758, 65516}, {830, 32757, 65515}}; +const TCTCSSTone TONE_097_4 {{818, 32758, 65516}, {835, 32757, 65515}, {853, 32757, 65514}}; +const TCTCSSTone TONE_100_0 {{841, 32757, 65514}, {858, 32757, 65514}, {875, 32756, 65513}}; +const TCTCSSTone TONE_103_5 {{871, 32756, 65513}, {888, 32756, 65512}, {905, 32756, 65511}}; +const TCTCSSTone TONE_107_2 {{902, 32756, 65511}, {920, 32755, 65510}, {937, 32755, 65509}}; +const TCTCSSTone TONE_110_9 {{934, 32755, 65509}, {951, 32754, 65508}, {968, 32754, 65507}}; +const TCTCSSTone TONE_114_8 {{968, 32754, 65507}, {985, 32753, 65506}, {1002, 32753, 65505}}; +const TCTCSSTone TONE_123_0 {{1038, 32752, 65503}, {1055, 32751, 65502}, {1072, 32750, 65501}}; +const TCTCSSTone TONE_127_3 {{1075, 32750, 65501}, {1092, 32750, 65500}, {1109, 32749, 65498}}; +const TCTCSSTone TONE_131_8 {{1113, 32749, 65498}, {1130, 32748, 65497}, {1148, 32748, 65496}}; +const TCTCSSTone TONE_136_5 {{1154, 32748, 65495}, {1171, 32747, 65494}, {1188, 32746, 65493}}; +const TCTCSSTone TONE_141_3 {{1195, 32746, 65492}, {1212, 32746, 65491}, {1229, 32745, 65490}}; +const TCTCSSTone TONE_146_2 {{1237, 32745, 65489}, {1254, 32744, 65488}, {1271, 32743, 65487}}; +const TCTCSSTone TONE_150_0 {{1269, 32743, 65487}, {1286, 32743, 65485}, {1304, 32742, 65484}}; +const TCTCSSTone TONE_151_4 {{1281, 32743, 65486}, {1298, 32742, 65485}, {1316, 32742, 65483}}; +const TCTCSSTone TONE_156_7 {{1327, 32741, 65482}, {1344, 32740, 65481}, {1361, 32740, 65479}}; +const TCTCSSTone TONE_159_8 {{1353, 32740, 65480}, {1370, 32739, 65479}, {1388, 32739, 65477}}; +const TCTCSSTone TONE_162_2 {{1374, 32739, 65478}, {1391, 32738, 65477}, {1408, 32738, 65475}}; +const TCTCSSTone TONE_165_5 {{1402, 32738, 65476}, {1419, 32737, 65474}, {1436, 32736, 65473}}; +const TCTCSSTone TONE_167_9 {{1423, 32737, 65474}, {1440, 32736, 65473}, {1457, 32736, 65471}}; +const TCTCSSTone TONE_171_3 {{1452, 32736, 65472}, {1469, 32735, 65470}, {1486, 32734, 65469}}; +const TCTCSSTone TONE_173_8 {{1473, 32735, 65470}, {1490, 32734, 65468}, {1508, 32733, 65467}}; +const TCTCSSTone TONE_177_3 {{1503, 32733, 65467}, {1520, 32733, 65465}, {1538, 32732, 65464}}; +const TCTCSSTone TONE_179_9 {{1526, 32732, 65465}, {1543, 32732, 65463}, {1560, 32731, 65462}}; +const TCTCSSTone TONE_183_5 {{1556, 32731, 65462}, {1574, 32730, 65460}, {1591, 32729, 65459}}; +const TCTCSSTone TONE_186_2 {{1580, 32730, 65460}, {1597, 32729, 65458}, {1614, 32728, 65456}}; +const TCTCSSTone TONE_188_8 {{1602, 32729, 65458}, {1619, 32728, 65456}, {1636, 32727, 65454}}; +const TCTCSSTone TONE_189_9 {{1611, 32728, 65457}, {1628, 32728, 65455}, {1646, 32727, 65453}}; +const TCTCSSTone TONE_192_8 {{1636, 32727, 65454}, {1653, 32726, 65453}, {1670, 32725, 65451}}; +const TCTCSSTone TONE_196_6 {{1669, 32725, 65451}, {1686, 32725, 65449}, {1703, 32724, 65447}}; +const TCTCSSTone TONE_199_5 {{1694, 32724, 65448}, {1711, 32723, 65447}, {1728, 32722, 65445}}; +const TCTCSSTone TONE_203_5 {{1728, 32722, 65445}, {1745, 32722, 65443}, {1762, 32721, 65441}}; +const TCTCSSTone TONE_206_5 {{1753, 32721, 65442}, {1771, 32720, 65440}, {1788, 32719, 65438}}; +const TCTCSSTone TONE_210_7 {{1789, 32719, 65438}, {1807, 32718, 65436}, {1824, 32717, 65434}}; +const TCTCSSTone TONE_213_8 {{1816, 32718, 65435}, {1833, 32717, 65433}, {1850, 32716, 65431}}; +const TCTCSSTone TONE_218_1 {{1853, 32716, 65431}, {1870, 32715, 65429}, {1887, 32714, 65427}}; +const TCTCSSTone TONE_221_3 {{1880, 32714, 65428}, {1897, 32713, 65426}, {1915, 32712, 65424}}; +const TCTCSSTone TONE_225_7 {{1918, 32712, 65424}, {1935, 32711, 65422}, {1952, 32710, 65420}}; +const TCTCSSTone TONE_229_1 {{1947, 32710, 65420}, {1964, 32709, 65418}, {1981, 32708, 65416}}; +const TCTCSSTone TONE_233_6 {{1986, 32708, 65416}, {2003, 32707, 65413}, {2020, 32706, 65411}}; +const TCTCSSTone TONE_237_1 {{2016, 32706, 65412}, {2033, 32705, 65410}, {2050, 32704, 65408}}; +const TCTCSSTone TONE_241_8 {{2056, 32703, 65407}, {2073, 32702, 65405}, {2090, 32701, 65403}}; +const TCTCSSTone TONE_245_5 {{2087, 32701, 65403}, {2105, 32700, 65401}, {2122, 32699, 65398}}; +const TCTCSSTone TONE_250_3 {{2129, 32699, 65398}, {2146, 32698, 65395}, {2163, 32697, 65393}}; +const TCTCSSTone TONE_254_1 {{2161, 32697, 65393}, {2178, 32696, 65391}, {2195, 32694, 65389}}; + + + +class CCTCSSDEcoder { +public: + //threshold must be 0.0 to 1.0; + CCTCSSDEcoder(const TCTCSSTone& tone, q15_t threshold); + + void samples(const q15_t* samples, uint8_t length); + bool hasCTCSS(); + +private: + unsigned int m_thresholdSquared; + bool m_hasCTCSS; + CGoertzel* m_goertzel; + +}; + +#endif diff --git a/HannWindow.h b/HannWindow.h new file mode 100644 index 0000000..4df9a5e --- /dev/null +++ b/HannWindow.h @@ -0,0 +1,268 @@ +/* + * Copyright (C) 2020 by Jonathan Naylor G4KLX / Geoffrey Merck F4FXL - KC3FRA + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + +#if !defined(HANNWINDOW_H) +#define HANNWINDOW_H + +/* Hann window value as Q15 yet stored into int to avoid overflowing during calculation */ + +const int HANN_WINDOW_CORR = 16383; + +const int HANN_WINDOW[12000] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5, +6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,11,11,11,12,12,12,13,13,13,14,14,14,15,15,15,16,16,17,17,17,18,18,19,19,19,20,20,21,21,22,22, +22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31,32,32,33,33,34,35,35,36,36,37,37,38,39,39,40,40,41,42,42,43,43,44,45,45,46,47,47,48,49,49,50, +51,51,52,53,53,54,55,55,56,57,57,58,59,60,60,61,62,63,63,64,65,66,66,67,68,69,70,70,71,72,73,74,74,75,76,77,78,78,79,80,81,82,83,84,84,85,86,87,88,89, +90,91,92,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,134,135,136,137,138,139, +140,141,142,144,145,146,147,148,149,150,152,153,154,155,156,157,159,160,161,162,163,165,166,167,168,170,171,172,173,175,176,177,178,180,181,182,183,185,186,187,189,190,191,192,194,195,196,198,199,200, +202,203,204,206,207,209,210,211,213,214,215,217,218,220,221,222,224,225,227,228,229,231,232,234,235,237,238,240,241,243,244,245,247,248,250,251,253,254,256,257,259,261,262,264,265,267,268,270,271,273, +274,276,278,279,281,282,284,285,287,289,290,292,293,295,297,298,300,302,303,305,307,308,310,312,313,315,317,318,320,322,323,325,327,328,330,332,334,335,337,339,340,342,344,346,347,349,351,353,355,356, +358,360,362,363,365,367,369,371,373,374,376,378,380,382,383,385,387,389,391,393,395,397,398,400,402,404,406,408,410,412,414,415,417,419,421,423,425,427,429,431,433,435,437,439,441,443,445,447,449,451, +453,455,457,459,461,463,465,467,469,471,473,475,477,479,481,483,485,487,490,492,494,496,498,500,502,504,506,508,511,513,515,517,519,521,523,526,528,530,532,534,536,539,541,543,545,547,550,552,554,556, +558,561,563,565,567,570,572,574,576,579,581,583,585,588,590,592,594,597,599,601,604,606,608,611,613,615,618,620,622,625,627,629,632,634,636,639,641,643,646,648,651,653,655,658,660,663,665,668,670,672, +675,677,680,682,685,687,690,692,694,697,699,702,704,707,709,712,714,717,719,722,724,727,729,732,735,737,740,742,745,747,750,752,755,758,760,763,765,768,771,773,776,778,781,784,786,789,791,794,797,799, +802,805,807,810,813,815,818,821,823,826,829,831,834,837,840,842,845,848,850,853,856,859,861,864,867,870,872,875,878,881,883,886,889,892,895,897,900,903,906,909,911,914,917,920,923,926,928,931,934,937, +940,943,946,949,951,954,957,960,963,966,969,972,975,978,980,983,986,989,992,995,998,1001,1004,1007,1010,1013,1016,1019,1022,1025,1028,1031,1034,1037,1040,1043,1046,1049,1052,1055,1058,1061,1064,1067,1070,1073,1076,1079,1082,1085, +1088,1091,1095,1098,1101,1104,1107,1110,1113,1116,1119,1122,1126,1129,1132,1135,1138,1141,1144,1148,1151,1154,1157,1160,1163,1167,1170,1173,1176,1179,1183,1186,1189,1192,1195,1199,1202,1205,1208,1211,1215,1218,1221,1224,1228,1231,1234,1238,1241,1244, +1247,1251,1254,1257,1261,1264,1267,1270,1274,1277,1280,1284,1287,1290,1294,1297,1300,1304,1307,1310,1314,1317,1321,1324,1327,1331,1334,1338,1341,1344,1348,1351,1355,1358,1361,1365,1368,1372,1375,1379,1382,1385,1389,1392,1396,1399,1403,1406,1410,1413, +1417,1420,1424,1427,1431,1434,1438,1441,1445,1448,1452,1455,1459,1462,1466,1470,1473,1477,1480,1484,1487,1491,1494,1498,1502,1505,1509,1512,1516,1520,1523,1527,1530,1534,1538,1541,1545,1549,1552,1556,1560,1563,1567,1571,1574,1578,1582,1585,1589,1593, +1596,1600,1604,1607,1611,1615,1619,1622,1626,1630,1633,1637,1641,1645,1648,1652,1656,1660,1663,1667,1671,1675,1679,1682,1686,1690,1694,1698,1701,1705,1709,1713,1717,1720,1724,1728,1732,1736,1740,1743,1747,1751,1755,1759,1763,1767,1770,1774,1778,1782, +1786,1790,1794,1798,1802,1806,1809,1813,1817,1821,1825,1829,1833,1837,1841,1845,1849,1853,1857,1861,1865,1869,1873,1877,1881,1885,1889,1893,1897,1901,1905,1909,1913,1917,1921,1925,1929,1933,1937,1941,1945,1949,1953,1957,1961,1965,1969,1974,1978,1982, +1986,1990,1994,1998,2002,2006,2010,2015,2019,2023,2027,2031,2035,2039,2043,2048,2052,2056,2060,2064,2068,2073,2077,2081,2085,2089,2094,2098,2102,2106,2110,2115,2119,2123,2127,2131,2136,2140,2144,2148,2153,2157,2161,2165,2170,2174,2178,2183,2187,2191, +2195,2200,2204,2208,2213,2217,2221,2226,2230,2234,2238,2243,2247,2251,2256,2260,2265,2269,2273,2278,2282,2286,2291,2295,2299,2304,2308,2313,2317,2321,2326,2330,2335,2339,2343,2348,2352,2357,2361,2366,2370,2375,2379,2383,2388,2392,2397,2401,2406,2410, +2415,2419,2424,2428,2433,2437,2442,2446,2451,2455,2460,2464,2469,2473,2478,2482,2487,2492,2496,2501,2505,2510,2514,2519,2523,2528,2533,2537,2542,2546,2551,2556,2560,2565,2569,2574,2579,2583,2588,2592,2597,2602,2606,2611,2616,2620,2625,2630,2634,2639, +2644,2648,2653,2658,2662,2667,2672,2676,2681,2686,2691,2695,2700,2705,2709,2714,2719,2724,2728,2733,2738,2743,2747,2752,2757,2762,2766,2771,2776,2781,2786,2790,2795,2800,2805,2810,2814,2819,2824,2829,2834,2838,2843,2848,2853,2858,2863,2867,2872,2877, +2882,2887,2892,2897,2901,2906,2911,2916,2921,2926,2931,2936,2941,2945,2950,2955,2960,2965,2970,2975,2980,2985,2990,2995,3000,3005,3010,3015,3020,3024,3029,3034,3039,3044,3049,3054,3059,3064,3069,3074,3079,3084,3089,3094,3099,3104,3109,3114,3119,3125, +3130,3135,3140,3145,3150,3155,3160,3165,3170,3175,3180,3185,3190,3195,3201,3206,3211,3216,3221,3226,3231,3236,3241,3247,3252,3257,3262,3267,3272,3277,3282,3288,3293,3298,3303,3308,3313,3319,3324,3329,3334,3339,3345,3350,3355,3360,3365,3371,3376,3381, +3386,3391,3397,3402,3407,3412,3418,3423,3428,3433,3439,3444,3449,3454,3460,3465,3470,3476,3481,3486,3491,3497,3502,3507,3513,3518,3523,3529,3534,3539,3545,3550,3555,3561,3566,3571,3577,3582,3587,3593,3598,3603,3609,3614,3619,3625,3630,3636,3641,3646, +3652,3657,3663,3668,3673,3679,3684,3690,3695,3701,3706,3711,3717,3722,3728,3733,3739,3744,3750,3755,3761,3766,3771,3777,3782,3788,3793,3799,3804,3810,3815,3821,3826,3832,3837,3843,3848,3854,3860,3865,3871,3876,3882,3887,3893,3898,3904,3909,3915,3921, +3926,3932,3937,3943,3948,3954,3960,3965,3971,3976,3982,3988,3993,3999,4004,4010,4016,4021,4027,4033,4038,4044,4050,4055,4061,4067,4072,4078,4083,4089,4095,4101,4106,4112,4118,4123,4129,4135,4140,4146,4152,4157,4163,4169,4175,4180,4186,4192,4198,4203, +4209,4215,4220,4226,4232,4238,4243,4249,4255,4261,4267,4272,4278,4284,4290,4295,4301,4307,4313,4319,4324,4330,4336,4342,4348,4354,4359,4365,4371,4377,4383,4389,4394,4400,4406,4412,4418,4424,4430,4435,4441,4447,4453,4459,4465,4471,4477,4482,4488,4494, +4500,4506,4512,4518,4524,4530,4536,4542,4548,4553,4559,4565,4571,4577,4583,4589,4595,4601,4607,4613,4619,4625,4631,4637,4643,4649,4655,4661,4667,4673,4679,4685,4691,4697,4703,4709,4715,4721,4727,4733,4739,4745,4751,4757,4763,4769,4775,4781,4787,4793, +4800,4806,4812,4818,4824,4830,4836,4842,4848,4854,4860,4866,4873,4879,4885,4891,4897,4903,4909,4915,4921,4928,4934,4940,4946,4952,4958,4964,4971,4977,4983,4989,4995,5001,5008,5014,5020,5026,5032,5039,5045,5051,5057,5063,5070,5076,5082,5088,5094,5101, +5107,5113,5119,5125,5132,5138,5144,5150,5157,5163,5169,5175,5182,5188,5194,5201,5207,5213,5219,5226,5232,5238,5244,5251,5257,5263,5270,5276,5282,5289,5295,5301,5308,5314,5320,5327,5333,5339,5346,5352,5358,5365,5371,5377,5384,5390,5396,5403,5409,5415, +5422,5428,5435,5441,5447,5454,5460,5467,5473,5479,5486,5492,5499,5505,5511,5518,5524,5531,5537,5544,5550,5556,5563,5569,5576,5582,5589,5595,5602,5608,5614,5621,5627,5634,5640,5647,5653,5660,5666,5673,5679,5686,5692,5699,5705,5712,5718,5725,5731,5738, +5744,5751,5757,5764,5770,5777,5784,5790,5797,5803,5810,5816,5823,5829,5836,5843,5849,5856,5862,5869,5875,5882,5889,5895,5902,5908,5915,5922,5928,5935,5941,5948,5955,5961,5968,5974,5981,5988,5994,6001,6008,6014,6021,6028,6034,6041,6048,6054,6061,6067, +6074,6081,6088,6094,6101,6108,6114,6121,6128,6134,6141,6148,6154,6161,6168,6174,6181,6188,6195,6201,6208,6215,6222,6228,6235,6242,6248,6255,6262,6269,6275,6282,6289,6296,6302,6309,6316,6323,6330,6336,6343,6350,6357,6363,6370,6377,6384,6391,6397,6404, +6411,6418,6425,6431,6438,6445,6452,6459,6466,6472,6479,6486,6493,6500,6507,6513,6520,6527,6534,6541,6548,6555,6561,6568,6575,6582,6589,6596,6603,6610,6616,6623,6630,6637,6644,6651,6658,6665,6672,6679,6685,6692,6699,6706,6713,6720,6727,6734,6741,6748, +6755,6762,6769,6776,6783,6790,6796,6803,6810,6817,6824,6831,6838,6845,6852,6859,6866,6873,6880,6887,6894,6901,6908,6915,6922,6929,6936,6943,6950,6957,6964,6971,6978,6985,6992,6999,7006,7013,7020,7027,7035,7042,7049,7056,7063,7070,7077,7084,7091,7098, +7105,7112,7119,7126,7133,7140,7148,7155,7162,7169,7176,7183,7190,7197,7204,7211,7219,7226,7233,7240,7247,7254,7261,7268,7276,7283,7290,7297,7304,7311,7318,7326,7333,7340,7347,7354,7361,7368,7376,7383,7390,7397,7404,7411,7419,7426,7433,7440,7447,7455, +7462,7469,7476,7483,7491,7498,7505,7512,7519,7527,7534,7541,7548,7556,7563,7570,7577,7584,7592,7599,7606,7613,7621,7628,7635,7642,7650,7657,7664,7671,7679,7686,7693,7701,7708,7715,7722,7730,7737,7744,7752,7759,7766,7773,7781,7788,7795,7803,7810,7817, +7825,7832,7839,7847,7854,7861,7869,7876,7883,7891,7898,7905,7913,7920,7927,7935,7942,7949,7957,7964,7971,7979,7986,7993,8001,8008,8016,8023,8030,8038,8045,8052,8060,8067,8075,8082,8089,8097,8104,8112,8119,8126,8134,8141,8149,8156,8164,8171,8178,8186, +8193,8201,8208,8216,8223,8230,8238,8245,8253,8260,8268,8275,8283,8290,8297,8305,8312,8320,8327,8335,8342,8350,8357,8365,8372,8380,8387,8395,8402,8410,8417,8425,8432,8440,8447,8455,8462,8470,8477,8485,8492,8500,8507,8515,8522,8530,8537,8545,8552,8560, +8568,8575,8583,8590,8598,8605,8613,8620,8628,8635,8643,8651,8658,8666,8673,8681,8688,8696,8704,8711,8719,8726,8734,8742,8749,8757,8764,8772,8779,8787,8795,8802,8810,8817,8825,8833,8840,8848,8856,8863,8871,8878,8886,8894,8901,8909,8917,8924,8932,8940, +8947,8955,8962,8970,8978,8985,8993,9001,9008,9016,9024,9031,9039,9047,9054,9062,9070,9077,9085,9093,9100,9108,9116,9124,9131,9139,9147,9154,9162,9170,9177,9185,9193,9201,9208,9216,9224,9231,9239,9247,9255,9262,9270,9278,9285,9293,9301,9309,9316,9324, +9332,9340,9347,9355,9363,9371,9378,9386,9394,9402,9409,9417,9425,9433,9440,9448,9456,9464,9472,9479,9487,9495,9503,9511,9518,9526,9534,9542,9549,9557,9565,9573,9581,9588,9596,9604,9612,9620,9628,9635,9643,9651,9659,9667,9674,9682,9690,9698,9706,9714, +9721,9729,9737,9745,9753,9761,9769,9776,9784,9792,9800,9808,9816,9824,9831,9839,9847,9855,9863,9871,9879,9886,9894,9902,9910,9918,9926,9934,9942,9950,9957,9965,9973,9981,9989,9997,10005,10013,10021,10029,10036,10044,10052,10060,10068,10076,10084,10092,10100,10108, +10116,10124,10131,10139,10147,10155,10163,10171,10179,10187,10195,10203,10211,10219,10227,10235,10243,10251,10259,10267,10274,10282,10290,10298,10306,10314,10322,10330,10338,10346,10354,10362,10370,10378,10386,10394,10402,10410,10418,10426,10434,10442,10450,10458,10466,10474,10482,10490,10498,10506, +10514,10522,10530,10538,10546,10554,10562,10570,10578,10586,10594,10602,10610,10618,10626,10634,10642,10650,10658,10667,10675,10683,10691,10699,10707,10715,10723,10731,10739,10747,10755,10763,10771,10779,10787,10795,10803,10811,10820,10828,10836,10844,10852,10860,10868,10876,10884,10892,10900,10908, +10916,10925,10933,10941,10949,10957,10965,10973,10981,10989,10997,11006,11014,11022,11030,11038,11046,11054,11062,11070,11079,11087,11095,11103,11111,11119,11127,11135,11144,11152,11160,11168,11176,11184,11192,11200,11209,11217,11225,11233,11241,11249,11257,11266,11274,11282,11290,11298,11306,11315, +11323,11331,11339,11347,11355,11364,11372,11380,11388,11396,11404,11413,11421,11429,11437,11445,11453,11462,11470,11478,11486,11494,11503,11511,11519,11527,11535,11544,11552,11560,11568,11576,11585,11593,11601,11609,11617,11626,11634,11642,11650,11658,11667,11675,11683,11691,11699,11708,11716,11724, +11732,11741,11749,11757,11765,11774,11782,11790,11798,11806,11815,11823,11831,11839,11848,11856,11864,11872,11881,11889,11897,11905,11914,11922,11930,11938,11947,11955,11963,11971,11980,11988,11996,12005,12013,12021,12029,12038,12046,12054,12062,12071,12079,12087,12096,12104,12112,12120,12129,12137, +12145,12154,12162,12170,12178,12187,12195,12203,12212,12220,12228,12236,12245,12253,12261,12270,12278,12286,12295,12303,12311,12320,12328,12336,12344,12353,12361,12369,12378,12386,12394,12403,12411,12419,12428,12436,12444,12453,12461,12469,12478,12486,12494,12503,12511,12519,12528,12536,12544,12553, +12561,12569,12578,12586,12594,12603,12611,12619,12628,12636,12644,12653,12661,12670,12678,12686,12695,12703,12711,12720,12728,12736,12745,12753,12762,12770,12778,12787,12795,12803,12812,12820,12828,12837,12845,12854,12862,12870,12879,12887,12896,12904,12912,12921,12929,12937,12946,12954,12963,12971, +12979,12988,12996,13005,13013,13021,13030,13038,13047,13055,13063,13072,13080,13089,13097,13105,13114,13122,13131,13139,13147,13156,13164,13173,13181,13189,13198,13206,13215,13223,13232,13240,13248,13257,13265,13274,13282,13291,13299,13307,13316,13324,13333,13341,13350,13358,13366,13375,13383,13392, +13400,13409,13417,13425,13434,13442,13451,13459,13468,13476,13485,13493,13501,13510,13518,13527,13535,13544,13552,13561,13569,13577,13586,13594,13603,13611,13620,13628,13637,13645,13654,13662,13670,13679,13687,13696,13704,13713,13721,13730,13738,13747,13755,13764,13772,13781,13789,13797,13806,13814, +13823,13831,13840,13848,13857,13865,13874,13882,13891,13899,13908,13916,13925,13933,13942,13950,13959,13967,13976,13984,13992,14001,14009,14018,14026,14035,14043,14052,14060,14069,14077,14086,14094,14103,14111,14120,14128,14137,14145,14154,14162,14171,14179,14188,14196,14205,14213,14222,14230,14239, +14247,14256,14264,14273,14281,14290,14298,14307,14315,14324,14332,14341,14350,14358,14367,14375,14384,14392,14401,14409,14418,14426,14435,14443,14452,14460,14469,14477,14486,14494,14503,14511,14520,14528,14537,14545,14554,14563,14571,14580,14588,14597,14605,14614,14622,14631,14639,14648,14656,14665, +14673,14682,14690,14699,14708,14716,14725,14733,14742,14750,14759,14767,14776,14784,14793,14801,14810,14819,14827,14836,14844,14853,14861,14870,14878,14887,14895,14904,14912,14921,14930,14938,14947,14955,14964,14972,14981,14989,14998,15006,15015,15024,15032,15041,15049,15058,15066,15075,15083,15092, +15101,15109,15118,15126,15135,15143,15152,15160,15169,15178,15186,15195,15203,15212,15220,15229,15237,15246,15255,15263,15272,15280,15289,15297,15306,15314,15323,15332,15340,15349,15357,15366,15374,15383,15392,15400,15409,15417,15426,15434,15443,15451,15460,15469,15477,15486,15494,15503,15511,15520, +15529,15537,15546,15554,15563,15571,15580,15589,15597,15606,15614,15623,15631,15640,15649,15657,15666,15674,15683,15691,15700,15709,15717,15726,15734,15743,15751,15760,15769,15777,15786,15794,15803,15811,15820,15829,15837,15846,15854,15863,15871,15880,15889,15897,15906,15914,15923,15931,15940,15949, +15957,15966,15974,15983,15992,16000,16009,16017,16026,16034,16043,16052,16060,16069,16077,16086,16094,16103,16112,16120,16129,16137,16146,16155,16163,16172,16180,16189,16197,16206,16215,16223,16232,16240,16249,16257,16266,16275,16283,16292,16300,16309,16318,16326,16335,16343,16352,16360,16369,16378, +16386,16395,16403,16412,16420,16429,16438,16446,16455,16463,16472,16481,16489,16498,16506,16515,16523,16532,16541,16549,16558,16566,16575,16583,16592,16601,16609,16618,16626,16635,16644,16652,16661,16669,16678,16686,16695,16704,16712,16721,16729,16738,16746,16755,16764,16772,16781,16789,16798,16806, +16815,16824,16832,16841,16849,16858,16867,16875,16884,16892,16901,16909,16918,16927,16935,16944,16952,16961,16969,16978,16987,16995,17004,17012,17021,17029,17038,17047,17055,17064,17072,17081,17089,17098,17107,17115,17124,17132,17141,17149,17158,17167,17175,17184,17192,17201,17209,17218,17227,17235, +17244,17252,17261,17269,17278,17287,17295,17304,17312,17321,17329,17338,17346,17355,17364,17372,17381,17389,17398,17406,17415,17424,17432,17441,17449,17458,17466,17475,17483,17492,17501,17509,17518,17526,17535,17543,17552,17561,17569,17578,17586,17595,17603,17612,17620,17629,17638,17646,17655,17663, +17672,17680,17689,17697,17706,17714,17723,17732,17740,17749,17757,17766,17774,17783,17791,17800,17809,17817,17826,17834,17843,17851,17860,17868,17877,17885,17894,17903,17911,17920,17928,17937,17945,17954,17962,17971,17979,17988,17996,18005,18014,18022,18031,18039,18048,18056,18065,18073,18082,18090, +18099,18107,18116,18124,18133,18142,18150,18159,18167,18176,18184,18193,18201,18210,18218,18227,18235,18244,18252,18261,18269,18278,18286,18295,18304,18312,18321,18329,18338,18346,18355,18363,18372,18380,18389,18397,18406,18414,18423,18431,18440,18448,18457,18465,18474,18482,18491,18499,18508,18516, +18525,18533,18542,18550,18559,18567,18576,18584,18593,18601,18610,18618,18627,18635,18644,18652,18661,18669,18678,18686,18695,18703,18712,18720,18729,18737,18746,18754,18763,18771,18780,18788,18797,18805,18814,18822,18831,18839,18848,18856,18865,18873,18882,18890,18898,18907,18915,18924,18932,18941, +18949,18958,18966,18975,18983,18992,19000,19009,19017,19026,19034,19043,19051,19059,19068,19076,19085,19093,19102,19110,19119,19127,19136,19144,19153,19161,19169,19178,19186,19195,19203,19212,19220,19229,19237,19245,19254,19262,19271,19279,19288,19296,19305,19313,19321,19330,19338,19347,19355,19364, +19372,19381,19389,19397,19406,19414,19423,19431,19440,19448,19456,19465,19473,19482,19490,19499,19507,19515,19524,19532,19541,19549,19557,19566,19574,19583,19591,19600,19608,19616,19625,19633,19642,19650,19658,19667,19675,19684,19692,19700,19709,19717,19726,19734,19742,19751,19759,19768,19776,19784, +19793,19801,19810,19818,19826,19835,19843,19852,19860,19868,19877,19885,19893,19902,19910,19919,19927,19935,19944,19952,19960,19969,19977,19986,19994,20002,20011,20019,20027,20036,20044,20052,20061,20069,20078,20086,20094,20103,20111,20119,20128,20136,20144,20153,20161,20169,20178,20186,20194,20203, +20211,20220,20228,20236,20245,20253,20261,20270,20278,20286,20295,20303,20311,20320,20328,20336,20345,20353,20361,20369,20378,20386,20394,20403,20411,20419,20428,20436,20444,20453,20461,20469,20478,20486,20494,20502,20511,20519,20527,20536,20544,20552,20561,20569,20577,20585,20594,20602,20610,20619, +20627,20635,20643,20652,20660,20668,20677,20685,20693,20701,20710,20718,20726,20735,20743,20751,20759,20768,20776,20784,20792,20801,20809,20817,20825,20834,20842,20850,20858,20867,20875,20883,20891,20900,20908,20916,20924,20933,20941,20949,20957,20966,20974,20982,20990,20999,21007,21015,21023,21032, +21040,21048,21056,21064,21073,21081,21089,21097,21106,21114,21122,21130,21138,21147,21155,21163,21171,21179,21188,21196,21204,21212,21220,21229,21237,21245,21253,21261,21270,21278,21286,21294,21302,21310,21319,21327,21335,21343,21351,21360,21368,21376,21384,21392,21400,21409,21417,21425,21433,21441, +21449,21458,21466,21474,21482,21490,21498,21506,21515,21523,21531,21539,21547,21555,21563,21572,21580,21588,21596,21604,21612,21620,21629,21637,21645,21653,21661,21669,21677,21685,21694,21702,21710,21718,21726,21734,21742,21750,21758,21767,21775,21783,21791,21799,21807,21815,21823,21831,21839,21847, +21856,21864,21872,21880,21888,21896,21904,21912,21920,21928,21936,21944,21952,21961,21969,21977,21985,21993,22001,22009,22017,22025,22033,22041,22049,22057,22065,22073,22081,22089,22097,22106,22114,22122,22130,22138,22146,22154,22162,22170,22178,22186,22194,22202,22210,22218,22226,22234,22242,22250, +22258,22266,22274,22282,22290,22298,22306,22314,22322,22330,22338,22346,22354,22362,22370,22378,22386,22394,22402,22410,22418,22426,22434,22442,22450,22458,22466,22474,22482,22490,22498,22505,22513,22521,22529,22537,22545,22553,22561,22569,22577,22585,22593,22601,22609,22617,22625,22633,22641,22648, +22656,22664,22672,22680,22688,22696,22704,22712,22720,22728,22736,22743,22751,22759,22767,22775,22783,22791,22799,22807,22815,22822,22830,22838,22846,22854,22862,22870,22878,22885,22893,22901,22909,22917,22925,22933,22941,22948,22956,22964,22972,22980,22988,22996,23003,23011,23019,23027,23035,23043, +23050,23058,23066,23074,23082,23090,23097,23105,23113,23121,23129,23137,23144,23152,23160,23168,23176,23183,23191,23199,23207,23215,23222,23230,23238,23246,23254,23261,23269,23277,23285,23293,23300,23308,23316,23324,23331,23339,23347,23355,23362,23370,23378,23386,23393,23401,23409,23417,23424,23432, +23440,23448,23455,23463,23471,23479,23486,23494,23502,23510,23517,23525,23533,23540,23548,23556,23564,23571,23579,23587,23594,23602,23610,23618,23625,23633,23641,23648,23656,23664,23671,23679,23687,23694,23702,23710,23717,23725,23733,23740,23748,23756,23763,23771,23779,23786,23794,23802,23809,23817, +23825,23832,23840,23848,23855,23863,23870,23878,23886,23893,23901,23909,23916,23924,23931,23939,23947,23954,23962,23970,23977,23985,23992,24000,24008,24015,24023,24030,24038,24045,24053,24061,24068,24076,24083,24091,24098,24106,24114,24121,24129,24136,24144,24151,24159,24167,24174,24182,24189,24197, +24204,24212,24219,24227,24234,24242,24249,24257,24264,24272,24280,24287,24295,24302,24310,24317,24325,24332,24340,24347,24355,24362,24370,24377,24385,24392,24400,24407,24414,24422,24429,24437,24444,24452,24459,24467,24474,24482,24489,24497,24504,24512,24519,24526,24534,24541,24549,24556,24564,24571, +24578,24586,24593,24601,24608,24616,24623,24630,24638,24645,24653,24660,24667,24675,24682,24690,24697,24704,24712,24719,24727,24734,24741,24749,24756,24763,24771,24778,24786,24793,24800,24808,24815,24822,24830,24837,24844,24852,24859,24866,24874,24881,24888,24896,24903,24910,24918,24925,24932,24940, +24947,24954,24962,24969,24976,24984,24991,24998,25006,25013,25020,25027,25035,25042,25049,25057,25064,25071,25078,25086,25093,25100,25107,25115,25122,25129,25136,25144,25151,25158,25165,25173,25180,25187,25194,25202,25209,25216,25223,25231,25238,25245,25252,25259,25267,25274,25281,25288,25295,25303, +25310,25317,25324,25331,25339,25346,25353,25360,25367,25374,25382,25389,25396,25403,25410,25417,25425,25432,25439,25446,25453,25460,25468,25475,25482,25489,25496,25503,25510,25517,25525,25532,25539,25546,25553,25560,25567,25574,25581,25589,25596,25603,25610,25617,25624,25631,25638,25645,25652,25659, +25666,25674,25681,25688,25695,25702,25709,25716,25723,25730,25737,25744,25751,25758,25765,25772,25779,25786,25793,25800,25807,25814,25821,25828,25835,25842,25849,25856,25863,25870,25877,25884,25891,25898,25905,25912,25919,25926,25933,25940,25947,25954,25961,25968,25975,25982,25989,25996,26003,26010, +26017,26024,26031,26038,26044,26051,26058,26065,26072,26079,26086,26093,26100,26107,26114,26121,26127,26134,26141,26148,26155,26162,26169,26176,26182,26189,26196,26203,26210,26217,26224,26231,26237,26244,26251,26258,26265,26272,26278,26285,26292,26299,26306,26313,26319,26326,26333,26340,26347,26354, +26360,26367,26374,26381,26388,26394,26401,26408,26415,26421,26428,26435,26442,26449,26455,26462,26469,26476,26482,26489,26496,26503,26509,26516,26523,26530,26536,26543,26550,26557,26563,26570,26577,26583,26590,26597,26604,26610,26617,26624,26630,26637,26644,26650,26657,26664,26670,26677,26684,26691, +26697,26704,26711,26717,26724,26730,26737,26744,26750,26757,26764,26770,26777,26784,26790,26797,26803,26810,26817,26823,26830,26837,26843,26850,26856,26863,26870,26876,26883,26889,26896,26902,26909,26916,26922,26929,26935,26942,26948,26955,26962,26968,26975,26981,26988,26994,27001,27007,27014,27020, +27027,27033,27040,27046,27053,27059,27066,27073,27079,27086,27092,27098,27105,27111,27118,27124,27131,27137,27144,27150,27157,27163,27170,27176,27183,27189,27196,27202,27208,27215,27221,27228,27234,27241,27247,27253,27260,27266,27273,27279,27285,27292,27298,27305,27311,27317,27324,27330,27337,27343, +27349,27356,27362,27368,27375,27381,27388,27394,27400,27407,27413,27419,27426,27432,27438,27445,27451,27457,27464,27470,27476,27483,27489,27495,27501,27508,27514,27520,27527,27533,27539,27546,27552,27558,27564,27571,27577,27583,27589,27596,27602,27608,27614,27621,27627,27633,27639,27646,27652,27658, +27664,27671,27677,27683,27689,27695,27702,27708,27714,27720,27726,27733,27739,27745,27751,27757,27763,27770,27776,27782,27788,27794,27800,27807,27813,27819,27825,27831,27837,27843,27850,27856,27862,27868,27874,27880,27886,27892,27898,27905,27911,27917,27923,27929,27935,27941,27947,27953,27959,27965, +27972,27978,27984,27990,27996,28002,28008,28014,28020,28026,28032,28038,28044,28050,28056,28062,28068,28074,28080,28086,28092,28098,28104,28110,28116,28122,28128,28134,28140,28146,28152,28158,28164,28170,28176,28182,28188,28194,28200,28206,28212,28218,28223,28229,28235,28241,28247,28253,28259,28265, +28271,28277,28283,28288,28294,28300,28306,28312,28318,28324,28330,28336,28341,28347,28353,28359,28365,28371,28377,28382,28388,28394,28400,28406,28412,28417,28423,28429,28435,28441,28446,28452,28458,28464,28470,28475,28481,28487,28493,28499,28504,28510,28516,28522,28527,28533,28539,28545,28550,28556, +28562,28568,28573,28579,28585,28591,28596,28602,28608,28613,28619,28625,28631,28636,28642,28648,28653,28659,28665,28670,28676,28682,28687,28693,28699,28704,28710,28716,28721,28727,28733,28738,28744,28749,28755,28761,28766,28772,28778,28783,28789,28794,28800,28806,28811,28817,28822,28828,28834,28839, +28845,28850,28856,28861,28867,28872,28878,28884,28889,28895,28900,28906,28911,28917,28922,28928,28933,28939,28944,28950,28955,28961,28966,28972,28977,28983,28988,28994,28999,29005,29010,29016,29021,29027,29032,29038,29043,29048,29054,29059,29065,29070,29076,29081,29086,29092,29097,29103,29108,29113, +29119,29124,29130,29135,29140,29146,29151,29157,29162,29167,29173,29178,29183,29189,29194,29199,29205,29210,29215,29221,29226,29231,29237,29242,29247,29253,29258,29263,29269,29274,29279,29285,29290,29295,29300,29306,29311,29316,29321,29327,29332,29337,29342,29348,29353,29358,29363,29369,29374,29379, +29384,29390,29395,29400,29405,29410,29416,29421,29426,29431,29436,29442,29447,29452,29457,29462,29467,29473,29478,29483,29488,29493,29498,29504,29509,29514,29519,29524,29529,29534,29539,29545,29550,29555,29560,29565,29570,29575,29580,29585,29590,29595,29601,29606,29611,29616,29621,29626,29631,29636, +29641,29646,29651,29656,29661,29666,29671,29676,29681,29686,29691,29696,29701,29706,29711,29716,29721,29726,29731,29736,29741,29746,29751,29756,29761,29766,29771,29776,29781,29786,29791,29795,29800,29805,29810,29815,29820,29825,29830,29835,29840,29845,29849,29854,29859,29864,29869,29874,29879,29884, +29888,29893,29898,29903,29908,29913,29918,29922,29927,29932,29937,29942,29946,29951,29956,29961,29966,29970,29975,29980,29985,29990,29994,29999,30004,30009,30013,30018,30023,30028,30033,30037,30042,30047,30051,30056,30061,30066,30070,30075,30080,30084,30089,30094,30099,30103,30108,30113,30117,30122, +30127,30131,30136,30141,30145,30150,30155,30159,30164,30169,30173,30178,30182,30187,30192,30196,30201,30206,30210,30215,30219,30224,30229,30233,30238,30242,30247,30251,30256,30261,30265,30270,30274,30279,30283,30288,30292,30297,30301,30306,30311,30315,30320,30324,30329,30333,30338,30342,30347,30351, +30356,30360,30364,30369,30373,30378,30382,30387,30391,30396,30400,30405,30409,30413,30418,30422,30427,30431,30436,30440,30444,30449,30453,30458,30462,30466,30471,30475,30479,30484,30488,30493,30497,30501,30506,30510,30514,30519,30523,30527,30532,30536,30540,30545,30549,30553,30558,30562,30566,30570, +30575,30579,30583,30588,30592,30596,30600,30605,30609,30613,30617,30622,30626,30630,30634,30639,30643,30647,30651,30656,30660,30664,30668,30672,30677,30681,30685,30689,30693,30697,30702,30706,30710,30714,30718,30722,30727,30731,30735,30739,30743,30747,30751,30756,30760,30764,30768,30772,30776,30780, +30784,30788,30792,30797,30801,30805,30809,30813,30817,30821,30825,30829,30833,30837,30841,30845,30849,30853,30857,30861,30865,30869,30873,30877,30881,30885,30889,30893,30897,30901,30905,30909,30913,30917,30921,30925,30929,30933,30937,30941,30945,30949,30953,30957,30960,30964,30968,30972,30976,30980, +30984,30988,30992,30996,30999,31003,31007,31011,31015,31019,31023,31026,31030,31034,31038,31042,31046,31050,31053,31057,31061,31065,31069,31072,31076,31080,31084,31088,31091,31095,31099,31103,31106,31110,31114,31118,31121,31125,31129,31133,31136,31140,31144,31148,31151,31155,31159,31162,31166,31170, +31174,31177,31181,31185,31188,31192,31196,31199,31203,31207,31210,31214,31218,31221,31225,31228,31232,31236,31239,31243,31247,31250,31254,31257,31261,31265,31268,31272,31275,31279,31282,31286,31290,31293,31297,31300,31304,31307,31311,31314,31318,31321,31325,31329,31332,31336,31339,31343,31346,31350, +31353,31357,31360,31363,31367,31370,31374,31377,31381,31384,31388,31391,31395,31398,31401,31405,31408,31412,31415,31419,31422,31425,31429,31432,31436,31439,31442,31446,31449,31452,31456,31459,31463,31466,31469,31473,31476,31479,31483,31486,31489,31493,31496,31499,31503,31506,31509,31512,31516,31519, +31522,31526,31529,31532,31535,31539,31542,31545,31548,31552,31555,31558,31561,31565,31568,31571,31574,31577,31581,31584,31587,31590,31593,31597,31600,31603,31606,31609,31613,31616,31619,31622,31625,31628,31631,31635,31638,31641,31644,31647,31650,31653,31656,31660,31663,31666,31669,31672,31675,31678, +31681,31684,31687,31690,31693,31696,31700,31703,31706,31709,31712,31715,31718,31721,31724,31727,31730,31733,31736,31739,31742,31745,31748,31751,31754,31757,31760,31763,31766,31768,31771,31774,31777,31780,31783,31786,31789,31792,31795,31798,31801,31804,31806,31809,31812,31815,31818,31821,31824,31827, +31830,31832,31835,31838,31841,31844,31847,31849,31852,31855,31858,31861,31864,31866,31869,31872,31875,31878,31880,31883,31886,31889,31891,31894,31897,31900,31902,31905,31908,31911,31913,31916,31919,31922,31924,31927,31930,31933,31935,31938,31941,31943,31946,31949,31951,31954,31957,31959,31962,31965, +31967,31970,31973,31975,31978,31980,31983,31986,31988,31991,31994,31996,31999,32001,32004,32007,32009,32012,32014,32017,32019,32022,32025,32027,32030,32032,32035,32037,32040,32042,32045,32047,32050,32052,32055,32057,32060,32062,32065,32067,32070,32072,32075,32077,32080,32082,32085,32087,32090,32092, +32094,32097,32099,32102,32104,32107,32109,32111,32114,32116,32119,32121,32123,32126,32128,32130,32133,32135,32138,32140,32142,32145,32147,32149,32152,32154,32156,32159,32161,32163,32166,32168,32170,32172,32175,32177,32179,32182,32184,32186,32188,32191,32193,32195,32197,32200,32202,32204,32206,32209, +32211,32213,32215,32217,32220,32222,32224,32226,32228,32231,32233,32235,32237,32239,32241,32244,32246,32248,32250,32252,32254,32256,32259,32261,32263,32265,32267,32269,32271,32273,32275,32277,32280,32282,32284,32286,32288,32290,32292,32294,32296,32298,32300,32302,32304,32306,32308,32310,32312,32314, +32316,32318,32320,32322,32324,32326,32328,32330,32332,32334,32336,32338,32340,32342,32344,32346,32348,32350,32352,32353,32355,32357,32359,32361,32363,32365,32367,32369,32371,32372,32374,32376,32378,32380,32382,32384,32385,32387,32389,32391,32393,32395,32396,32398,32400,32402,32404,32405,32407,32409, +32411,32413,32414,32416,32418,32420,32421,32423,32425,32427,32428,32430,32432,32434,32435,32437,32439,32440,32442,32444,32446,32447,32449,32451,32452,32454,32456,32457,32459,32461,32462,32464,32466,32467,32469,32470,32472,32474,32475,32477,32479,32480,32482,32483,32485,32487,32488,32490,32491,32493, +32494,32496,32497,32499,32501,32502,32504,32505,32507,32508,32510,32511,32513,32514,32516,32517,32519,32520,32522,32523,32525,32526,32528,32529,32531,32532,32533,32535,32536,32538,32539,32541,32542,32544,32545,32546,32548,32549,32551,32552,32553,32555,32556,32557,32559,32560,32562,32563,32564,32566, +32567,32568,32570,32571,32572,32574,32575,32576,32578,32579,32580,32581,32583,32584,32585,32587,32588,32589,32590,32592,32593,32594,32595,32597,32598,32599,32600,32601,32603,32604,32605,32606,32608,32609,32610,32611,32612,32613,32615,32616,32617,32618,32619,32620,32622,32623,32624,32625,32626,32627, +32628,32629,32631,32632,32633,32634,32635,32636,32637,32638,32639,32640,32641,32643,32644,32645,32646,32647,32648,32649,32650,32651,32652,32653,32654,32655,32656,32657,32658,32659,32660,32661,32662,32663,32664,32665,32666,32667,32668,32669,32670,32670,32671,32672,32673,32674,32675,32676,32677,32678, +32679,32680,32680,32681,32682,32683,32684,32685,32686,32687,32687,32688,32689,32690,32691,32692,32692,32693,32694,32695,32696,32696,32697,32698,32699,32700,32700,32701,32702,32703,32704,32704,32705,32706,32707,32707,32708,32709,32709,32710,32711,32712,32712,32713,32714,32714,32715,32716,32716,32717, +32718,32718,32719,32720,32720,32721,32722,32722,32723,32724,32724,32725,32726,32726,32727,32727,32728,32729,32729,32730,32730,32731,32731,32732,32733,32733,32734,32734,32735,32735,32736,32736,32737,32738,32738,32739,32739,32740,32740,32741,32741,32742,32742,32743,32743,32743,32744,32744,32745,32745, +32746,32746,32747,32747,32748,32748,32748,32749,32749,32750,32750,32750,32751,32751,32752,32752,32752,32753,32753,32753,32754,32754,32755,32755,32755,32756,32756,32756,32757,32757,32757,32757,32758,32758,32758,32759,32759,32759,32760,32760,32760,32760,32761,32761,32761,32761,32762,32762,32762,32762, +32762,32763,32763,32763,32763,32764,32764,32764,32764,32764,32764,32765,32765,32765,32765,32765,32765,32766,32766,32766,32766,32766,32766,32766,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768, +32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32768,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32766,32766,32766,32766,32766,32766,32766,32765,32765,32765,32765,32765,32765,32764,32764,32764,32764,32764,32764,32763,32763,32763,32763,32762, +32762,32762,32762,32762,32761,32761,32761,32761,32760,32760,32760,32760,32759,32759,32759,32758,32758,32758,32757,32757,32757,32757,32756,32756,32756,32755,32755,32755,32754,32754,32753,32753,32753,32752,32752,32752,32751,32751,32750,32750,32750,32749,32749,32748,32748,32748,32747,32747,32746,32746, +32745,32745,32744,32744,32743,32743,32743,32742,32742,32741,32741,32740,32740,32739,32739,32738,32738,32737,32736,32736,32735,32735,32734,32734,32733,32733,32732,32731,32731,32730,32730,32729,32729,32728,32727,32727,32726,32726,32725,32724,32724,32723,32722,32722,32721,32720,32720,32719,32718,32718, +32717,32716,32716,32715,32714,32714,32713,32712,32712,32711,32710,32709,32709,32708,32707,32707,32706,32705,32704,32704,32703,32702,32701,32700,32700,32699,32698,32697,32696,32696,32695,32694,32693,32692,32692,32691,32690,32689,32688,32687,32687,32686,32685,32684,32683,32682,32681,32680,32680,32679, +32678,32677,32676,32675,32674,32673,32672,32671,32670,32670,32669,32668,32667,32666,32665,32664,32663,32662,32661,32660,32659,32658,32657,32656,32655,32654,32653,32652,32651,32650,32649,32648,32647,32646,32645,32644,32643,32641,32640,32639,32638,32637,32636,32635,32634,32633,32632,32631,32629,32628, +32627,32626,32625,32624,32623,32622,32620,32619,32618,32617,32616,32615,32613,32612,32611,32610,32609,32608,32606,32605,32604,32603,32601,32600,32599,32598,32597,32595,32594,32593,32592,32590,32589,32588,32587,32585,32584,32583,32581,32580,32579,32578,32576,32575,32574,32572,32571,32570,32568,32567, +32566,32564,32563,32562,32560,32559,32557,32556,32555,32553,32552,32551,32549,32548,32546,32545,32544,32542,32541,32539,32538,32536,32535,32533,32532,32531,32529,32528,32526,32525,32523,32522,32520,32519,32517,32516,32514,32513,32511,32510,32508,32507,32505,32504,32502,32501,32499,32497,32496,32494, +32493,32491,32490,32488,32487,32485,32483,32482,32480,32479,32477,32475,32474,32472,32470,32469,32467,32466,32464,32462,32461,32459,32457,32456,32454,32452,32451,32449,32447,32446,32444,32442,32440,32439,32437,32435,32434,32432,32430,32428,32427,32425,32423,32421,32420,32418,32416,32414,32413,32411, +32409,32407,32405,32404,32402,32400,32398,32396,32395,32393,32391,32389,32387,32385,32384,32382,32380,32378,32376,32374,32372,32371,32369,32367,32365,32363,32361,32359,32357,32355,32353,32352,32350,32348,32346,32344,32342,32340,32338,32336,32334,32332,32330,32328,32326,32324,32322,32320,32318,32316, +32314,32312,32310,32308,32306,32304,32302,32300,32298,32296,32294,32292,32290,32288,32286,32284,32282,32280,32277,32275,32273,32271,32269,32267,32265,32263,32261,32259,32256,32254,32252,32250,32248,32246,32244,32241,32239,32237,32235,32233,32231,32228,32226,32224,32222,32220,32217,32215,32213,32211, +32209,32206,32204,32202,32200,32197,32195,32193,32191,32188,32186,32184,32182,32179,32177,32175,32172,32170,32168,32166,32163,32161,32159,32156,32154,32152,32149,32147,32145,32142,32140,32138,32135,32133,32130,32128,32126,32123,32121,32119,32116,32114,32111,32109,32107,32104,32102,32099,32097,32094, +32092,32090,32087,32085,32082,32080,32077,32075,32072,32070,32067,32065,32062,32060,32057,32055,32052,32050,32047,32045,32042,32040,32037,32035,32032,32030,32027,32025,32022,32019,32017,32014,32012,32009,32007,32004,32001,31999,31996,31994,31991,31988,31986,31983,31980,31978,31975,31973,31970,31967, +31965,31962,31959,31957,31954,31951,31949,31946,31943,31941,31938,31935,31933,31930,31927,31924,31922,31919,31916,31913,31911,31908,31905,31902,31900,31897,31894,31891,31889,31886,31883,31880,31878,31875,31872,31869,31866,31864,31861,31858,31855,31852,31849,31847,31844,31841,31838,31835,31832,31830, +31827,31824,31821,31818,31815,31812,31809,31806,31804,31801,31798,31795,31792,31789,31786,31783,31780,31777,31774,31771,31768,31766,31763,31760,31757,31754,31751,31748,31745,31742,31739,31736,31733,31730,31727,31724,31721,31718,31715,31712,31709,31706,31703,31700,31696,31693,31690,31687,31684,31681, +31678,31675,31672,31669,31666,31663,31660,31656,31653,31650,31647,31644,31641,31638,31635,31631,31628,31625,31622,31619,31616,31613,31609,31606,31603,31600,31597,31593,31590,31587,31584,31581,31577,31574,31571,31568,31565,31561,31558,31555,31552,31548,31545,31542,31539,31535,31532,31529,31526,31522, +31519,31516,31512,31509,31506,31503,31499,31496,31493,31489,31486,31483,31479,31476,31473,31469,31466,31463,31459,31456,31452,31449,31446,31442,31439,31436,31432,31429,31425,31422,31419,31415,31412,31408,31405,31401,31398,31395,31391,31388,31384,31381,31377,31374,31370,31367,31363,31360,31357,31353, +31350,31346,31343,31339,31336,31332,31329,31325,31321,31318,31314,31311,31307,31304,31300,31297,31293,31290,31286,31282,31279,31275,31272,31268,31265,31261,31257,31254,31250,31247,31243,31239,31236,31232,31228,31225,31221,31218,31214,31210,31207,31203,31199,31196,31192,31188,31185,31181,31177,31174, +31170,31166,31162,31159,31155,31151,31148,31144,31140,31136,31133,31129,31125,31121,31118,31114,31110,31106,31103,31099,31095,31091,31088,31084,31080,31076,31072,31069,31065,31061,31057,31053,31050,31046,31042,31038,31034,31030,31026,31023,31019,31015,31011,31007,31003,30999,30996,30992,30988,30984, +30980,30976,30972,30968,30964,30960,30957,30953,30949,30945,30941,30937,30933,30929,30925,30921,30917,30913,30909,30905,30901,30897,30893,30889,30885,30881,30877,30873,30869,30865,30861,30857,30853,30849,30845,30841,30837,30833,30829,30825,30821,30817,30813,30809,30805,30801,30797,30792,30788,30784, +30780,30776,30772,30768,30764,30760,30756,30751,30747,30743,30739,30735,30731,30727,30722,30718,30714,30710,30706,30702,30697,30693,30689,30685,30681,30677,30672,30668,30664,30660,30656,30651,30647,30643,30639,30634,30630,30626,30622,30617,30613,30609,30605,30600,30596,30592,30588,30583,30579,30575, +30570,30566,30562,30558,30553,30549,30545,30540,30536,30532,30527,30523,30519,30514,30510,30506,30501,30497,30493,30488,30484,30479,30475,30471,30466,30462,30458,30453,30449,30444,30440,30436,30431,30427,30422,30418,30413,30409,30405,30400,30396,30391,30387,30382,30378,30373,30369,30364,30360,30356, +30351,30347,30342,30338,30333,30329,30324,30320,30315,30311,30306,30301,30297,30292,30288,30283,30279,30274,30270,30265,30261,30256,30251,30247,30242,30238,30233,30229,30224,30219,30215,30210,30206,30201,30196,30192,30187,30182,30178,30173,30169,30164,30159,30155,30150,30145,30141,30136,30131,30127, +30122,30117,30113,30108,30103,30099,30094,30089,30084,30080,30075,30070,30066,30061,30056,30051,30047,30042,30037,30033,30028,30023,30018,30013,30009,30004,29999,29994,29990,29985,29980,29975,29970,29966,29961,29956,29951,29946,29942,29937,29932,29927,29922,29918,29913,29908,29903,29898,29893,29888, +29884,29879,29874,29869,29864,29859,29854,29849,29845,29840,29835,29830,29825,29820,29815,29810,29805,29800,29795,29791,29786,29781,29776,29771,29766,29761,29756,29751,29746,29741,29736,29731,29726,29721,29716,29711,29706,29701,29696,29691,29686,29681,29676,29671,29666,29661,29656,29651,29646,29641, +29636,29631,29626,29621,29616,29611,29606,29601,29595,29590,29585,29580,29575,29570,29565,29560,29555,29550,29545,29539,29534,29529,29524,29519,29514,29509,29504,29498,29493,29488,29483,29478,29473,29467,29462,29457,29452,29447,29442,29436,29431,29426,29421,29416,29410,29405,29400,29395,29390,29384, +29379,29374,29369,29363,29358,29353,29348,29342,29337,29332,29327,29321,29316,29311,29306,29300,29295,29290,29285,29279,29274,29269,29263,29258,29253,29247,29242,29237,29231,29226,29221,29215,29210,29205,29199,29194,29189,29183,29178,29173,29167,29162,29157,29151,29146,29140,29135,29130,29124,29119, +29113,29108,29103,29097,29092,29086,29081,29076,29070,29065,29059,29054,29048,29043,29038,29032,29027,29021,29016,29010,29005,28999,28994,28988,28983,28977,28972,28966,28961,28955,28950,28944,28939,28933,28928,28922,28917,28911,28906,28900,28895,28889,28884,28878,28872,28867,28861,28856,28850,28845, +28839,28834,28828,28822,28817,28811,28806,28800,28794,28789,28783,28778,28772,28766,28761,28755,28749,28744,28738,28733,28727,28721,28716,28710,28704,28699,28693,28687,28682,28676,28670,28665,28659,28653,28648,28642,28636,28631,28625,28619,28613,28608,28602,28596,28591,28585,28579,28573,28568,28562, +28556,28550,28545,28539,28533,28527,28522,28516,28510,28504,28499,28493,28487,28481,28475,28470,28464,28458,28452,28446,28441,28435,28429,28423,28417,28412,28406,28400,28394,28388,28382,28377,28371,28365,28359,28353,28347,28341,28336,28330,28324,28318,28312,28306,28300,28294,28288,28283,28277,28271, +28265,28259,28253,28247,28241,28235,28229,28223,28218,28212,28206,28200,28194,28188,28182,28176,28170,28164,28158,28152,28146,28140,28134,28128,28122,28116,28110,28104,28098,28092,28086,28080,28074,28068,28062,28056,28050,28044,28038,28032,28026,28020,28014,28008,28002,27996,27990,27984,27978,27972, +27965,27959,27953,27947,27941,27935,27929,27923,27917,27911,27905,27898,27892,27886,27880,27874,27868,27862,27856,27850,27843,27837,27831,27825,27819,27813,27807,27800,27794,27788,27782,27776,27770,27763,27757,27751,27745,27739,27733,27726,27720,27714,27708,27702,27695,27689,27683,27677,27671,27664, +27658,27652,27646,27639,27633,27627,27621,27614,27608,27602,27596,27589,27583,27577,27571,27564,27558,27552,27546,27539,27533,27527,27520,27514,27508,27501,27495,27489,27483,27476,27470,27464,27457,27451,27445,27438,27432,27426,27419,27413,27407,27400,27394,27388,27381,27375,27368,27362,27356,27349, +27343,27337,27330,27324,27317,27311,27305,27298,27292,27285,27279,27273,27266,27260,27253,27247,27241,27234,27228,27221,27215,27208,27202,27196,27189,27183,27176,27170,27163,27157,27150,27144,27137,27131,27124,27118,27111,27105,27098,27092,27086,27079,27073,27066,27059,27053,27046,27040,27033,27027, +27020,27014,27007,27001,26994,26988,26981,26975,26968,26962,26955,26948,26942,26935,26929,26922,26916,26909,26902,26896,26889,26883,26876,26870,26863,26856,26850,26843,26837,26830,26823,26817,26810,26803,26797,26790,26784,26777,26770,26764,26757,26750,26744,26737,26730,26724,26717,26711,26704,26697, +26691,26684,26677,26670,26664,26657,26650,26644,26637,26630,26624,26617,26610,26604,26597,26590,26583,26577,26570,26563,26557,26550,26543,26536,26530,26523,26516,26509,26503,26496,26489,26482,26476,26469,26462,26455,26449,26442,26435,26428,26421,26415,26408,26401,26394,26388,26381,26374,26367,26360, +26354,26347,26340,26333,26326,26319,26313,26306,26299,26292,26285,26278,26272,26265,26258,26251,26244,26237,26231,26224,26217,26210,26203,26196,26189,26182,26176,26169,26162,26155,26148,26141,26134,26127,26121,26114,26107,26100,26093,26086,26079,26072,26065,26058,26051,26044,26038,26031,26024,26017, +26010,26003,25996,25989,25982,25975,25968,25961,25954,25947,25940,25933,25926,25919,25912,25905,25898,25891,25884,25877,25870,25863,25856,25849,25842,25835,25828,25821,25814,25807,25800,25793,25786,25779,25772,25765,25758,25751,25744,25737,25730,25723,25716,25709,25702,25695,25688,25681,25674,25666, +25659,25652,25645,25638,25631,25624,25617,25610,25603,25596,25589,25581,25574,25567,25560,25553,25546,25539,25532,25525,25517,25510,25503,25496,25489,25482,25475,25468,25460,25453,25446,25439,25432,25425,25417,25410,25403,25396,25389,25382,25374,25367,25360,25353,25346,25339,25331,25324,25317,25310, +25303,25295,25288,25281,25274,25267,25259,25252,25245,25238,25231,25223,25216,25209,25202,25194,25187,25180,25173,25165,25158,25151,25144,25136,25129,25122,25115,25107,25100,25093,25086,25078,25071,25064,25057,25049,25042,25035,25027,25020,25013,25006,24998,24991,24984,24976,24969,24962,24954,24947, +24940,24932,24925,24918,24910,24903,24896,24888,24881,24874,24866,24859,24852,24844,24837,24830,24822,24815,24808,24800,24793,24786,24778,24771,24763,24756,24749,24741,24734,24727,24719,24712,24704,24697,24690,24682,24675,24667,24660,24653,24645,24638,24630,24623,24616,24608,24601,24593,24586,24578, +24571,24564,24556,24549,24541,24534,24526,24519,24512,24504,24497,24489,24482,24474,24467,24459,24452,24444,24437,24429,24422,24414,24407,24400,24392,24385,24377,24370,24362,24355,24347,24340,24332,24325,24317,24310,24302,24295,24287,24280,24272,24264,24257,24249,24242,24234,24227,24219,24212,24204, +24197,24189,24182,24174,24167,24159,24151,24144,24136,24129,24121,24114,24106,24098,24091,24083,24076,24068,24061,24053,24045,24038,24030,24023,24015,24008,24000,23992,23985,23977,23970,23962,23954,23947,23939,23931,23924,23916,23909,23901,23893,23886,23878,23870,23863,23855,23848,23840,23832,23825, +23817,23809,23802,23794,23786,23779,23771,23763,23756,23748,23740,23733,23725,23717,23710,23702,23694,23687,23679,23671,23664,23656,23648,23641,23633,23625,23618,23610,23602,23594,23587,23579,23571,23564,23556,23548,23540,23533,23525,23517,23510,23502,23494,23486,23479,23471,23463,23455,23448,23440, +23432,23424,23417,23409,23401,23393,23386,23378,23370,23362,23355,23347,23339,23331,23324,23316,23308,23300,23293,23285,23277,23269,23261,23254,23246,23238,23230,23222,23215,23207,23199,23191,23183,23176,23168,23160,23152,23144,23137,23129,23121,23113,23105,23097,23090,23082,23074,23066,23058,23050, +23043,23035,23027,23019,23011,23003,22996,22988,22980,22972,22964,22956,22948,22941,22933,22925,22917,22909,22901,22893,22885,22878,22870,22862,22854,22846,22838,22830,22822,22815,22807,22799,22791,22783,22775,22767,22759,22751,22743,22736,22728,22720,22712,22704,22696,22688,22680,22672,22664,22656, +22648,22641,22633,22625,22617,22609,22601,22593,22585,22577,22569,22561,22553,22545,22537,22529,22521,22513,22505,22498,22490,22482,22474,22466,22458,22450,22442,22434,22426,22418,22410,22402,22394,22386,22378,22370,22362,22354,22346,22338,22330,22322,22314,22306,22298,22290,22282,22274,22266,22258, +22250,22242,22234,22226,22218,22210,22202,22194,22186,22178,22170,22162,22154,22146,22138,22130,22122,22114,22106,22097,22089,22081,22073,22065,22057,22049,22041,22033,22025,22017,22009,22001,21993,21985,21977,21969,21961,21952,21944,21936,21928,21920,21912,21904,21896,21888,21880,21872,21864,21856, +21847,21839,21831,21823,21815,21807,21799,21791,21783,21775,21767,21758,21750,21742,21734,21726,21718,21710,21702,21694,21685,21677,21669,21661,21653,21645,21637,21629,21620,21612,21604,21596,21588,21580,21572,21563,21555,21547,21539,21531,21523,21515,21506,21498,21490,21482,21474,21466,21458,21449, +21441,21433,21425,21417,21409,21400,21392,21384,21376,21368,21360,21351,21343,21335,21327,21319,21310,21302,21294,21286,21278,21270,21261,21253,21245,21237,21229,21220,21212,21204,21196,21188,21179,21171,21163,21155,21147,21138,21130,21122,21114,21106,21097,21089,21081,21073,21064,21056,21048,21040, +21032,21023,21015,21007,20999,20990,20982,20974,20966,20957,20949,20941,20933,20924,20916,20908,20900,20891,20883,20875,20867,20858,20850,20842,20834,20825,20817,20809,20801,20792,20784,20776,20768,20759,20751,20743,20735,20726,20718,20710,20701,20693,20685,20677,20668,20660,20652,20643,20635,20627, +20619,20610,20602,20594,20585,20577,20569,20561,20552,20544,20536,20527,20519,20511,20502,20494,20486,20478,20469,20461,20453,20444,20436,20428,20419,20411,20403,20394,20386,20378,20369,20361,20353,20345,20336,20328,20320,20311,20303,20295,20286,20278,20270,20261,20253,20245,20236,20228,20220,20211, +20203,20194,20186,20178,20169,20161,20153,20144,20136,20128,20119,20111,20103,20094,20086,20078,20069,20061,20052,20044,20036,20027,20019,20011,20002,19994,19986,19977,19969,19960,19952,19944,19935,19927,19919,19910,19902,19893,19885,19877,19868,19860,19852,19843,19835,19826,19818,19810,19801,19793, +19784,19776,19768,19759,19751,19742,19734,19726,19717,19709,19700,19692,19684,19675,19667,19658,19650,19642,19633,19625,19616,19608,19600,19591,19583,19574,19566,19557,19549,19541,19532,19524,19515,19507,19499,19490,19482,19473,19465,19456,19448,19440,19431,19423,19414,19406,19397,19389,19381,19372, +19364,19355,19347,19338,19330,19321,19313,19305,19296,19288,19279,19271,19262,19254,19245,19237,19229,19220,19212,19203,19195,19186,19178,19169,19161,19153,19144,19136,19127,19119,19110,19102,19093,19085,19076,19068,19059,19051,19043,19034,19026,19017,19009,19000,18992,18983,18975,18966,18958,18949, +18941,18932,18924,18915,18907,18898,18890,18882,18873,18865,18856,18848,18839,18831,18822,18814,18805,18797,18788,18780,18771,18763,18754,18746,18737,18729,18720,18712,18703,18695,18686,18678,18669,18661,18652,18644,18635,18627,18618,18610,18601,18593,18584,18576,18567,18559,18550,18542,18533,18525, +18516,18508,18499,18491,18482,18474,18465,18457,18448,18440,18431,18423,18414,18406,18397,18389,18380,18372,18363,18355,18346,18338,18329,18321,18312,18304,18295,18286,18278,18269,18261,18252,18244,18235,18227,18218,18210,18201,18193,18184,18176,18167,18159,18150,18142,18133,18124,18116,18107,18099, +18090,18082,18073,18065,18056,18048,18039,18031,18022,18014,18005,17996,17988,17979,17971,17962,17954,17945,17937,17928,17920,17911,17903,17894,17885,17877,17868,17860,17851,17843,17834,17826,17817,17809,17800,17791,17783,17774,17766,17757,17749,17740,17732,17723,17714,17706,17697,17689,17680,17672, +17663,17655,17646,17638,17629,17620,17612,17603,17595,17586,17578,17569,17561,17552,17543,17535,17526,17518,17509,17501,17492,17483,17475,17466,17458,17449,17441,17432,17424,17415,17406,17398,17389,17381,17372,17364,17355,17346,17338,17329,17321,17312,17304,17295,17287,17278,17269,17261,17252,17244, +17235,17227,17218,17209,17201,17192,17184,17175,17167,17158,17149,17141,17132,17124,17115,17107,17098,17089,17081,17072,17064,17055,17047,17038,17029,17021,17012,17004,16995,16987,16978,16969,16961,16952,16944,16935,16927,16918,16909,16901,16892,16884,16875,16867,16858,16849,16841,16832,16824,16815, +16806,16798,16789,16781,16772,16764,16755,16746,16738,16729,16721,16712,16704,16695,16686,16678,16669,16661,16652,16644,16635,16626,16618,16609,16601,16592,16583,16575,16566,16558,16549,16541,16532,16523,16515,16506,16498,16489,16481,16472,16463,16455,16446,16438,16429,16420,16412,16403,16395,16386, +16378,16369,16360,16352,16343,16335,16326,16318,16309,16300,16292,16283,16275,16266,16257,16249,16240,16232,16223,16215,16206,16197,16189,16180,16172,16163,16155,16146,16137,16129,16120,16112,16103,16094,16086,16077,16069,16060,16052,16043,16034,16026,16017,16009,16000,15992,15983,15974,15966,15957, +15949,15940,15931,15923,15914,15906,15897,15889,15880,15871,15863,15854,15846,15837,15829,15820,15811,15803,15794,15786,15777,15769,15760,15751,15743,15734,15726,15717,15709,15700,15691,15683,15674,15666,15657,15649,15640,15631,15623,15614,15606,15597,15589,15580,15571,15563,15554,15546,15537,15529, +15520,15511,15503,15494,15486,15477,15469,15460,15451,15443,15434,15426,15417,15409,15400,15392,15383,15374,15366,15357,15349,15340,15332,15323,15314,15306,15297,15289,15280,15272,15263,15255,15246,15237,15229,15220,15212,15203,15195,15186,15178,15169,15160,15152,15143,15135,15126,15118,15109,15101, +15092,15083,15075,15066,15058,15049,15041,15032,15024,15015,15006,14998,14989,14981,14972,14964,14955,14947,14938,14930,14921,14912,14904,14895,14887,14878,14870,14861,14853,14844,14836,14827,14819,14810,14801,14793,14784,14776,14767,14759,14750,14742,14733,14725,14716,14708,14699,14690,14682,14673, +14665,14656,14648,14639,14631,14622,14614,14605,14597,14588,14580,14571,14563,14554,14545,14537,14528,14520,14511,14503,14494,14486,14477,14469,14460,14452,14443,14435,14426,14418,14409,14401,14392,14384,14375,14367,14358,14350,14341,14332,14324,14315,14307,14298,14290,14281,14273,14264,14256,14247, +14239,14230,14222,14213,14205,14196,14188,14179,14171,14162,14154,14145,14137,14128,14120,14111,14103,14094,14086,14077,14069,14060,14052,14043,14035,14026,14018,14009,14001,13992,13984,13976,13967,13959,13950,13942,13933,13925,13916,13908,13899,13891,13882,13874,13865,13857,13848,13840,13831,13823, +13814,13806,13797,13789,13781,13772,13764,13755,13747,13738,13730,13721,13713,13704,13696,13687,13679,13670,13662,13654,13645,13637,13628,13620,13611,13603,13594,13586,13577,13569,13561,13552,13544,13535,13527,13518,13510,13501,13493,13485,13476,13468,13459,13451,13442,13434,13425,13417,13409,13400, +13392,13383,13375,13366,13358,13350,13341,13333,13324,13316,13307,13299,13291,13282,13274,13265,13257,13248,13240,13232,13223,13215,13206,13198,13189,13181,13173,13164,13156,13147,13139,13131,13122,13114,13105,13097,13089,13080,13072,13063,13055,13047,13038,13030,13021,13013,13005,12996,12988,12979, +12971,12963,12954,12946,12937,12929,12921,12912,12904,12896,12887,12879,12870,12862,12854,12845,12837,12828,12820,12812,12803,12795,12787,12778,12770,12762,12753,12745,12736,12728,12720,12711,12703,12695,12686,12678,12670,12661,12653,12644,12636,12628,12619,12611,12603,12594,12586,12578,12569,12561, +12553,12544,12536,12528,12519,12511,12503,12494,12486,12478,12469,12461,12453,12444,12436,12428,12419,12411,12403,12394,12386,12378,12369,12361,12353,12344,12336,12328,12320,12311,12303,12295,12286,12278,12270,12261,12253,12245,12236,12228,12220,12212,12203,12195,12187,12178,12170,12162,12154,12145, +12137,12129,12120,12112,12104,12096,12087,12079,12071,12062,12054,12046,12038,12029,12021,12013,12005,11996,11988,11980,11971,11963,11955,11947,11938,11930,11922,11914,11905,11897,11889,11881,11872,11864,11856,11848,11839,11831,11823,11815,11806,11798,11790,11782,11774,11765,11757,11749,11741,11732, +11724,11716,11708,11699,11691,11683,11675,11667,11658,11650,11642,11634,11626,11617,11609,11601,11593,11585,11576,11568,11560,11552,11544,11535,11527,11519,11511,11503,11494,11486,11478,11470,11462,11453,11445,11437,11429,11421,11413,11404,11396,11388,11380,11372,11364,11355,11347,11339,11331,11323, +11315,11306,11298,11290,11282,11274,11266,11257,11249,11241,11233,11225,11217,11209,11200,11192,11184,11176,11168,11160,11152,11144,11135,11127,11119,11111,11103,11095,11087,11079,11070,11062,11054,11046,11038,11030,11022,11014,11006,10997,10989,10981,10973,10965,10957,10949,10941,10933,10925,10916, +10908,10900,10892,10884,10876,10868,10860,10852,10844,10836,10828,10820,10811,10803,10795,10787,10779,10771,10763,10755,10747,10739,10731,10723,10715,10707,10699,10691,10683,10675,10667,10658,10650,10642,10634,10626,10618,10610,10602,10594,10586,10578,10570,10562,10554,10546,10538,10530,10522,10514, +10506,10498,10490,10482,10474,10466,10458,10450,10442,10434,10426,10418,10410,10402,10394,10386,10378,10370,10362,10354,10346,10338,10330,10322,10314,10306,10298,10290,10282,10274,10267,10259,10251,10243,10235,10227,10219,10211,10203,10195,10187,10179,10171,10163,10155,10147,10139,10131,10124,10116, +10108,10100,10092,10084,10076,10068,10060,10052,10044,10036,10029,10021,10013,10005,9997,9989,9981,9973,9965,9957,9950,9942,9934,9926,9918,9910,9902,9894,9886,9879,9871,9863,9855,9847,9839,9831,9824,9816,9808,9800,9792,9784,9776,9769,9761,9753,9745,9737,9729,9721, +9714,9706,9698,9690,9682,9674,9667,9659,9651,9643,9635,9628,9620,9612,9604,9596,9588,9581,9573,9565,9557,9549,9542,9534,9526,9518,9511,9503,9495,9487,9479,9472,9464,9456,9448,9440,9433,9425,9417,9409,9402,9394,9386,9378,9371,9363,9355,9347,9340,9332, +9324,9316,9309,9301,9293,9285,9278,9270,9262,9255,9247,9239,9231,9224,9216,9208,9201,9193,9185,9177,9170,9162,9154,9147,9139,9131,9124,9116,9108,9100,9093,9085,9077,9070,9062,9054,9047,9039,9031,9024,9016,9008,9001,8993,8985,8978,8970,8962,8955,8947, +8940,8932,8924,8917,8909,8901,8894,8886,8878,8871,8863,8856,8848,8840,8833,8825,8817,8810,8802,8795,8787,8779,8772,8764,8757,8749,8742,8734,8726,8719,8711,8704,8696,8688,8681,8673,8666,8658,8651,8643,8635,8628,8620,8613,8605,8598,8590,8583,8575,8568, +8560,8552,8545,8537,8530,8522,8515,8507,8500,8492,8485,8477,8470,8462,8455,8447,8440,8432,8425,8417,8410,8402,8395,8387,8380,8372,8365,8357,8350,8342,8335,8327,8320,8312,8305,8297,8290,8283,8275,8268,8260,8253,8245,8238,8230,8223,8216,8208,8201,8193, +8186,8178,8171,8164,8156,8149,8141,8134,8126,8119,8112,8104,8097,8089,8082,8075,8067,8060,8052,8045,8038,8030,8023,8016,8008,8001,7993,7986,7979,7971,7964,7957,7949,7942,7935,7927,7920,7913,7905,7898,7891,7883,7876,7869,7861,7854,7847,7839,7832,7825, +7817,7810,7803,7795,7788,7781,7773,7766,7759,7752,7744,7737,7730,7722,7715,7708,7701,7693,7686,7679,7671,7664,7657,7650,7642,7635,7628,7621,7613,7606,7599,7592,7584,7577,7570,7563,7556,7548,7541,7534,7527,7519,7512,7505,7498,7491,7483,7476,7469,7462, +7455,7447,7440,7433,7426,7419,7411,7404,7397,7390,7383,7376,7368,7361,7354,7347,7340,7333,7326,7318,7311,7304,7297,7290,7283,7276,7268,7261,7254,7247,7240,7233,7226,7219,7211,7204,7197,7190,7183,7176,7169,7162,7155,7148,7140,7133,7126,7119,7112,7105, +7098,7091,7084,7077,7070,7063,7056,7049,7042,7035,7027,7020,7013,7006,6999,6992,6985,6978,6971,6964,6957,6950,6943,6936,6929,6922,6915,6908,6901,6894,6887,6880,6873,6866,6859,6852,6845,6838,6831,6824,6817,6810,6803,6796,6790,6783,6776,6769,6762,6755, +6748,6741,6734,6727,6720,6713,6706,6699,6692,6685,6679,6672,6665,6658,6651,6644,6637,6630,6623,6616,6610,6603,6596,6589,6582,6575,6568,6561,6555,6548,6541,6534,6527,6520,6513,6507,6500,6493,6486,6479,6472,6466,6459,6452,6445,6438,6431,6425,6418,6411, +6404,6397,6391,6384,6377,6370,6363,6357,6350,6343,6336,6330,6323,6316,6309,6302,6296,6289,6282,6275,6269,6262,6255,6248,6242,6235,6228,6222,6215,6208,6201,6195,6188,6181,6174,6168,6161,6154,6148,6141,6134,6128,6121,6114,6108,6101,6094,6088,6081,6074, +6067,6061,6054,6048,6041,6034,6028,6021,6014,6008,6001,5994,5988,5981,5974,5968,5961,5955,5948,5941,5935,5928,5922,5915,5908,5902,5895,5889,5882,5875,5869,5862,5856,5849,5843,5836,5829,5823,5816,5810,5803,5797,5790,5784,5777,5770,5764,5757,5751,5744, +5738,5731,5725,5718,5712,5705,5699,5692,5686,5679,5673,5666,5660,5653,5647,5640,5634,5627,5621,5614,5608,5602,5595,5589,5582,5576,5569,5563,5556,5550,5544,5537,5531,5524,5518,5511,5505,5499,5492,5486,5479,5473,5467,5460,5454,5447,5441,5435,5428,5422, +5415,5409,5403,5396,5390,5384,5377,5371,5365,5358,5352,5346,5339,5333,5327,5320,5314,5308,5301,5295,5289,5282,5276,5270,5263,5257,5251,5244,5238,5232,5226,5219,5213,5207,5201,5194,5188,5182,5175,5169,5163,5157,5150,5144,5138,5132,5125,5119,5113,5107, +5101,5094,5088,5082,5076,5070,5063,5057,5051,5045,5039,5032,5026,5020,5014,5008,5001,4995,4989,4983,4977,4971,4964,4958,4952,4946,4940,4934,4928,4921,4915,4909,4903,4897,4891,4885,4879,4873,4866,4860,4854,4848,4842,4836,4830,4824,4818,4812,4806,4800, +4793,4787,4781,4775,4769,4763,4757,4751,4745,4739,4733,4727,4721,4715,4709,4703,4697,4691,4685,4679,4673,4667,4661,4655,4649,4643,4637,4631,4625,4619,4613,4607,4601,4595,4589,4583,4577,4571,4565,4559,4553,4548,4542,4536,4530,4524,4518,4512,4506,4500, +4494,4488,4482,4477,4471,4465,4459,4453,4447,4441,4435,4430,4424,4418,4412,4406,4400,4394,4389,4383,4377,4371,4365,4359,4354,4348,4342,4336,4330,4324,4319,4313,4307,4301,4295,4290,4284,4278,4272,4267,4261,4255,4249,4243,4238,4232,4226,4220,4215,4209, +4203,4198,4192,4186,4180,4175,4169,4163,4157,4152,4146,4140,4135,4129,4123,4118,4112,4106,4101,4095,4089,4083,4078,4072,4067,4061,4055,4050,4044,4038,4033,4027,4021,4016,4010,4004,3999,3993,3988,3982,3976,3971,3965,3960,3954,3948,3943,3937,3932,3926, +3921,3915,3909,3904,3898,3893,3887,3882,3876,3871,3865,3860,3854,3848,3843,3837,3832,3826,3821,3815,3810,3804,3799,3793,3788,3782,3777,3771,3766,3761,3755,3750,3744,3739,3733,3728,3722,3717,3711,3706,3701,3695,3690,3684,3679,3673,3668,3663,3657,3652, +3646,3641,3636,3630,3625,3619,3614,3609,3603,3598,3593,3587,3582,3577,3571,3566,3561,3555,3550,3545,3539,3534,3529,3523,3518,3513,3507,3502,3497,3491,3486,3481,3476,3470,3465,3460,3454,3449,3444,3439,3433,3428,3423,3418,3412,3407,3402,3397,3391,3386, +3381,3376,3371,3365,3360,3355,3350,3345,3339,3334,3329,3324,3319,3313,3308,3303,3298,3293,3288,3282,3277,3272,3267,3262,3257,3252,3247,3241,3236,3231,3226,3221,3216,3211,3206,3201,3195,3190,3185,3180,3175,3170,3165,3160,3155,3150,3145,3140,3135,3130, +3125,3119,3114,3109,3104,3099,3094,3089,3084,3079,3074,3069,3064,3059,3054,3049,3044,3039,3034,3029,3024,3020,3015,3010,3005,3000,2995,2990,2985,2980,2975,2970,2965,2960,2955,2950,2945,2941,2936,2931,2926,2921,2916,2911,2906,2901,2897,2892,2887,2882, +2877,2872,2867,2863,2858,2853,2848,2843,2838,2834,2829,2824,2819,2814,2810,2805,2800,2795,2790,2786,2781,2776,2771,2766,2762,2757,2752,2747,2743,2738,2733,2728,2724,2719,2714,2709,2705,2700,2695,2691,2686,2681,2676,2672,2667,2662,2658,2653,2648,2644, +2639,2634,2630,2625,2620,2616,2611,2606,2602,2597,2592,2588,2583,2579,2574,2569,2565,2560,2556,2551,2546,2542,2537,2533,2528,2523,2519,2514,2510,2505,2501,2496,2492,2487,2482,2478,2473,2469,2464,2460,2455,2451,2446,2442,2437,2433,2428,2424,2419,2415, +2410,2406,2401,2397,2392,2388,2383,2379,2375,2370,2366,2361,2357,2352,2348,2343,2339,2335,2330,2326,2321,2317,2313,2308,2304,2299,2295,2291,2286,2282,2278,2273,2269,2265,2260,2256,2251,2247,2243,2238,2234,2230,2226,2221,2217,2213,2208,2204,2200,2195, +2191,2187,2183,2178,2174,2170,2165,2161,2157,2153,2148,2144,2140,2136,2131,2127,2123,2119,2115,2110,2106,2102,2098,2094,2089,2085,2081,2077,2073,2068,2064,2060,2056,2052,2048,2043,2039,2035,2031,2027,2023,2019,2015,2010,2006,2002,1998,1994,1990,1986, +1982,1978,1974,1969,1965,1961,1957,1953,1949,1945,1941,1937,1933,1929,1925,1921,1917,1913,1909,1905,1901,1897,1893,1889,1885,1881,1877,1873,1869,1865,1861,1857,1853,1849,1845,1841,1837,1833,1829,1825,1821,1817,1813,1809,1806,1802,1798,1794,1790,1786, +1782,1778,1774,1770,1767,1763,1759,1755,1751,1747,1743,1740,1736,1732,1728,1724,1720,1717,1713,1709,1705,1701,1698,1694,1690,1686,1682,1679,1675,1671,1667,1663,1660,1656,1652,1648,1645,1641,1637,1633,1630,1626,1622,1619,1615,1611,1607,1604,1600,1596, +1593,1589,1585,1582,1578,1574,1571,1567,1563,1560,1556,1552,1549,1545,1541,1538,1534,1530,1527,1523,1520,1516,1512,1509,1505,1502,1498,1494,1491,1487,1484,1480,1477,1473,1470,1466,1462,1459,1455,1452,1448,1445,1441,1438,1434,1431,1427,1424,1420,1417, +1413,1410,1406,1403,1399,1396,1392,1389,1385,1382,1379,1375,1372,1368,1365,1361,1358,1355,1351,1348,1344,1341,1338,1334,1331,1327,1324,1321,1317,1314,1310,1307,1304,1300,1297,1294,1290,1287,1284,1280,1277,1274,1270,1267,1264,1261,1257,1254,1251,1247, +1244,1241,1238,1234,1231,1228,1224,1221,1218,1215,1211,1208,1205,1202,1199,1195,1192,1189,1186,1183,1179,1176,1173,1170,1167,1163,1160,1157,1154,1151,1148,1144,1141,1138,1135,1132,1129,1126,1122,1119,1116,1113,1110,1107,1104,1101,1098,1095,1091,1088, +1085,1082,1079,1076,1073,1070,1067,1064,1061,1058,1055,1052,1049,1046,1043,1040,1037,1034,1031,1028,1025,1022,1019,1016,1013,1010,1007,1004,1001,998,995,992,989,986,983,980,978,975,972,969,966,963,960,957,954,951,949,946,943,940, +937,934,931,928,926,923,920,917,914,911,909,906,903,900,897,895,892,889,886,883,881,878,875,872,870,867,864,861,859,856,853,850,848,845,842,840,837,834,831,829,826,823,821,818,815,813,810,807,805,802, +799,797,794,791,789,786,784,781,778,776,773,771,768,765,763,760,758,755,752,750,747,745,742,740,737,735,732,729,727,724,722,719,717,714,712,709,707,704,702,699,697,694,692,690,687,685,682,680,677,675, +672,670,668,665,663,660,658,655,653,651,648,646,643,641,639,636,634,632,629,627,625,622,620,618,615,613,611,608,606,604,601,599,597,594,592,590,588,585,583,581,579,576,574,572,570,567,565,563,561,558, +556,554,552,550,547,545,543,541,539,536,534,532,530,528,526,523,521,519,517,515,513,511,508,506,504,502,500,498,496,494,492,490,487,485,483,481,479,477,475,473,471,469,467,465,463,461,459,457,455,453, +451,449,447,445,443,441,439,437,435,433,431,429,427,425,423,421,419,417,415,414,412,410,408,406,404,402,400,398,397,395,393,391,389,387,385,383,382,380,378,376,374,373,371,369,367,365,363,362,360,358, +356,355,353,351,349,347,346,344,342,340,339,337,335,334,332,330,328,327,325,323,322,320,318,317,315,313,312,310,308,307,305,303,302,300,298,297,295,293,292,290,289,287,285,284,282,281,279,278,276,274, +273,271,270,268,267,265,264,262,261,259,257,256,254,253,251,250,248,247,245,244,243,241,240,238,237,235,234,232,231,229,228,227,225,224,222,221,220,218,217,215,214,213,211,210,209,207,206,204,203,202, +200,199,198,196,195,194,192,191,190,189,187,186,185,183,182,181,180,178,177,176,175,173,172,171,170,168,167,166,165,163,162,161,160,159,157,156,155,154,153,152,150,149,148,147,146,145,144,142,141,140, +139,138,137,136,135,134,132,131,130,129,128,127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96,95,94,93,92,92,91,90, +89,88,87,86,85,84,84,83,82,81,80,79,78,78,77,76,75,74,74,73,72,71,70,70,69,68,67,66,66,65,64,63,63,62,61,60,60,59,58,57,57,56,55,55,54,53,53,52,51,51, +50,49,49,48,47,47,46,45,45,44,43,43,42,42,41,40,40,39,39,38,37,37,36,36,35,35,34,33,33,32,32,31,31,30,30,29,29,28,28,27,27,26,26,25,25,24,24,23,23,22, +22,22,21,21,20,20,19,19,19,18,18,17,17,17,16,16,15,15,15,14,14,14,13,13,13,12,12,12,11,11,11,10,10,10,9,9,9,9,8,8,8,8,7,7,7,7,6,6,6,6, +5,5,5,5,5,4,4,4,4,4,3,3,3,3,3,3,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; + +#endif \ No newline at end of file