diff --git a/Appl/CEP/CS1/CS1_BGLProc/src/BandPass.cc b/Appl/CEP/CS1/CS1_BGLProc/src/BandPass.cc new file mode 100644 index 0000000000000000000000000000000000000000..0e518d3946c45c9b43604ec8bff5bd7571f3632c --- /dev/null +++ b/Appl/CEP/CS1/CS1_BGLProc/src/BandPass.cc @@ -0,0 +1,2142 @@ +//# Always #include <lofar_config.h> first! +#include <lofar_config.h> + +#include <BandPass.h> +#include <CS1_Interface/AlignedStdAllocator.h> +#include <CS1_Interface/CS1_Config.h> + +#include <vector> + +#if defined HAVE_FFTW3 +#include <fftw3.h> +#elif defined HAVE_FFTW2 +#include <fftw.h> +#else +#error Should have FFTW3 or FFTW2 installed +#endif + +#include <complex> // FIXME +#include <iostream> // FIXME + +typedef std::complex<float> fcomplex; + + +namespace LOFAR { +namespace CS1 { + + +const float BandPass::stationFilterConstants[65536] = +{ + 36, 36, 35, 35, 34, 33, 32, 31, + 29, 28, 26, 25, 23, 21, 20, 18, + 17, 15, 14, 12, 11, 10, 9, 9, + 8, 8, 7, 7, 7, 7, 7, 7, + 7, 7, 8, 8, 8, 9, 9, 9, + 10, 10, 10, 10, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 12, 12, 12, 12, 12, 12, + 13, 13, 13, 13, 13, 13, 13, 13, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 15, 15, + 15, 15, 15, 15, 15, 15, 16, 16, + 16, 16, 16, 16, 16, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 18, + 18, 18, 18, 18, 18, 18, 18, 18, + 19, 19, 19, 19, 19, 19, 19, 20, + 20, 20, 20, 20, 20, 20, 21, 21, + 21, 21, 21, 21, 21, 21, 22, 22, + 22, 22, 22, 22, 22, 22, 23, 23, + 23, 23, 23, 23, 23, 24, 24, 24, + 24, 24, 24, 25, 25, 25, 25, 25, + 25, 26, 26, 26, 26, 26, 26, 26, + 27, 27, 27, 27, 27, 27, 27, 28, + 28, 28, 28, 28, 28, 29, 29, 29, + 29, 29, 29, 30, 30, 30, 30, 30, + 31, 31, 31, 31, 31, 31, 32, 32, + 32, 32, 32, 32, 33, 33, 33, 33, + 33, 33, 34, 34, 34, 34, 34, 35, + 35, 35, 35, 35, 36, 36, 36, 36, + 36, 37, 37, 37, 37, 37, 37, 38, + 38, 38, 38, 38, 39, 39, 39, 39, + 39, 40, 40, 40, 40, 40, 41, 41, + 41, 41, 42, 42, 42, 42, 42, 43, + 43, 43, 43, 43, 44, 44, 44, 44, + 44, 45, 45, 45, 45, 46, 46, 46, + 46, 46, 47, 47, 47, 47, 48, 48, + 48, 48, 49, 49, 49, 49, 50, 50, + 50, 50, 50, 51, 51, 51, 51, 52, + 52, 52, 52, 53, 53, 53, 53, 54, + 54, 54, 54, 55, 55, 55, 55, 56, + 56, 56, 56, 57, 57, 57, 57, 58, + 58, 58, 58, 59, 59, 59, 59, 60, + 60, 60, 60, 61, 61, 61, 62, 62, + 62, 62, 63, 63, 63, 63, 64, 64, + 64, 65, 65, 65, 65, 66, 66, 66, + 67, 67, 67, 67, 68, 68, 68, 69, + 69, 69, 69, 70, 70, 70, 71, 71, + 71, 71, 72, 72, 72, 73, 73, 73, + 74, 74, 74, 74, 75, 75, 75, 76, + 76, 76, 77, 77, 77, 77, 78, 78, + 78, 79, 79, 79, 80, 80, 80, 81, + 81, 81, 82, 82, 82, 83, 83, 83, + 84, 84, 84, 85, 85, 85, 85, 86, + 86, 86, 87, 87, 87, 88, 88, 88, + 89, 89, 89, 90, 90, 90, 91, 91, + 92, 92, 92, 93, 93, 93, 94, 94, + 94, 95, 95, 95, 96, 96, 96, 97, + 97, 97, 98, 98, 99, 99, 99, 100, + 100, 100, 101, 101, 101, 102, 102, 103, + 103, 103, 104, 104, 104, 105, 105, 105, + 106, 106, 107, 107, 107, 108, 108, 108, + 109, 109, 110, 110, 110, 111, 111, 112, + 112, 112, 113, 113, 113, 114, 114, 115, + 115, 115, 116, 116, 117, 117, 117, 118, + 118, 119, 119, 119, 120, 120, 121, 121, + 121, 122, 122, 123, 123, 123, 124, 124, + 125, 125, 125, 126, 126, 127, 127, 127, + 128, 128, 129, 129, 130, 130, 130, 131, + 131, 132, 132, 132, 133, 133, 134, 134, + 135, 135, 135, 136, 136, 137, 137, 138, + 138, 138, 139, 139, 140, 140, 141, 141, + 141, 142, 142, 143, 143, 144, 144, 145, + 145, 145, 146, 146, 147, 147, 148, 148, + 149, 149, 149, 150, 150, 151, 151, 152, + 152, 153, 153, 153, 154, 154, 155, 155, + 156, 156, 157, 157, 158, 158, 159, 159, + 159, 160, 160, 161, 161, 162, 162, 163, + 163, 164, 164, 165, 165, 165, 166, 166, + 167, 167, 168, 168, 169, 169, 170, 170, + 171, 171, 172, 172, 173, 173, 174, 174, + 174, 175, 175, 176, 176, 177, 177, 178, + 178, 179, 179, 180, 180, 181, 181, 182, + 182, 183, 183, 184, 184, 185, 185, 186, + 186, 187, 187, 188, 188, 189, 189, 190, + 190, 191, 191, 192, 192, 193, 193, 194, + 194, 195, 195, 196, 196, 197, 197, 198, + 198, 199, 199, 200, 200, 201, 201, 202, + 202, 203, 203, 204, 204, 205, 205, 206, + 206, 207, 207, 208, 208, 209, 209, 210, + 210, 211, 211, 212, 212, 213, 213, 214, + 214, 215, 215, 216, 217, 217, 218, 218, + 219, 219, 220, 220, 221, 221, 222, 222, + 223, 223, 224, 224, 225, 225, 226, 226, + 227, 227, 228, 229, 229, 230, 230, 231, + 231, 232, 232, 233, 233, 234, 234, 235, + 235, 236, 236, 237, 237, 238, 239, 239, + 240, 240, 241, 241, 242, 242, 243, 243, + 244, 244, 245, 245, 246, 247, 247, 248, + 248, 249, 249, 250, 250, 251, 251, 252, + 252, 253, 253, 254, 255, 255, 256, 256, + 257, 257, 258, 258, 259, 259, 260, 260, + 261, 261, 262, 263, 263, 264, 264, 265, + 265, 266, 266, 267, 267, 268, 268, 269, + 270, 270, 271, 271, 272, 272, 273, 273, + 274, 274, 275, 275, 276, 277, 277, 278, + 278, 279, 279, 280, 280, 281, 281, 282, + 282, 283, 283, 284, 285, 285, 286, 286, + 287, 287, 288, 288, 289, 289, 290, 290, + 291, 291, 292, 293, 293, 294, 294, 295, + 295, 296, 296, 297, 297, 298, 298, 299, + 299, 300, 300, 301, 302, 302, 303, 303, + 304, 304, 305, 305, 306, 306, 307, 307, + 308, 308, 309, 309, 310, 311, 311, 312, + 312, 313, 313, 314, 314, 315, 315, 316, + 316, 317, 317, 318, 318, 319, 319, 320, + 320, 321, 321, 322, 322, 323, 323, 324, + 325, 325, 326, 326, 327, 327, 328, 328, + 329, 329, 330, 330, 331, 331, 332, 332, + 333, 333, 334, 334, 335, 335, 336, 336, + 337, 337, 338, 338, 339, 339, 340, 340, + 341, 341, 342, 342, 343, 343, 344, 344, + 345, 345, 346, 346, 347, 347, 348, 348, + 348, 349, 349, 350, 350, 351, 351, 352, + 352, 353, 353, 354, 354, 355, 355, 356, + 356, 357, 357, 358, 358, 359, 359, 359, + 360, 360, 361, 361, 362, 362, 363, 363, + 364, 364, 365, 365, 365, 366, 366, 367, + 367, 368, 368, 369, 369, 370, 370, 370, + 371, 371, 372, 372, 373, 373, 373, 374, + 374, 375, 375, 376, 376, 377, 377, 377, + 378, 378, 379, 379, 380, 380, 380, 381, + 381, 382, 382, 382, 383, 383, 384, 384, + 385, 385, 385, 386, 386, 387, 387, 387, + 388, 388, 389, 389, 389, 390, 390, 391, + 391, 391, 392, 392, 393, 393, 393, 394, + 394, 394, 395, 395, 396, 396, 396, 397, + 397, 397, 398, 398, 399, 399, 399, 400, + 400, 400, 401, 401, 401, 402, 402, 402, + 403, 403, 404, 404, 404, 405, 405, 405, + 406, 406, 406, 407, 407, 407, 408, 408, + 408, 409, 409, 409, 409, 410, 410, 410, + 411, 411, 411, 412, 412, 412, 413, 413, + 413, 414, 414, 414, 414, 415, 415, 415, + 416, 416, 416, 416, 417, 417, 417, 418, + 418, 418, 418, 419, 419, 419, 419, 420, + 420, 420, 420, 421, 421, 421, 421, 422, + 422, 422, 422, 423, 423, 423, 423, 424, + 424, 424, 424, 425, 425, 425, 425, 425, + 426, 426, 426, 426, 427, 427, 427, 427, + 427, 428, 428, 428, 428, 428, 429, 429, + 429, 429, 429, 429, 430, 430, 430, 430, + 430, 430, 431, 431, 431, 431, 431, 431, + 432, 432, 432, 432, 432, 432, 432, 433, + 433, 433, 433, 433, 433, 433, 434, 434, + 434, 434, 434, 434, 434, 434, 434, 435, + 435, 435, 435, 435, 435, 435, 435, 435, + 435, 436, 436, 436, 436, 436, 436, 436, + 436, 436, 436, 436, 436, 436, 436, 436, + 436, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, + 436, 436, 436, 436, 436, 436, 436, 436, + 436, 436, 436, 436, 436, 436, 436, 435, + 435, 435, 435, 435, 435, 435, 435, 435, + 435, 434, 434, 434, 434, 434, 434, 434, + 434, 433, 433, 433, 433, 433, 433, 433, + 432, 432, 432, 432, 432, 432, 432, 431, + 431, 431, 431, 431, 430, 430, 430, 430, + 430, 429, 429, 429, 429, 429, 428, 428, + 428, 428, 428, 427, 427, 427, 427, 426, + 426, 426, 426, 425, 425, 425, 425, 424, + 424, 424, 424, 423, 423, 423, 423, 422, + 422, 422, 421, 421, 421, 420, 420, 420, + 420, 419, 419, 419, 418, 418, 418, 417, + 417, 417, 416, 416, 416, 415, 415, 415, + 414, 414, 413, 413, 413, 412, 412, 412, + 411, 411, 410, 410, 410, 409, 409, 409, + 408, 408, 407, 407, 406, 406, 406, 405, + 405, 404, 404, 403, 403, 403, 402, 402, + 401, 401, 400, 400, 399, 399, 398, 398, + 398, 397, 397, 396, 396, 395, 395, 394, + 394, 393, 393, 392, 392, 391, 391, 390, + 389, 389, 388, 388, 387, 387, 386, 386, + 385, 385, 384, 383, 383, 382, 382, 381, + 381, 380, 379, 379, 378, 378, 377, 376, + 376, 375, 375, 374, 373, 373, 372, 372, + 371, 370, 370, 369, 368, 368, 367, 367, + 366, 365, 365, 364, 363, 363, 362, 361, + 361, 360, 359, 358, 358, 357, 356, 356, + 355, 354, 354, 353, 352, 351, 351, 350, + 349, 349, 348, 347, 346, 346, 345, 344, + 343, 343, 342, 341, 340, 339, 339, 338, + 337, 336, 336, 335, 334, 333, 332, 332, + 331, 330, 329, 328, 328, 327, 326, 325, + 324, 323, 323, 322, 321, 320, 319, 318, + 318, 317, 316, 315, 314, 313, 312, 311, + 311, 310, 309, 308, 307, 306, 305, 304, + 303, 302, 302, 301, 300, 299, 298, 297, + 296, 295, 294, 293, 292, 291, 290, 289, + 288, 288, 287, 286, 285, 284, 283, 282, + 281, 280, 279, 278, 277, 276, 275, 274, + 273, 272, 271, 270, 269, 268, 267, 266, + 265, 264, 262, 261, 260, 259, 258, 257, + 256, 255, 254, 253, 252, 251, 250, 249, + 248, 247, 245, 244, 243, 242, 241, 240, + 239, 238, 237, 236, 234, 233, 232, 231, + 230, 229, 228, 227, 225, 224, 223, 222, + 221, 220, 218, 217, 216, 215, 214, 213, + 211, 210, 209, 208, 207, 206, 204, 203, + 202, 201, 200, 198, 197, 196, 195, 193, + 192, 191, 190, 189, 187, 186, 185, 184, + 182, 181, 180, 179, 177, 176, 175, 174, + 172, 171, 170, 168, 167, 166, 165, 163, + 162, 161, 159, 158, 157, 155, 154, 153, + 152, 150, 149, 148, 146, 145, 144, 142, + 141, 140, 138, 137, 136, 134, 133, 132, + 130, 129, 127, 126, 125, 123, 122, 121, + 119, 118, 116, 115, 114, 112, 111, 109, + 108, 107, 105, 104, 102, 101, 100, 98, + 97, 95, 94, 93, 91, 90, 88, 87, + 85, 84, 82, 81, 80, 78, 77, 75, + 74, 72, 71, 69, 68, 66, 65, 64, + 62, 61, 59, 58, 56, 55, 53, 52, + 50, 49, 47, 46, 44, 43, 41, 40, + 38, 37, 35, 34, 32, 30, 29, 27, + 26, 24, 23, 21, 20, 18, 17, 15, + 14, 12, 10, 9, 7, 6, 4, 3, + 1, 0, -2, -4, -5, -7, -8, -10, + -11, -13, -15, -16, -18, -19, -21, -23, + -24, -26, -27, -29, -31, -32, -34, -35, + -37, -39, -40, -42, -43, -45, -47, -48, + -50, -52, -53, -55, -57, -58, -60, -61, + -63, -65, -66, -68, -70, -71, -73, -75, + -76, -78, -80, -81, -83, -84, -86, -88, + -89, -91, -93, -94, -96, -98, -99, -101, + -103, -105, -106, -108, -110, -111, -113, -115, + -116, -118, -120, -121, -123, -125, -126, -128, + -130, -132, -133, -135, -137, -138, -140, -142, + -143, -145, -147, -149, -150, -152, -154, -155, + -157, -159, -161, -162, -164, -166, -167, -169, + -171, -173, -174, -176, -178, -180, -181, -183, + -185, -186, -188, -190, -192, -193, -195, -197, + -199, -200, -202, -204, -206, -207, -209, -211, + -213, -214, -216, -218, -219, -221, -223, -225, + -226, -228, -230, -232, -233, -235, -237, -239, + -240, -242, -244, -246, -247, -249, -251, -253, + -255, -256, -258, -260, -262, -263, -265, -267, + -269, -270, -272, -274, -276, -277, -279, -281, + -283, -284, -286, -288, -290, -291, -293, -295, + -297, -299, -300, -302, -304, -306, -307, -309, + -311, -313, -314, -316, -318, -320, -321, -323, + -325, -327, -328, -330, -332, -334, -336, -337, + -339, -341, -343, -344, -346, -348, -350, -351, + -353, -355, -357, -358, -360, -362, -364, -365, + -367, -369, -371, -372, -374, -376, -378, -379, + -381, -383, -385, -386, -388, -390, -392, -393, + -395, -397, -399, -400, -402, -404, -406, -407, + -409, -411, -413, -414, -416, -418, -419, -421, + -423, -425, -426, -428, -430, -432, -433, -435, + -437, -438, -440, -442, -444, -445, -447, -449, + -450, -452, -454, -456, -457, -459, -461, -462, + -464, -466, -468, -469, -471, -473, -474, -476, + -478, -479, -481, -483, -485, -486, -488, -490, + -491, -493, -495, -496, -498, -500, -501, -503, + -505, -506, -508, -510, -511, -513, -515, -516, + -518, -520, -521, -523, -525, -526, -528, -530, + -531, -533, -534, -536, -538, -539, -541, -543, + -544, -546, -547, -549, -551, -552, -554, -556, + -557, -559, -560, -562, -564, -565, -567, -568, + -570, -572, -573, -575, -576, -578, -579, -581, + -583, -584, -586, -587, -589, -590, -592, -594, + -595, -597, -598, -600, -601, -603, -604, -606, + -607, -609, -610, -612, -614, -615, -617, -618, + -620, -621, -623, -624, -626, -627, -629, -630, + -632, -633, -635, -636, -638, -639, -640, -642, + -643, -645, -646, -648, -649, -651, -652, -654, + -655, -656, -658, -659, -661, -662, -664, -665, + -666, -668, -669, -671, -672, -673, -675, -676, + -678, -679, -680, -682, -683, -685, -686, -687, + -689, -690, -691, -693, -694, -695, -697, -698, + -699, -701, -702, -703, -705, -706, -707, -709, + -710, -711, -713, -714, -715, -716, -718, -719, + -720, -722, -723, -724, -725, -727, -728, -729, + -730, -732, -733, -734, -735, -736, -738, -739, + -740, -741, -743, -744, -745, -746, -747, -748, + -750, -751, -752, -753, -754, -755, -757, -758, + -759, -760, -761, -762, -763, -765, -766, -767, + -768, -769, -770, -771, -772, -773, -774, -776, + -777, -778, -779, -780, -781, -782, -783, -784, + -785, -786, -787, -788, -789, -790, -791, -792, + -793, -794, -795, -796, -797, -798, -799, -800, + -801, -802, -803, -804, -805, -806, -807, -808, + -808, -809, -810, -811, -812, -813, -814, -815, + -816, -816, -817, -818, -819, -820, -821, -822, + -822, -823, -824, -825, -826, -827, -827, -828, + -829, -830, -831, -831, -832, -833, -834, -834, + -835, -836, -837, -837, -838, -839, -840, -840, + -841, -842, -842, -843, -844, -844, -845, -846, + -846, -847, -848, -848, -849, -850, -850, -851, + -852, -852, -853, -853, -854, -855, -855, -856, + -856, -857, -857, -858, -859, -859, -860, -860, + -861, -861, -862, -862, -863, -863, -864, -864, + -865, -865, -866, -866, -867, -867, -867, -868, + -868, -869, -869, -870, -870, -870, -871, -871, + -871, -872, -872, -873, -873, -873, -874, -874, + -874, -875, -875, -875, -876, -876, -876, -876, + -877, -877, -877, -878, -878, -878, -878, -879, + -879, -879, -879, -879, -880, -880, -880, -880, + -880, -881, -881, -881, -881, -881, -881, -881, + -882, -882, -882, -882, -882, -882, -882, -882, + -882, -882, -882, -882, -883, -883, -883, -883, + -883, -883, -883, -883, -883, -883, -883, -883, + -883, -883, -882, -882, -882, -882, -882, -882, + -882, -882, -882, -882, -882, -882, -881, -881, + -881, -881, -881, -881, -880, -880, -880, -880, + -880, -879, -879, -879, -879, -879, -878, -878, + -878, -878, -877, -877, -877, -876, -876, -876, + -876, -875, -875, -875, -874, -874, -874, -873, + -873, -872, -872, -872, -871, -871, -870, -870, + -870, -869, -869, -868, -868, -867, -867, -866, + -866, -865, -865, -864, -864, -863, -863, -862, + -862, -861, -861, -860, -860, -859, -858, -858, + -857, -857, -856, -855, -855, -854, -854, -853, + -852, -852, -851, -850, -850, -849, -848, -847, + -847, -846, -845, -845, -844, -843, -842, -842, + -841, -840, -839, -838, -838, -837, -836, -835, + -834, -833, -833, -832, -831, -830, -829, -828, + -827, -827, -826, -825, -824, -823, -822, -821, + -820, -819, -818, -817, -816, -815, -814, -813, + -812, -811, -810, -809, -808, -807, -806, -805, + -804, -803, -802, -801, -800, -798, -797, -796, + -795, -794, -793, -792, -791, -789, -788, -787, + -786, -785, -783, -782, -781, -780, -779, -777, + -776, -775, -774, -772, -771, -770, -769, -767, + -766, -765, -763, -762, -761, -759, -758, -757, + -755, -754, -753, -751, -750, -748, -747, -746, + -744, -743, -741, -740, -738, -737, -735, -734, + -733, -731, -730, -728, -727, -725, -724, -722, + -720, -719, -717, -716, -714, -713, -711, -710, + -708, -706, -705, -703, -702, -700, -698, -697, + -695, -693, -692, -690, -688, -687, -685, -683, + -682, -680, -678, -676, -675, -673, -671, -669, + -668, -666, -664, -662, -661, -659, -657, -655, + -653, -651, -650, -648, -646, -644, -642, -640, + -639, -637, -635, -633, -631, -629, -627, -625, + -623, -621, -619, -617, -615, -614, -612, -610, + -608, -606, -604, -602, -600, -598, -596, -594, + -592, -589, -587, -585, -583, -581, -579, -577, + -575, -573, -571, -569, -567, -564, -562, -560, + -558, -556, -554, -552, -549, -547, -545, -543, + -541, -538, -536, -534, -532, -530, -527, -525, + -523, -521, -518, -516, -514, -512, -509, -507, + -505, -502, -500, -498, -495, -493, -491, -488, + -486, -484, -481, -479, -477, -474, -472, -469, + -467, -465, -462, -460, -457, -455, -453, -450, + -448, -445, -443, -440, -438, -435, -433, -430, + -428, -425, -423, -420, -418, -415, -413, -410, + -408, -405, -403, -400, -398, -395, -392, -390, + -387, -385, -382, -380, -377, -374, -372, -369, + -366, -364, -361, -359, -356, -353, -351, -348, + -345, -343, -340, -337, -334, -332, -329, -326, + -324, -321, -318, -315, -313, -310, -307, -305, + -302, -299, -296, -293, -291, -288, -285, -282, + -280, -277, -274, -271, -268, -266, -263, -260, + -257, -254, -251, -248, -246, -243, -240, -237, + -234, -231, -228, -226, -223, -220, -217, -214, + -211, -208, -205, -202, -199, -196, -194, -191, + -188, -185, -182, -179, -176, -173, -170, -167, + -164, -161, -158, -155, -152, -149, -146, -143, + -140, -137, -134, -131, -128, -125, -122, -119, + -116, -113, -110, -107, -104, -100, -97, -94, + -91, -88, -85, -82, -79, -76, -73, -70, + -67, -63, -60, -57, -54, -51, -48, -45, + -42, -39, -35, -32, -29, -26, -23, -20, + -16, -13, -10, -7, -4, -1, 2, 6, + 9, 12, 15, 18, 22, 25, 28, 31, + 34, 38, 41, 44, 47, 50, 54, 57, + 60, 63, 67, 70, 73, 76, 79, 83, + 86, 89, 92, 96, 99, 102, 105, 109, + 112, 115, 118, 122, 125, 128, 132, 135, + 138, 141, 145, 148, 151, 154, 158, 161, + 164, 168, 171, 174, 178, 181, 184, 187, + 191, 194, 197, 201, 204, 207, 211, 214, + 217, 221, 224, 227, 230, 234, 237, 240, + 244, 247, 250, 254, 257, 260, 264, 267, + 270, 274, 277, 280, 284, 287, 290, 294, + 297, 300, 304, 307, 310, 314, 317, 320, + 324, 327, 330, 334, 337, 341, 344, 347, + 351, 354, 357, 361, 364, 367, 371, 374, + 377, 381, 384, 387, 391, 394, 397, 401, + 404, 407, 411, 414, 417, 421, 424, 427, + 431, 434, 437, 441, 444, 448, 451, 454, + 458, 461, 464, 468, 471, 474, 478, 481, + 484, 488, 491, 494, 498, 501, 504, 507, + 511, 514, 517, 521, 524, 527, 531, 534, + 537, 541, 544, 547, 551, 554, 557, 560, + 564, 567, 570, 574, 577, 580, 584, 587, + 590, 593, 597, 600, 603, 606, 610, 613, + 616, 620, 623, 626, 629, 633, 636, 639, + 642, 646, 649, 652, 655, 659, 662, 665, + 668, 671, 675, 678, 681, 684, 688, 691, + 694, 697, 700, 704, 707, 710, 713, 716, + 720, 723, 726, 729, 732, 735, 739, 742, + 745, 748, 751, 754, 758, 761, 764, 767, + 770, 773, 776, 779, 783, 786, 789, 792, + 795, 798, 801, 804, 807, 810, 813, 817, + 820, 823, 826, 829, 832, 835, 838, 841, + 844, 847, 850, 853, 856, 859, 862, 865, + 868, 871, 874, 877, 880, 883, 886, 889, + 892, 895, 898, 901, 904, 907, 910, 913, + 915, 918, 921, 924, 927, 930, 933, 936, + 939, 942, 944, 947, 950, 953, 956, 959, + 961, 964, 967, 970, 973, 976, 978, 981, + 984, 987, 990, 992, 995, 998, 1001, 1003, + 1006, 1009, 1012, 1014, 1017, 1020, 1022, 1025, + 1028, 1030, 1033, 1036, 1038, 1041, 1044, 1046, + 1049, 1052, 1054, 1057, 1060, 1062, 1065, 1067, + 1070, 1073, 1075, 1078, 1080, 1083, 1085, 1088, + 1090, 1093, 1095, 1098, 1100, 1103, 1105, 1108, + 1110, 1113, 1115, 1118, 1120, 1123, 1125, 1128, + 1130, 1132, 1135, 1137, 1140, 1142, 1144, 1147, + 1149, 1151, 1154, 1156, 1158, 1161, 1163, 1165, + 1168, 1170, 1172, 1174, 1177, 1179, 1181, 1183, + 1186, 1188, 1190, 1192, 1195, 1197, 1199, 1201, + 1203, 1205, 1208, 1210, 1212, 1214, 1216, 1218, + 1220, 1222, 1224, 1227, 1229, 1231, 1233, 1235, + 1237, 1239, 1241, 1243, 1245, 1247, 1249, 1251, + 1253, 1255, 1257, 1258, 1260, 1262, 1264, 1266, + 1268, 1270, 1272, 1274, 1275, 1277, 1279, 1281, + 1283, 1284, 1286, 1288, 1290, 1292, 1293, 1295, + 1297, 1299, 1300, 1302, 1304, 1305, 1307, 1309, + 1310, 1312, 1314, 1315, 1317, 1318, 1320, 1322, + 1323, 1325, 1326, 1328, 1329, 1331, 1332, 1334, + 1335, 1337, 1338, 1340, 1341, 1343, 1344, 1346, + 1347, 1348, 1350, 1351, 1353, 1354, 1355, 1357, + 1358, 1359, 1361, 1362, 1363, 1364, 1366, 1367, + 1368, 1369, 1371, 1372, 1373, 1374, 1375, 1377, + 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1386, + 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, + 1395, 1396, 1397, 1398, 1399, 1400, 1400, 1401, + 1402, 1403, 1404, 1405, 1406, 1406, 1407, 1408, + 1409, 1410, 1410, 1411, 1412, 1413, 1413, 1414, + 1415, 1416, 1416, 1417, 1418, 1418, 1419, 1420, + 1420, 1421, 1421, 1422, 1422, 1423, 1424, 1424, + 1425, 1425, 1426, 1426, 1427, 1427, 1427, 1428, + 1428, 1429, 1429, 1429, 1430, 1430, 1431, 1431, + 1431, 1432, 1432, 1432, 1432, 1433, 1433, 1433, + 1433, 1434, 1434, 1434, 1434, 1434, 1434, 1435, + 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, + 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, + 1435, 1435, 1435, 1435, 1435, 1434, 1434, 1434, + 1434, 1434, 1434, 1433, 1433, 1433, 1433, 1432, + 1432, 1432, 1432, 1431, 1431, 1431, 1430, 1430, + 1429, 1429, 1429, 1428, 1428, 1427, 1427, 1426, + 1426, 1425, 1425, 1424, 1424, 1423, 1423, 1422, + 1422, 1421, 1420, 1420, 1419, 1419, 1418, 1417, + 1416, 1416, 1415, 1414, 1414, 1413, 1412, 1411, + 1410, 1410, 1409, 1408, 1407, 1406, 1405, 1405, + 1404, 1403, 1402, 1401, 1400, 1399, 1398, 1397, + 1396, 1395, 1394, 1393, 1392, 1391, 1390, 1389, + 1387, 1386, 1385, 1384, 1383, 1382, 1380, 1379, + 1378, 1377, 1376, 1374, 1373, 1372, 1370, 1369, + 1368, 1367, 1365, 1364, 1362, 1361, 1360, 1358, + 1357, 1355, 1354, 1352, 1351, 1349, 1348, 1346, + 1345, 1343, 1342, 1340, 1339, 1337, 1335, 1334, + 1332, 1330, 1329, 1327, 1325, 1324, 1322, 1320, + 1319, 1317, 1315, 1313, 1311, 1310, 1308, 1306, + 1304, 1302, 1300, 1298, 1297, 1295, 1293, 1291, + 1289, 1287, 1285, 1283, 1281, 1279, 1277, 1275, + 1273, 1271, 1268, 1266, 1264, 1262, 1260, 1258, + 1256, 1253, 1251, 1249, 1247, 1245, 1242, 1240, + 1238, 1236, 1233, 1231, 1229, 1226, 1224, 1222, + 1219, 1217, 1214, 1212, 1210, 1207, 1205, 1202, + 1200, 1197, 1195, 1192, 1190, 1187, 1185, 1182, + 1179, 1177, 1174, 1172, 1169, 1166, 1164, 1161, + 1158, 1156, 1153, 1150, 1148, 1145, 1142, 1139, + 1136, 1134, 1131, 1128, 1125, 1122, 1119, 1117, + 1114, 1111, 1108, 1105, 1102, 1099, 1096, 1093, + 1090, 1087, 1084, 1081, 1078, 1075, 1072, 1069, + 1066, 1063, 1060, 1057, 1053, 1050, 1047, 1044, + 1041, 1038, 1034, 1031, 1028, 1025, 1021, 1018, + 1015, 1012, 1008, 1005, 1002, 998, 995, 992, + 988, 985, 981, 978, 975, 971, 968, 964, + 961, 957, 954, 950, 947, 943, 940, 936, + 933, 929, 926, 922, 918, 915, 911, 908, + 904, 900, 897, 893, 889, 885, 882, 878, + 874, 871, 867, 863, 859, 855, 852, 848, + 844, 840, 836, 832, 829, 825, 821, 817, + 813, 809, 805, 801, 797, 793, 789, 785, + 781, 777, 773, 769, 765, 761, 757, 753, + 749, 745, 741, 737, 732, 728, 724, 720, + 716, 712, 707, 703, 699, 695, 691, 686, + 682, 678, 674, 669, 665, 661, 656, 652, + 648, 643, 639, 635, 630, 626, 622, 617, + 613, 608, 604, 600, 595, 591, 586, 582, + 577, 573, 568, 564, 559, 555, 550, 546, + 541, 537, 532, 528, 523, 518, 514, 509, + 505, 500, 495, 491, 486, 481, 477, 472, + 467, 463, 458, 453, 448, 444, 439, 434, + 429, 425, 420, 415, 410, 406, 401, 396, + 391, 386, 382, 377, 372, 367, 362, 357, + 352, 347, 343, 338, 333, 328, 323, 318, + 313, 308, 303, 298, 293, 288, 283, 278, + 273, 268, 263, 258, 253, 248, 243, 238, + 233, 228, 223, 218, 213, 208, 203, 198, + 193, 187, 182, 177, 172, 167, 162, 157, + 152, 146, 141, 136, 131, 126, 121, 115, + 110, 105, 100, 95, 89, 84, 79, 74, + 68, 63, 58, 53, 47, 42, 37, 32, + 26, 21, 16, 10, 5, 0, -5, -11, + -16, -21, -27, -32, -37, -43, -48, -53, + -59, -64, -70, -75, -80, -86, -91, -96, + -102, -107, -113, -118, -123, -129, -134, -140, + -145, -150, -156, -161, -167, -172, -178, -183, + -188, -194, -199, -205, -210, -216, -221, -227, + -232, -238, -243, -248, -254, -259, -265, -270, + -276, -281, -287, -292, -298, -303, -309, -314, + -320, -325, -331, -336, -342, -347, -353, -358, + -364, -369, -375, -381, -386, -392, -397, -403, + -408, -414, -419, -425, -430, -436, -441, -447, + -452, -458, -464, -469, -475, -480, -486, -491, + -497, -502, -508, -513, -519, -524, -530, -536, + -541, -547, -552, -558, -563, -569, -574, -580, + -585, -591, -597, -602, -608, -613, -619, -624, + -630, -635, -641, -646, -652, -658, -663, -669, + -674, -680, -685, -691, -696, -702, -707, -713, + -718, -724, -729, -735, -740, -746, -751, -757, + -762, -768, -773, -779, -784, -790, -795, -801, + -806, -812, -817, -823, -828, -834, -839, -845, + -850, -856, -861, -867, -872, -877, -883, -888, + -894, -899, -905, -910, -916, -921, -926, -932, + -937, -943, -948, -953, -959, -964, -970, -975, + -980, -986, -991, -997, -1002, -1007, -1013, -1018, + -1023, -1029, -1034, -1039, -1045, -1050, -1055, -1061, + -1066, -1071, -1077, -1082, -1087, -1092, -1098, -1103, + -1108, -1114, -1119, -1124, -1129, -1135, -1140, -1145, + -1150, -1155, -1161, -1166, -1171, -1176, -1181, -1187, + -1192, -1197, -1202, -1207, -1212, -1218, -1223, -1228, + -1233, -1238, -1243, -1248, -1253, -1258, -1264, -1269, + -1274, -1279, -1284, -1289, -1294, -1299, -1304, -1309, + -1314, -1319, -1324, -1329, -1334, -1339, -1344, -1349, + -1354, -1359, -1364, -1369, -1374, -1378, -1383, -1388, + -1393, -1398, -1403, -1408, -1413, -1417, -1422, -1427, + -1432, -1437, -1441, -1446, -1451, -1456, -1461, -1465, + -1470, -1475, -1480, -1484, -1489, -1494, -1498, -1503, + -1508, -1512, -1517, -1522, -1526, -1531, -1535, -1540, + -1545, -1549, -1554, -1558, -1563, -1567, -1572, -1577, + -1581, -1586, -1590, -1594, -1599, -1603, -1608, -1612, + -1617, -1621, -1625, -1630, -1634, -1639, -1643, -1647, + -1652, -1656, -1660, -1665, -1669, -1673, -1677, -1682, + -1686, -1690, -1694, -1699, -1703, -1707, -1711, -1715, + -1719, -1724, -1728, -1732, -1736, -1740, -1744, -1748, + -1752, -1756, -1760, -1764, -1768, -1772, -1776, -1780, + -1784, -1788, -1792, -1796, -1800, -1804, -1807, -1811, + -1815, -1819, -1823, -1827, -1830, -1834, -1838, -1842, + -1845, -1849, -1853, -1857, -1860, -1864, -1868, -1871, + -1875, -1878, -1882, -1886, -1889, -1893, -1896, -1900, + -1903, -1907, -1910, -1914, -1917, -1921, -1924, -1927, + -1931, -1934, -1938, -1941, -1944, -1948, -1951, -1954, + -1957, -1961, -1964, -1967, -1970, -1974, -1977, -1980, + -1983, -1986, -1989, -1992, -1996, -1999, -2002, -2005, + -2008, -2011, -2014, -2017, -2020, -2023, -2026, -2029, + -2031, -2034, -2037, -2040, -2043, -2046, -2049, -2051, + -2054, -2057, -2060, -2062, -2065, -2068, -2070, -2073, + -2076, -2078, -2081, -2083, -2086, -2089, -2091, -2094, + -2096, -2099, -2101, -2104, -2106, -2108, -2111, -2113, + -2116, -2118, -2120, -2122, -2125, -2127, -2129, -2132, + -2134, -2136, -2138, -2140, -2142, -2145, -2147, -2149, + -2151, -2153, -2155, -2157, -2159, -2161, -2163, -2165, + -2167, -2169, -2171, -2173, -2174, -2176, -2178, -2180, + -2182, -2184, -2185, -2187, -2189, -2190, -2192, -2194, + -2195, -2197, -2199, -2200, -2202, -2203, -2205, -2206, + -2208, -2209, -2211, -2212, -2214, -2215, -2216, -2218, + -2219, -2220, -2222, -2223, -2224, -2225, -2227, -2228, + -2229, -2230, -2231, -2232, -2233, -2235, -2236, -2237, + -2238, -2239, -2240, -2241, -2242, -2242, -2243, -2244, + -2245, -2246, -2247, -2248, -2248, -2249, -2250, -2251, + -2251, -2252, -2253, -2253, -2254, -2254, -2255, -2256, + -2256, -2257, -2257, -2258, -2258, -2259, -2259, -2259, + -2260, -2260, -2260, -2261, -2261, -2261, -2261, -2262, + -2262, -2262, -2262, -2262, -2263, -2263, -2263, -2263, + -2263, -2263, -2263, -2263, -2263, -2263, -2263, -2263, + -2262, -2262, -2262, -2262, -2262, -2261, -2261, -2261, + -2261, -2260, -2260, -2260, -2259, -2259, -2258, -2258, + -2257, -2257, -2256, -2256, -2255, -2255, -2254, -2254, + -2253, -2252, -2252, -2251, -2250, -2249, -2249, -2248, + -2247, -2246, -2245, -2244, -2244, -2243, -2242, -2241, + -2240, -2239, -2238, -2237, -2236, -2234, -2233, -2232, + -2231, -2230, -2229, -2227, -2226, -2225, -2224, -2222, + -2221, -2220, -2218, -2217, -2215, -2214, -2212, -2211, + -2209, -2208, -2206, -2205, -2203, -2202, -2200, -2198, + -2197, -2195, -2193, -2191, -2190, -2188, -2186, -2184, + -2182, -2180, -2179, -2177, -2175, -2173, -2171, -2169, + -2167, -2165, -2162, -2160, -2158, -2156, -2154, -2152, + -2150, -2147, -2145, -2143, -2140, -2138, -2136, -2133, + -2131, -2129, -2126, -2124, -2121, -2119, -2116, -2114, + -2111, -2108, -2106, -2103, -2101, -2098, -2095, -2092, + -2090, -2087, -2084, -2081, -2079, -2076, -2073, -2070, + -2067, -2064, -2061, -2058, -2055, -2052, -2049, -2046, + -2043, -2040, -2037, -2033, -2030, -2027, -2024, -2021, + -2017, -2014, -2011, -2007, -2004, -2001, -1997, -1994, + -1990, -1987, -1983, -1980, -1976, -1973, -1969, -1966, + -1962, -1958, -1955, -1951, -1947, -1944, -1940, -1936, + -1932, -1928, -1925, -1921, -1917, -1913, -1909, -1905, + -1901, -1897, -1893, -1889, -1885, -1881, -1877, -1873, + -1869, -1864, -1860, -1856, -1852, -1848, -1843, -1839, + -1835, -1830, -1826, -1822, -1817, -1813, -1809, -1804, + -1800, -1795, -1791, -1786, -1782, -1777, -1772, -1768, + -1763, -1758, -1754, -1749, -1744, -1740, -1735, -1730, + -1725, -1720, -1716, -1711, -1706, -1701, -1696, -1691, + -1686, -1681, -1676, -1671, -1666, -1661, -1656, -1651, + -1646, -1640, -1635, -1630, -1625, -1620, -1614, -1609, + -1604, -1599, -1593, -1588, -1582, -1577, -1572, -1566, + -1561, -1555, -1550, -1544, -1539, -1533, -1528, -1522, + -1516, -1511, -1505, -1500, -1494, -1488, -1482, -1477, + -1471, -1465, -1459, -1454, -1448, -1442, -1436, -1430, + -1424, -1418, -1412, -1406, -1400, -1394, -1388, -1382, + -1376, -1370, -1364, -1358, -1352, -1346, -1339, -1333, + -1327, -1321, -1315, -1308, -1302, -1296, -1289, -1283, + -1277, -1270, -1264, -1258, -1251, -1245, -1238, -1232, + -1225, -1219, -1212, -1206, -1199, -1193, -1186, -1179, + -1173, -1166, -1159, -1153, -1146, -1139, -1133, -1126, + -1119, -1112, -1105, -1099, -1092, -1085, -1078, -1071, + -1064, -1057, -1050, -1044, -1037, -1030, -1023, -1016, + -1009, -1001, -994, -987, -980, -973, -966, -959, + -952, -945, -937, -930, -923, -916, -908, -901, + -894, -887, -879, -872, -865, -857, -850, -842, + -835, -828, -820, -813, -805, -798, -790, -783, + -775, -768, -760, -753, -745, -738, -730, -722, + -715, -707, -699, -692, -684, -676, -669, -661, + -653, -645, -638, -630, -622, -614, -606, -599, + -591, -583, -575, -567, -559, -551, -543, -536, + -528, -520, -512, -504, -496, -488, -480, -472, + -464, -456, -447, -439, -431, -423, -415, -407, + -399, -391, -382, -374, -366, -358, -350, -342, + -333, -325, -317, -309, -300, -292, -284, -275, + -267, -259, -250, -242, -234, -225, -217, -209, + -200, -192, -183, -175, -167, -158, -150, -141, + -133, -124, -116, -107, -99, -90, -82, -73, + -65, -56, -48, -39, -30, -22, -13, -5, + 4, 12, 21, 30, 38, 47, 56, 64, + 73, 82, 90, 99, 108, 116, 125, 134, + 143, 151, 160, 169, 178, 186, 195, 204, + 213, 221, 230, 239, 248, 257, 265, 274, + 283, 292, 301, 310, 318, 327, 336, 345, + 354, 363, 372, 381, 389, 398, 407, 416, + 425, 434, 443, 452, 461, 470, 479, 488, + 496, 505, 514, 523, 532, 541, 550, 559, + 568, 577, 586, 595, 604, 613, 622, 631, + 640, 649, 658, 667, 676, 685, 694, 703, + 712, 721, 730, 739, 748, 757, 766, 775, + 784, 793, 802, 811, 820, 829, 838, 847, + 856, 865, 874, 883, 892, 901, 910, 920, + 929, 938, 947, 956, 965, 974, 983, 992, + 1001, 1010, 1019, 1028, 1037, 1046, 1055, 1064, + 1073, 1082, 1091, 1100, 1109, 1118, 1127, 1136, + 1145, 1154, 1163, 1172, 1181, 1190, 1199, 1208, + 1217, 1226, 1235, 1244, 1253, 1262, 1271, 1280, + 1289, 1298, 1307, 1316, 1324, 1333, 1342, 1351, + 1360, 1369, 1378, 1387, 1396, 1405, 1414, 1423, + 1431, 1440, 1449, 1458, 1467, 1476, 1485, 1493, + 1502, 1511, 1520, 1529, 1538, 1546, 1555, 1564, + 1573, 1582, 1590, 1599, 1608, 1617, 1625, 1634, + 1643, 1652, 1660, 1669, 1678, 1687, 1695, 1704, + 1713, 1721, 1730, 1739, 1747, 1756, 1765, 1773, + 1782, 1790, 1799, 1808, 1816, 1825, 1833, 1842, + 1850, 1859, 1867, 1876, 1884, 1893, 1901, 1910, + 1918, 1927, 1935, 1944, 1952, 1961, 1969, 1977, + 1986, 1994, 2002, 2011, 2019, 2027, 2036, 2044, + 2052, 2061, 2069, 2077, 2085, 2094, 2102, 2110, + 2118, 2127, 2135, 2143, 2151, 2159, 2167, 2175, + 2183, 2192, 2200, 2208, 2216, 2224, 2232, 2240, + 2248, 2256, 2264, 2272, 2280, 2288, 2296, 2303, + 2311, 2319, 2327, 2335, 2343, 2351, 2358, 2366, + 2374, 2382, 2389, 2397, 2405, 2412, 2420, 2428, + 2435, 2443, 2451, 2458, 2466, 2473, 2481, 2489, + 2496, 2504, 2511, 2518, 2526, 2533, 2541, 2548, + 2556, 2563, 2570, 2578, 2585, 2592, 2599, 2607, + 2614, 2621, 2628, 2636, 2643, 2650, 2657, 2664, + 2671, 2678, 2685, 2692, 2700, 2707, 2714, 2720, + 2727, 2734, 2741, 2748, 2755, 2762, 2769, 2776, + 2782, 2789, 2796, 2803, 2809, 2816, 2823, 2829, + 2836, 2843, 2849, 2856, 2862, 2869, 2875, 2882, + 2888, 2895, 2901, 2908, 2914, 2920, 2927, 2933, + 2939, 2945, 2952, 2958, 2964, 2970, 2977, 2983, + 2989, 2995, 3001, 3007, 3013, 3019, 3025, 3031, + 3037, 3043, 3049, 3055, 3060, 3066, 3072, 3078, + 3084, 3089, 3095, 3101, 3106, 3112, 3118, 3123, + 3129, 3134, 3140, 3145, 3151, 3156, 3162, 3167, + 3172, 3178, 3183, 3188, 3193, 3199, 3204, 3209, + 3214, 3219, 3224, 3230, 3235, 3240, 3245, 3250, + 3255, 3260, 3264, 3269, 3274, 3279, 3284, 3289, + 3293, 3298, 3303, 3307, 3312, 3317, 3321, 3326, + 3330, 3335, 3339, 3344, 3348, 3352, 3357, 3361, + 3365, 3370, 3374, 3378, 3382, 3387, 3391, 3395, + 3399, 3403, 3407, 3411, 3415, 3419, 3423, 3427, + 3430, 3434, 3438, 3442, 3446, 3449, 3453, 3457, + 3460, 3464, 3467, 3471, 3474, 3478, 3481, 3485, + 3488, 3491, 3495, 3498, 3501, 3505, 3508, 3511, + 3514, 3517, 3520, 3523, 3526, 3529, 3532, 3535, + 3538, 3541, 3544, 3547, 3549, 3552, 3555, 3557, + 3560, 3563, 3565, 3568, 3570, 3573, 3575, 3578, + 3580, 3583, 3585, 3587, 3589, 3592, 3594, 3596, + 3598, 3600, 3602, 3604, 3606, 3608, 3610, 3612, + 3614, 3616, 3618, 3620, 3621, 3623, 3625, 3626, + 3628, 3630, 3631, 3633, 3634, 3635, 3637, 3638, + 3640, 3641, 3642, 3643, 3645, 3646, 3647, 3648, + 3649, 3650, 3651, 3652, 3653, 3654, 3655, 3656, + 3657, 3657, 3658, 3659, 3659, 3660, 3661, 3661, + 3662, 3662, 3663, 3663, 3664, 3664, 3664, 3665, + 3665, 3665, 3665, 3665, 3665, 3666, 3666, 3666, + 3666, 3666, 3665, 3665, 3665, 3665, 3665, 3664, + 3664, 3664, 3663, 3663, 3663, 3662, 3662, 3661, + 3660, 3660, 3659, 3658, 3658, 3657, 3656, 3655, + 3654, 3653, 3652, 3651, 3650, 3649, 3648, 3647, + 3646, 3645, 3644, 3642, 3641, 3640, 3638, 3637, + 3635, 3634, 3632, 3631, 3629, 3627, 3626, 3624, + 3622, 3621, 3619, 3617, 3615, 3613, 3611, 3609, + 3607, 3605, 3603, 3601, 3598, 3596, 3594, 3592, + 3589, 3587, 3585, 3582, 3580, 3577, 3575, 3572, + 3569, 3567, 3564, 3561, 3558, 3556, 3553, 3550, + 3547, 3544, 3541, 3538, 3535, 3532, 3528, 3525, + 3522, 3519, 3515, 3512, 3509, 3505, 3502, 3498, + 3495, 3491, 3488, 3484, 3480, 3477, 3473, 3469, + 3465, 3461, 3458, 3454, 3450, 3446, 3442, 3437, + 3433, 3429, 3425, 3421, 3416, 3412, 3408, 3403, + 3399, 3395, 3390, 3385, 3381, 3376, 3372, 3367, + 3362, 3357, 3353, 3348, 3343, 3338, 3333, 3328, + 3323, 3318, 3313, 3308, 3303, 3297, 3292, 3287, + 3282, 3276, 3271, 3265, 3260, 3254, 3249, 3243, + 3238, 3232, 3226, 3221, 3215, 3209, 3203, 3197, + 3191, 3185, 3179, 3173, 3167, 3161, 3155, 3149, + 3143, 3136, 3130, 3124, 3117, 3111, 3105, 3098, + 3092, 3085, 3079, 3072, 3065, 3059, 3052, 3045, + 3038, 3031, 3025, 3018, 3011, 3004, 2997, 2990, + 2983, 2975, 2968, 2961, 2954, 2947, 2939, 2932, + 2925, 2917, 2910, 2902, 2895, 2887, 2879, 2872, + 2864, 2856, 2849, 2841, 2833, 2825, 2817, 2809, + 2801, 2793, 2785, 2777, 2769, 2761, 2753, 2745, + 2737, 2728, 2720, 2712, 2703, 2695, 2686, 2678, + 2669, 2661, 2652, 2644, 2635, 2626, 2617, 2609, + 2600, 2591, 2582, 2573, 2564, 2555, 2546, 2537, + 2528, 2519, 2510, 2501, 2491, 2482, 2473, 2464, + 2454, 2445, 2435, 2426, 2417, 2407, 2397, 2388, + 2378, 2369, 2359, 2349, 2339, 2330, 2320, 2310, + 2300, 2290, 2280, 2270, 2260, 2250, 2240, 2230, + 2220, 2209, 2199, 2189, 2179, 2168, 2158, 2148, + 2137, 2127, 2116, 2106, 2095, 2085, 2074, 2063, + 2053, 2042, 2031, 2021, 2010, 1999, 1988, 1977, + 1966, 1955, 1944, 1933, 1922, 1911, 1900, 1889, + 1878, 1867, 1855, 1844, 1833, 1821, 1810, 1799, + 1787, 1776, 1764, 1753, 1741, 1730, 1718, 1707, + 1695, 1683, 1671, 1660, 1648, 1636, 1624, 1612, + 1601, 1589, 1577, 1565, 1553, 1541, 1529, 1517, + 1504, 1492, 1480, 1468, 1456, 1443, 1431, 1419, + 1407, 1394, 1382, 1369, 1357, 1344, 1332, 1319, + 1307, 1294, 1282, 1269, 1256, 1244, 1231, 1218, + 1205, 1193, 1180, 1167, 1154, 1141, 1128, 1115, + 1102, 1089, 1076, 1063, 1050, 1037, 1024, 1011, + 998, 984, 971, 958, 945, 931, 918, 905, + 891, 878, 864, 851, 838, 824, 811, 797, + 783, 770, 756, 743, 729, 715, 702, 688, + 674, 660, 647, 633, 619, 605, 591, 577, + 563, 549, 535, 521, 507, 493, 479, 465, + 451, 437, 423, 409, 395, 380, 366, 352, + 338, 323, 309, 295, 280, 266, 252, 237, + 223, 209, 194, 180, 165, 151, 136, 122, + 107, 92, 78, 63, 49, 34, 19, 5, + -10, -25, -40, -54, -69, -84, -99, -114, + -128, -143, -158, -173, -188, -203, -218, -233, + -248, -263, -278, -293, -308, -323, -338, -353, + -368, -383, -398, -413, -428, -443, -459, -474, + -489, -504, -519, -535, -550, -565, -580, -596, + -611, -626, -642, -657, -672, -688, -703, -718, + -734, -749, -765, -780, -795, -811, -826, -842, + -857, -873, -888, -904, -919, -935, -950, -966, + -981, -997, -1013, -1028, -1044, -1059, -1075, -1091, + -1106, -1122, -1137, -1153, -1169, -1184, -1200, -1216, + -1231, -1247, -1263, -1278, -1294, -1310, -1326, -1341, + -1357, -1373, -1389, -1404, -1420, -1436, -1452, -1467, + -1483, -1499, -1515, -1531, -1546, -1562, -1578, -1594, + -1610, -1625, -1641, -1657, -1673, -1689, -1705, -1720, + -1736, -1752, -1768, -1784, -1800, -1815, -1831, -1847, + -1863, -1879, -1895, -1911, -1926, -1942, -1958, -1974, + -1990, -2006, -2022, -2037, -2053, -2069, -2085, -2101, + -2117, -2133, -2148, -2164, -2180, -2196, -2212, -2228, + -2244, -2259, -2275, -2291, -2307, -2323, -2339, -2354, + -2370, -2386, -2402, -2418, -2433, -2449, -2465, -2481, + -2497, -2512, -2528, -2544, -2560, -2576, -2591, -2607, + -2623, -2639, -2654, -2670, -2686, -2701, -2717, -2733, + -2749, -2764, -2780, -2796, -2811, -2827, -2843, -2858, + -2874, -2890, -2905, -2921, -2936, -2952, -2968, -2983, + -2999, -3014, -3030, -3045, -3061, -3076, -3092, -3107, + -3123, -3138, -3154, -3169, -3185, -3200, -3216, -3231, + -3246, -3262, -3277, -3293, -3308, -3323, -3339, -3354, + -3369, -3385, -3400, -3415, -3430, -3446, -3461, -3476, + -3491, -3506, -3521, -3537, -3552, -3567, -3582, -3597, + -3612, -3627, -3642, -3657, -3672, -3687, -3702, -3717, + -3732, -3747, -3762, -3777, -3792, -3807, -3821, -3836, + -3851, -3866, -3881, -3895, -3910, -3925, -3939, -3954, + -3969, -3983, -3998, -4012, -4027, -4042, -4056, -4071, + -4085, -4100, -4114, -4128, -4143, -4157, -4172, -4186, + -4200, -4215, -4229, -4243, -4257, -4271, -4286, -4300, + -4314, -4328, -4342, -4356, -4370, -4384, -4398, -4412, + -4426, -4440, -4454, -4468, -4482, -4495, -4509, -4523, + -4537, -4550, -4564, -4578, -4591, -4605, -4619, -4632, + -4646, -4659, -4673, -4686, -4699, -4713, -4726, -4740, + -4753, -4766, -4779, -4793, -4806, -4819, -4832, -4845, + -4858, -4871, -4884, -4897, -4910, -4923, -4936, -4949, + -4962, -4974, -4987, -5000, -5013, -5025, -5038, -5051, + -5063, -5076, -5088, -5101, -5113, -5125, -5138, -5150, + -5162, -5175, -5187, -5199, -5211, -5224, -5236, -5248, + -5260, -5272, -5284, -5296, -5308, -5319, -5331, -5343, + -5355, -5366, -5378, -5390, -5401, -5413, -5424, -5436, + -5447, -5459, -5470, -5482, -5493, -5504, -5515, -5527, + -5538, -5549, -5560, -5571, -5582, -5593, -5604, -5615, + -5626, -5636, -5647, -5658, -5668, -5679, -5690, -5700, + -5711, -5721, -5732, -5742, -5752, -5763, -5773, -5783, + -5793, -5804, -5814, -5824, -5834, -5844, -5854, -5863, + -5873, -5883, -5893, -5903, -5912, -5922, -5931, -5941, + -5950, -5960, -5969, -5979, -5988, -5997, -6006, -6016, + -6025, -6034, -6043, -6052, -6061, -6070, -6078, -6087, + -6096, -6105, -6113, -6122, -6131, -6139, -6148, -6156, + -6164, -6173, -6181, -6189, -6197, -6205, -6214, -6222, + -6230, -6238, -6245, -6253, -6261, -6269, -6276, -6284, + -6292, -6299, -6307, -6314, -6321, -6329, -6336, -6343, + -6350, -6358, -6365, -6372, -6379, -6386, -6392, -6399, + -6406, -6413, -6419, -6426, -6433, -6439, -6445, -6452, + -6458, -6464, -6471, -6477, -6483, -6489, -6495, -6501, + -6507, -6513, -6519, -6524, -6530, -6536, -6541, -6547, + -6552, -6558, -6563, -6568, -6573, -6579, -6584, -6589, + -6594, -6599, -6604, -6608, -6613, -6618, -6623, -6627, + -6632, -6636, -6641, -6645, -6649, -6654, -6658, -6662, + -6666, -6670, -6674, -6678, -6682, -6685, -6689, -6693, + -6696, -6700, -6703, -6707, -6710, -6714, -6717, -6720, + -6723, -6726, -6729, -6732, -6735, -6738, -6741, -6743, + -6746, -6748, -6751, -6753, -6756, -6758, -6760, -6763, + -6765, -6767, -6769, -6771, -6773, -6774, -6776, -6778, + -6779, -6781, -6783, -6784, -6785, -6787, -6788, -6789, + -6790, -6791, -6792, -6793, -6794, -6795, -6795, -6796, + -6797, -6797, -6798, -6798, -6798, -6799, -6799, -6799, + -6799, -6799, -6799, -6799, -6799, -6798, -6798, -6798, + -6797, -6797, -6796, -6795, -6795, -6794, -6793, -6792, + -6791, -6790, -6789, -6788, -6786, -6785, -6784, -6782, + -6781, -6779, -6777, -6776, -6774, -6772, -6770, -6768, + -6766, -6764, -6761, -6759, -6757, -6754, -6752, -6749, + -6747, -6744, -6741, -6738, -6735, -6732, -6729, -6726, + -6723, -6719, -6716, -6713, -6709, -6706, -6702, -6698, + -6694, -6691, -6687, -6683, -6679, -6674, -6670, -6666, + -6662, -6657, -6653, -6648, -6643, -6639, -6634, -6629, + -6624, -6619, -6614, -6609, -6604, -6598, -6593, -6588, + -6582, -6576, -6571, -6565, -6559, -6553, -6547, -6541, + -6535, -6529, -6523, -6517, -6510, -6504, -6497, -6491, + -6484, -6477, -6470, -6463, -6456, -6449, -6442, -6435, + -6428, -6420, -6413, -6405, -6398, -6390, -6382, -6374, + -6367, -6359, -6351, -6343, -6334, -6326, -6318, -6309, + -6301, -6292, -6284, -6275, -6266, -6257, -6248, -6239, + -6230, -6221, -6212, -6202, -6193, -6184, -6174, -6164, + -6155, -6145, -6135, -6125, -6115, -6105, -6095, -6085, + -6074, -6064, -6054, -6043, -6032, -6022, -6011, -6000, + -5989, -5978, -5967, -5956, -5945, -5933, -5922, -5911, + -5899, -5887, -5876, -5864, -5852, -5840, -5828, -5816, + -5804, -5792, -5779, -5767, -5755, -5742, -5729, -5717, + -5704, -5691, -5678, -5665, -5652, -5639, -5626, -5612, + -5599, -5585, -5572, -5558, -5545, -5531, -5517, -5503, + -5489, -5475, -5461, -5447, -5432, -5418, -5403, -5389, + -5374, -5359, -5345, -5330, -5315, -5300, -5285, -5269, + -5254, -5239, -5223, -5208, -5192, -5177, -5161, -5145, + -5129, -5113, -5097, -5081, -5065, -5049, -5032, -5016, + -4999, -4983, -4966, -4950, -4933, -4916, -4899, -4882, + -4865, -4847, -4830, -4813, -4795, -4778, -4760, -4743, + -4725, -4707, -4689, -4671, -4653, -4635, -4617, -4598, + -4580, -4562, -4543, -4524, -4506, -4487, -4468, -4449, + -4430, -4411, -4392, -4373, -4354, -4334, -4315, -4295, + -4276, -4256, -4236, -4216, -4196, -4176, -4156, -4136, + -4116, -4096, -4075, -4055, -4034, -4014, -3993, -3972, + -3951, -3930, -3909, -3888, -3867, -3846, -3825, -3803, + -3782, -3760, -3739, -3717, -3695, -3673, -3651, -3629, + -3607, -3585, -3563, -3541, -3518, -3496, -3473, -3451, + -3428, -3405, -3383, -3360, -3337, -3314, -3290, -3267, + -3244, -3221, -3197, -3174, -3150, -3126, -3103, -3079, + -3055, -3031, -3007, -2983, -2959, -2934, -2910, -2886, + -2861, -2837, -2812, -2787, -2763, -2738, -2713, -2688, + -2663, -2638, -2612, -2587, -2562, -2536, -2511, -2485, + -2459, -2434, -2408, -2382, -2356, -2330, -2304, -2278, + -2251, -2225, -2199, -2172, -2146, -2119, -2092, -2066, + -2039, -2012, -1985, -1958, -1931, -1904, -1876, -1849, + -1822, -1794, -1767, -1739, -1711, -1683, -1656, -1628, + -1600, -1572, -1544, -1515, -1487, -1459, -1430, -1402, + -1373, -1345, -1316, -1287, -1258, -1230, -1201, -1172, + -1142, -1113, -1084, -1055, -1025, -996, -966, -937, + -907, -877, -848, -818, -788, -758, -728, -698, + -667, -637, -607, -576, -546, -515, -485, -454, + -423, -392, -362, -331, -300, -268, -237, -206, + -175, -143, -112, -81, -49, -17, 14, 46, + 78, 110, 142, 174, 206, 238, 270, 302, + 335, 367, 399, 432, 465, 497, 530, 563, + 596, 628, 661, 694, 728, 761, 794, 827, + 861, 894, 927, 961, 995, 1028, 1062, 1096, + 1130, 1163, 1197, 1231, 1266, 1300, 1334, 1368, + 1402, 1437, 1471, 1506, 1540, 1575, 1610, 1644, + 1679, 1714, 1749, 1784, 1819, 1854, 1889, 1925, + 1960, 1995, 2031, 2066, 2101, 2137, 2173, 2208, + 2244, 2280, 2316, 2352, 2388, 2424, 2460, 2496, + 2532, 2568, 2604, 2641, 2677, 2714, 2750, 2787, + 2823, 2860, 2897, 2934, 2970, 3007, 3044, 3081, + 3118, 3155, 3193, 3230, 3267, 3304, 3342, 3379, + 3417, 3454, 3492, 3529, 3567, 3605, 3643, 3681, + 3718, 3756, 3794, 3832, 3870, 3909, 3947, 3985, + 4023, 4062, 4100, 4138, 4177, 4216, 4254, 4293, + 4331, 4370, 4409, 4448, 4487, 4526, 4564, 4603, + 4643, 4682, 4721, 4760, 4799, 4839, 4878, 4917, + 4957, 4996, 5036, 5075, 5115, 5154, 5194, 5234, + 5274, 5313, 5353, 5393, 5433, 5473, 5513, 5553, + 5593, 5634, 5674, 5714, 5754, 5795, 5835, 5875, + 5916, 5956, 5997, 6037, 6078, 6119, 6159, 6200, + 6241, 6282, 6323, 6364, 6404, 6445, 6486, 6527, + 6569, 6610, 6651, 6692, 6733, 6774, 6816, 6857, + 6899, 6940, 6981, 7023, 7064, 7106, 7148, 7189, + 7231, 7272, 7314, 7356, 7398, 7440, 7481, 7523, + 7565, 7607, 7649, 7691, 7733, 7775, 7818, 7860, + 7902, 7944, 7986, 8029, 8071, 8113, 8156, 8198, + 8240, 8283, 8325, 8368, 8410, 8453, 8496, 8538, + 8581, 8624, 8666, 8709, 8752, 8795, 8837, 8880, + 8923, 8966, 9009, 9052, 9095, 9138, 9181, 9224, + 9267, 9310, 9353, 9396, 9440, 9483, 9526, 9569, + 9613, 9656, 9699, 9743, 9786, 9829, 9873, 9916, + 9960, 10003, 10046, 10090, 10133, 10177, 10221, 10264, + 10308, 10351, 10395, 10439, 10482, 10526, 10570, 10614, + 10657, 10701, 10745, 10789, 10832, 10876, 10920, 10964, + 11008, 11052, 11096, 11140, 11184, 11228, 11272, 11316, + 11360, 11404, 11448, 11492, 11536, 11580, 11624, 11668, + 11712, 11756, 11800, 11844, 11889, 11933, 11977, 12021, + 12065, 12110, 12154, 12198, 12242, 12286, 12331, 12375, + 12419, 12464, 12508, 12552, 12596, 12641, 12685, 12729, + 12774, 12818, 12862, 12907, 12951, 12995, 13040, 13084, + 13129, 13173, 13217, 13262, 13306, 13351, 13395, 13439, + 13484, 13528, 13573, 13617, 13661, 13706, 13750, 13795, + 13839, 13883, 13928, 13972, 14017, 14061, 14106, 14150, + 14194, 14239, 14283, 14328, 14372, 14417, 14461, 14505, + 14550, 14594, 14639, 14683, 14727, 14772, 14816, 14861, + 14905, 14949, 14994, 15038, 15082, 15127, 15171, 15215, + 15260, 15304, 15348, 15393, 15437, 15481, 15526, 15570, + 15614, 15658, 15703, 15747, 15791, 15835, 15880, 15924, + 15968, 16012, 16056, 16100, 16145, 16189, 16233, 16277, + 16321, 16365, 16409, 16453, 16497, 16541, 16585, 16629, + 16673, 16717, 16761, 16805, 16849, 16893, 16937, 16981, + 17025, 17069, 17113, 17156, 17200, 17244, 17288, 17332, + 17375, 17419, 17463, 17506, 17550, 17594, 17637, 17681, + 17725, 17768, 17812, 17855, 17899, 17942, 17986, 18029, + 18072, 18116, 18159, 18203, 18246, 18289, 18332, 18376, + 18419, 18462, 18505, 18549, 18592, 18635, 18678, 18721, + 18764, 18807, 18850, 18893, 18936, 18979, 19022, 19064, + 19107, 19150, 19193, 19236, 19278, 19321, 19364, 19406, + 19449, 19491, 19534, 19576, 19619, 19661, 19704, 19746, + 19788, 19831, 19873, 19915, 19957, 20000, 20042, 20084, + 20126, 20168, 20210, 20252, 20294, 20336, 20378, 20420, + 20461, 20503, 20545, 20587, 20628, 20670, 20712, 20753, + 20795, 20836, 20878, 20919, 20960, 21002, 21043, 21084, + 21125, 21167, 21208, 21249, 21290, 21331, 21372, 21413, + 21454, 21495, 21535, 21576, 21617, 21658, 21698, 21739, + 21779, 21820, 21860, 21901, 21941, 21982, 22022, 22062, + 22102, 22142, 22183, 22223, 22263, 22303, 22343, 22383, + 22422, 22462, 22502, 22542, 22581, 22621, 22660, 22700, + 22739, 22779, 22818, 22858, 22897, 22936, 22975, 23014, + 23053, 23092, 23131, 23170, 23209, 23248, 23287, 23326, + 23364, 23403, 23441, 23480, 23518, 23557, 23595, 23633, + 23672, 23710, 23748, 23786, 23824, 23862, 23900, 23938, + 23976, 24013, 24051, 24089, 24126, 24164, 24201, 24239, + 24276, 24313, 24351, 24388, 24425, 24462, 24499, 24536, + 24573, 24610, 24647, 24683, 24720, 24756, 24793, 24830, + 24866, 24902, 24939, 24975, 25011, 25047, 25083, 25119, + 25155, 25191, 25227, 25262, 25298, 25334, 25369, 25405, + 25440, 25476, 25511, 25546, 25581, 25616, 25651, 25686, + 25721, 25756, 25791, 25826, 25860, 25895, 25929, 25964, + 25998, 26033, 26067, 26101, 26135, 26169, 26203, 26237, + 26271, 26305, 26338, 26372, 26405, 26439, 26472, 26506, + 26539, 26572, 26605, 26638, 26671, 26704, 26737, 26770, + 26803, 26835, 26868, 26900, 26933, 26965, 26997, 27030, + 27062, 27094, 27126, 27158, 27189, 27221, 27253, 27285, + 27316, 27348, 27379, 27410, 27441, 27473, 27504, 27535, + 27566, 27597, 27627, 27658, 27689, 27719, 27750, 27780, + 27810, 27841, 27871, 27901, 27931, 27961, 27991, 28020, + 28050, 28080, 28109, 28139, 28168, 28197, 28227, 28256, + 28285, 28314, 28343, 28371, 28400, 28429, 28457, 28486, + 28514, 28543, 28571, 28599, 28627, 28655, 28683, 28711, + 28738, 28766, 28794, 28821, 28849, 28876, 28903, 28930, + 28957, 28984, 29011, 29038, 29065, 29092, 29118, 29145, + 29171, 29197, 29223, 29250, 29276, 29302, 29327, 29353, + 29379, 29405, 29430, 29456, 29481, 29506, 29531, 29556, + 29581, 29606, 29631, 29656, 29681, 29705, 29730, 29754, + 29778, 29802, 29827, 29851, 29874, 29898, 29922, 29946, + 29969, 29993, 30016, 30039, 30063, 30086, 30109, 30132, + 30155, 30177, 30200, 30223, 30245, 30267, 30290, 30312, + 30334, 30356, 30378, 30400, 30422, 30443, 30465, 30486, + 30508, 30529, 30550, 30571, 30592, 30613, 30634, 30654, + 30675, 30696, 30716, 30736, 30756, 30777, 30797, 30817, + 30836, 30856, 30876, 30895, 30915, 30934, 30953, 30973, + 30992, 31011, 31030, 31048, 31067, 31086, 31104, 31123, + 31141, 31159, 31177, 31195, 31213, 31231, 31249, 31266, + 31284, 31301, 31318, 31336, 31353, 31370, 31387, 31404, + 31420, 31437, 31453, 31470, 31486, 31502, 31519, 31535, + 31551, 31566, 31582, 31598, 31613, 31629, 31644, 31659, + 31674, 31689, 31704, 31719, 31734, 31749, 31763, 31777, + 31792, 31806, 31820, 31834, 31848, 31862, 31876, 31889, + 31903, 31916, 31929, 31943, 31956, 31969, 31982, 31994, + 32007, 32020, 32032, 32045, 32057, 32069, 32081, 32093, + 32105, 32117, 32128, 32140, 32151, 32163, 32174, 32185, + 32196, 32207, 32218, 32229, 32239, 32250, 32260, 32270, + 32281, 32291, 32301, 32311, 32320, 32330, 32340, 32349, + 32358, 32368, 32377, 32386, 32395, 32404, 32412, 32421, + 32430, 32438, 32446, 32455, 32463, 32471, 32479, 32486, + 32494, 32502, 32509, 32516, 32524, 32531, 32538, 32545, + 32552, 32558, 32565, 32572, 32578, 32584, 32590, 32597, + 32603, 32608, 32614, 32620, 32625, 32631, 32636, 32642, + 32647, 32652, 32657, 32661, 32666, 32671, 32675, 32680, + 32684, 32688, 32692, 32696, 32700, 32704, 32707, 32711, + 32714, 32718, 32721, 32724, 32727, 32730, 32733, 32735, + 32738, 32740, 32743, 32745, 32747, 32749, 32751, 32753, + 32755, 32756, 32758, 32759, 32760, 32762, 32763, 32764, + 32764, 32765, 32766, 32766, 32767, 32767, 32767, 32767, + 32767, 32767, 32767, 32767, 32766, 32766, 32765, 32764, + 32764, 32763, 32762, 32760, 32759, 32758, 32756, 32755, + 32753, 32751, 32749, 32747, 32745, 32743, 32740, 32738, + 32735, 32733, 32730, 32727, 32724, 32721, 32718, 32714, + 32711, 32707, 32704, 32700, 32696, 32692, 32688, 32684, + 32680, 32675, 32671, 32666, 32661, 32657, 32652, 32647, + 32642, 32636, 32631, 32625, 32620, 32614, 32608, 32603, + 32597, 32590, 32584, 32578, 32572, 32565, 32558, 32552, + 32545, 32538, 32531, 32524, 32516, 32509, 32502, 32494, + 32486, 32479, 32471, 32463, 32455, 32446, 32438, 32430, + 32421, 32412, 32404, 32395, 32386, 32377, 32368, 32358, + 32349, 32340, 32330, 32320, 32311, 32301, 32291, 32281, + 32270, 32260, 32250, 32239, 32229, 32218, 32207, 32196, + 32185, 32174, 32163, 32151, 32140, 32128, 32117, 32105, + 32093, 32081, 32069, 32057, 32045, 32032, 32020, 32007, + 31994, 31982, 31969, 31956, 31943, 31929, 31916, 31903, + 31889, 31876, 31862, 31848, 31834, 31820, 31806, 31792, + 31777, 31763, 31749, 31734, 31719, 31704, 31689, 31674, + 31659, 31644, 31629, 31613, 31598, 31582, 31566, 31551, + 31535, 31519, 31502, 31486, 31470, 31453, 31437, 31420, + 31404, 31387, 31370, 31353, 31336, 31318, 31301, 31284, + 31266, 31249, 31231, 31213, 31195, 31177, 31159, 31141, + 31123, 31104, 31086, 31067, 31048, 31030, 31011, 30992, + 30973, 30953, 30934, 30915, 30895, 30876, 30856, 30836, + 30817, 30797, 30777, 30756, 30736, 30716, 30696, 30675, + 30654, 30634, 30613, 30592, 30571, 30550, 30529, 30508, + 30486, 30465, 30443, 30422, 30400, 30378, 30356, 30334, + 30312, 30290, 30267, 30245, 30223, 30200, 30177, 30155, + 30132, 30109, 30086, 30063, 30039, 30016, 29993, 29969, + 29946, 29922, 29898, 29874, 29851, 29827, 29802, 29778, + 29754, 29730, 29705, 29681, 29656, 29631, 29606, 29581, + 29556, 29531, 29506, 29481, 29456, 29430, 29405, 29379, + 29353, 29327, 29302, 29276, 29250, 29223, 29197, 29171, + 29145, 29118, 29092, 29065, 29038, 29011, 28984, 28957, + 28930, 28903, 28876, 28849, 28821, 28794, 28766, 28738, + 28711, 28683, 28655, 28627, 28599, 28571, 28543, 28514, + 28486, 28457, 28429, 28400, 28371, 28343, 28314, 28285, + 28256, 28227, 28197, 28168, 28139, 28109, 28080, 28050, + 28020, 27991, 27961, 27931, 27901, 27871, 27841, 27810, + 27780, 27750, 27719, 27689, 27658, 27627, 27597, 27566, + 27535, 27504, 27473, 27441, 27410, 27379, 27348, 27316, + 27285, 27253, 27221, 27189, 27158, 27126, 27094, 27062, + 27030, 26997, 26965, 26933, 26900, 26868, 26835, 26803, + 26770, 26737, 26704, 26671, 26638, 26605, 26572, 26539, + 26506, 26472, 26439, 26405, 26372, 26338, 26305, 26271, + 26237, 26203, 26169, 26135, 26101, 26067, 26033, 25998, + 25964, 25929, 25895, 25860, 25826, 25791, 25756, 25721, + 25686, 25651, 25616, 25581, 25546, 25511, 25476, 25440, + 25405, 25369, 25334, 25298, 25262, 25227, 25191, 25155, + 25119, 25083, 25047, 25011, 24975, 24939, 24902, 24866, + 24830, 24793, 24756, 24720, 24683, 24647, 24610, 24573, + 24536, 24499, 24462, 24425, 24388, 24351, 24313, 24276, + 24239, 24201, 24164, 24126, 24089, 24051, 24013, 23976, + 23938, 23900, 23862, 23824, 23786, 23748, 23710, 23672, + 23633, 23595, 23557, 23518, 23480, 23441, 23403, 23364, + 23326, 23287, 23248, 23209, 23170, 23131, 23092, 23053, + 23014, 22975, 22936, 22897, 22858, 22818, 22779, 22739, + 22700, 22660, 22621, 22581, 22542, 22502, 22462, 22422, + 22383, 22343, 22303, 22263, 22223, 22183, 22142, 22102, + 22062, 22022, 21982, 21941, 21901, 21860, 21820, 21779, + 21739, 21698, 21658, 21617, 21576, 21535, 21495, 21454, + 21413, 21372, 21331, 21290, 21249, 21208, 21167, 21125, + 21084, 21043, 21002, 20960, 20919, 20878, 20836, 20795, + 20753, 20712, 20670, 20628, 20587, 20545, 20503, 20461, + 20420, 20378, 20336, 20294, 20252, 20210, 20168, 20126, + 20084, 20042, 20000, 19957, 19915, 19873, 19831, 19788, + 19746, 19704, 19661, 19619, 19576, 19534, 19491, 19449, + 19406, 19364, 19321, 19278, 19236, 19193, 19150, 19107, + 19064, 19022, 18979, 18936, 18893, 18850, 18807, 18764, + 18721, 18678, 18635, 18592, 18549, 18505, 18462, 18419, + 18376, 18332, 18289, 18246, 18203, 18159, 18116, 18072, + 18029, 17986, 17942, 17899, 17855, 17812, 17768, 17725, + 17681, 17637, 17594, 17550, 17506, 17463, 17419, 17375, + 17332, 17288, 17244, 17200, 17156, 17113, 17069, 17025, + 16981, 16937, 16893, 16849, 16805, 16761, 16717, 16673, + 16629, 16585, 16541, 16497, 16453, 16409, 16365, 16321, + 16277, 16233, 16189, 16145, 16100, 16056, 16012, 15968, + 15924, 15880, 15835, 15791, 15747, 15703, 15658, 15614, + 15570, 15526, 15481, 15437, 15393, 15348, 15304, 15260, + 15215, 15171, 15127, 15082, 15038, 14994, 14949, 14905, + 14861, 14816, 14772, 14727, 14683, 14639, 14594, 14550, + 14505, 14461, 14417, 14372, 14328, 14283, 14239, 14194, + 14150, 14106, 14061, 14017, 13972, 13928, 13883, 13839, + 13795, 13750, 13706, 13661, 13617, 13573, 13528, 13484, + 13439, 13395, 13351, 13306, 13262, 13217, 13173, 13129, + 13084, 13040, 12995, 12951, 12907, 12862, 12818, 12774, + 12729, 12685, 12641, 12596, 12552, 12508, 12464, 12419, + 12375, 12331, 12286, 12242, 12198, 12154, 12110, 12065, + 12021, 11977, 11933, 11889, 11844, 11800, 11756, 11712, + 11668, 11624, 11580, 11536, 11492, 11448, 11404, 11360, + 11316, 11272, 11228, 11184, 11140, 11096, 11052, 11008, + 10964, 10920, 10876, 10832, 10789, 10745, 10701, 10657, + 10614, 10570, 10526, 10482, 10439, 10395, 10351, 10308, + 10264, 10221, 10177, 10133, 10090, 10046, 10003, 9960, + 9916, 9873, 9829, 9786, 9743, 9699, 9656, 9613, + 9569, 9526, 9483, 9440, 9396, 9353, 9310, 9267, + 9224, 9181, 9138, 9095, 9052, 9009, 8966, 8923, + 8880, 8837, 8795, 8752, 8709, 8666, 8624, 8581, + 8538, 8496, 8453, 8410, 8368, 8325, 8283, 8240, + 8198, 8156, 8113, 8071, 8029, 7986, 7944, 7902, + 7860, 7818, 7775, 7733, 7691, 7649, 7607, 7565, + 7523, 7481, 7440, 7398, 7356, 7314, 7272, 7231, + 7189, 7148, 7106, 7064, 7023, 6981, 6940, 6899, + 6857, 6816, 6774, 6733, 6692, 6651, 6610, 6569, + 6527, 6486, 6445, 6404, 6364, 6323, 6282, 6241, + 6200, 6159, 6119, 6078, 6037, 5997, 5956, 5916, + 5875, 5835, 5795, 5754, 5714, 5674, 5634, 5593, + 5553, 5513, 5473, 5433, 5393, 5353, 5313, 5274, + 5234, 5194, 5154, 5115, 5075, 5036, 4996, 4957, + 4917, 4878, 4839, 4799, 4760, 4721, 4682, 4643, + 4603, 4564, 4526, 4487, 4448, 4409, 4370, 4331, + 4293, 4254, 4216, 4177, 4138, 4100, 4062, 4023, + 3985, 3947, 3909, 3870, 3832, 3794, 3756, 3718, + 3681, 3643, 3605, 3567, 3529, 3492, 3454, 3417, + 3379, 3342, 3304, 3267, 3230, 3193, 3155, 3118, + 3081, 3044, 3007, 2970, 2934, 2897, 2860, 2823, + 2787, 2750, 2714, 2677, 2641, 2604, 2568, 2532, + 2496, 2460, 2424, 2388, 2352, 2316, 2280, 2244, + 2208, 2173, 2137, 2101, 2066, 2031, 1995, 1960, + 1925, 1889, 1854, 1819, 1784, 1749, 1714, 1679, + 1644, 1610, 1575, 1540, 1506, 1471, 1437, 1402, + 1368, 1334, 1300, 1266, 1231, 1197, 1163, 1130, + 1096, 1062, 1028, 995, 961, 927, 894, 861, + 827, 794, 761, 728, 694, 661, 628, 596, + 563, 530, 497, 465, 432, 399, 367, 335, + 302, 270, 238, 206, 174, 142, 110, 78, + 46, 14, -17, -49, -81, -112, -143, -175, + -206, -237, -268, -300, -331, -362, -392, -423, + -454, -485, -515, -546, -576, -607, -637, -667, + -698, -728, -758, -788, -818, -848, -877, -907, + -937, -966, -996, -1025, -1055, -1084, -1113, -1142, + -1172, -1201, -1230, -1258, -1287, -1316, -1345, -1373, + -1402, -1430, -1459, -1487, -1515, -1544, -1572, -1600, + -1628, -1656, -1683, -1711, -1739, -1767, -1794, -1822, + -1849, -1876, -1904, -1931, -1958, -1985, -2012, -2039, + -2066, -2092, -2119, -2146, -2172, -2199, -2225, -2251, + -2278, -2304, -2330, -2356, -2382, -2408, -2434, -2459, + -2485, -2511, -2536, -2562, -2587, -2612, -2638, -2663, + -2688, -2713, -2738, -2763, -2787, -2812, -2837, -2861, + -2886, -2910, -2934, -2959, -2983, -3007, -3031, -3055, + -3079, -3103, -3126, -3150, -3174, -3197, -3221, -3244, + -3267, -3290, -3314, -3337, -3360, -3383, -3405, -3428, + -3451, -3473, -3496, -3518, -3541, -3563, -3585, -3607, + -3629, -3651, -3673, -3695, -3717, -3739, -3760, -3782, + -3803, -3825, -3846, -3867, -3888, -3909, -3930, -3951, + -3972, -3993, -4014, -4034, -4055, -4075, -4096, -4116, + -4136, -4156, -4176, -4196, -4216, -4236, -4256, -4276, + -4295, -4315, -4334, -4354, -4373, -4392, -4411, -4430, + -4449, -4468, -4487, -4506, -4524, -4543, -4562, -4580, + -4598, -4617, -4635, -4653, -4671, -4689, -4707, -4725, + -4743, -4760, -4778, -4795, -4813, -4830, -4847, -4865, + -4882, -4899, -4916, -4933, -4950, -4966, -4983, -4999, + -5016, -5032, -5049, -5065, -5081, -5097, -5113, -5129, + -5145, -5161, -5177, -5192, -5208, -5223, -5239, -5254, + -5269, -5285, -5300, -5315, -5330, -5345, -5359, -5374, + -5389, -5403, -5418, -5432, -5447, -5461, -5475, -5489, + -5503, -5517, -5531, -5545, -5558, -5572, -5585, -5599, + -5612, -5626, -5639, -5652, -5665, -5678, -5691, -5704, + -5717, -5729, -5742, -5755, -5767, -5779, -5792, -5804, + -5816, -5828, -5840, -5852, -5864, -5876, -5887, -5899, + -5911, -5922, -5933, -5945, -5956, -5967, -5978, -5989, + -6000, -6011, -6022, -6032, -6043, -6054, -6064, -6074, + -6085, -6095, -6105, -6115, -6125, -6135, -6145, -6155, + -6164, -6174, -6184, -6193, -6202, -6212, -6221, -6230, + -6239, -6248, -6257, -6266, -6275, -6284, -6292, -6301, + -6309, -6318, -6326, -6334, -6343, -6351, -6359, -6367, + -6374, -6382, -6390, -6398, -6405, -6413, -6420, -6428, + -6435, -6442, -6449, -6456, -6463, -6470, -6477, -6484, + -6491, -6497, -6504, -6510, -6517, -6523, -6529, -6535, + -6541, -6547, -6553, -6559, -6565, -6571, -6576, -6582, + -6588, -6593, -6598, -6604, -6609, -6614, -6619, -6624, + -6629, -6634, -6639, -6643, -6648, -6653, -6657, -6662, + -6666, -6670, -6674, -6679, -6683, -6687, -6691, -6694, + -6698, -6702, -6706, -6709, -6713, -6716, -6719, -6723, + -6726, -6729, -6732, -6735, -6738, -6741, -6744, -6747, + -6749, -6752, -6754, -6757, -6759, -6761, -6764, -6766, + -6768, -6770, -6772, -6774, -6776, -6777, -6779, -6781, + -6782, -6784, -6785, -6786, -6788, -6789, -6790, -6791, + -6792, -6793, -6794, -6795, -6795, -6796, -6797, -6797, + -6798, -6798, -6798, -6799, -6799, -6799, -6799, -6799, + -6799, -6799, -6799, -6798, -6798, -6798, -6797, -6797, + -6796, -6795, -6795, -6794, -6793, -6792, -6791, -6790, + -6789, -6788, -6787, -6785, -6784, -6783, -6781, -6779, + -6778, -6776, -6774, -6773, -6771, -6769, -6767, -6765, + -6763, -6760, -6758, -6756, -6753, -6751, -6748, -6746, + -6743, -6741, -6738, -6735, -6732, -6729, -6726, -6723, + -6720, -6717, -6714, -6710, -6707, -6703, -6700, -6696, + -6693, -6689, -6685, -6682, -6678, -6674, -6670, -6666, + -6662, -6658, -6654, -6649, -6645, -6641, -6636, -6632, + -6627, -6623, -6618, -6613, -6608, -6604, -6599, -6594, + -6589, -6584, -6579, -6573, -6568, -6563, -6558, -6552, + -6547, -6541, -6536, -6530, -6524, -6519, -6513, -6507, + -6501, -6495, -6489, -6483, -6477, -6471, -6464, -6458, + -6452, -6445, -6439, -6433, -6426, -6419, -6413, -6406, + -6399, -6392, -6386, -6379, -6372, -6365, -6358, -6350, + -6343, -6336, -6329, -6321, -6314, -6307, -6299, -6292, + -6284, -6276, -6269, -6261, -6253, -6245, -6238, -6230, + -6222, -6214, -6205, -6197, -6189, -6181, -6173, -6164, + -6156, -6148, -6139, -6131, -6122, -6113, -6105, -6096, + -6087, -6078, -6070, -6061, -6052, -6043, -6034, -6025, + -6016, -6006, -5997, -5988, -5979, -5969, -5960, -5950, + -5941, -5931, -5922, -5912, -5903, -5893, -5883, -5873, + -5863, -5854, -5844, -5834, -5824, -5814, -5804, -5793, + -5783, -5773, -5763, -5752, -5742, -5732, -5721, -5711, + -5700, -5690, -5679, -5668, -5658, -5647, -5636, -5626, + -5615, -5604, -5593, -5582, -5571, -5560, -5549, -5538, + -5527, -5515, -5504, -5493, -5482, -5470, -5459, -5447, + -5436, -5424, -5413, -5401, -5390, -5378, -5366, -5355, + -5343, -5331, -5319, -5308, -5296, -5284, -5272, -5260, + -5248, -5236, -5224, -5211, -5199, -5187, -5175, -5162, + -5150, -5138, -5125, -5113, -5101, -5088, -5076, -5063, + -5051, -5038, -5025, -5013, -5000, -4987, -4974, -4962, + -4949, -4936, -4923, -4910, -4897, -4884, -4871, -4858, + -4845, -4832, -4819, -4806, -4793, -4779, -4766, -4753, + -4740, -4726, -4713, -4699, -4686, -4673, -4659, -4646, + -4632, -4619, -4605, -4591, -4578, -4564, -4550, -4537, + -4523, -4509, -4495, -4482, -4468, -4454, -4440, -4426, + -4412, -4398, -4384, -4370, -4356, -4342, -4328, -4314, + -4300, -4286, -4271, -4257, -4243, -4229, -4215, -4200, + -4186, -4172, -4157, -4143, -4128, -4114, -4100, -4085, + -4071, -4056, -4042, -4027, -4012, -3998, -3983, -3969, + -3954, -3939, -3925, -3910, -3895, -3881, -3866, -3851, + -3836, -3821, -3807, -3792, -3777, -3762, -3747, -3732, + -3717, -3702, -3687, -3672, -3657, -3642, -3627, -3612, + -3597, -3582, -3567, -3552, -3537, -3521, -3506, -3491, + -3476, -3461, -3446, -3430, -3415, -3400, -3385, -3369, + -3354, -3339, -3323, -3308, -3293, -3277, -3262, -3246, + -3231, -3216, -3200, -3185, -3169, -3154, -3138, -3123, + -3107, -3092, -3076, -3061, -3045, -3030, -3014, -2999, + -2983, -2968, -2952, -2936, -2921, -2905, -2890, -2874, + -2858, -2843, -2827, -2811, -2796, -2780, -2764, -2749, + -2733, -2717, -2701, -2686, -2670, -2654, -2639, -2623, + -2607, -2591, -2576, -2560, -2544, -2528, -2512, -2497, + -2481, -2465, -2449, -2433, -2418, -2402, -2386, -2370, + -2354, -2339, -2323, -2307, -2291, -2275, -2259, -2244, + -2228, -2212, -2196, -2180, -2164, -2148, -2133, -2117, + -2101, -2085, -2069, -2053, -2037, -2022, -2006, -1990, + -1974, -1958, -1942, -1926, -1911, -1895, -1879, -1863, + -1847, -1831, -1815, -1800, -1784, -1768, -1752, -1736, + -1720, -1705, -1689, -1673, -1657, -1641, -1625, -1610, + -1594, -1578, -1562, -1546, -1531, -1515, -1499, -1483, + -1467, -1452, -1436, -1420, -1404, -1389, -1373, -1357, + -1341, -1326, -1310, -1294, -1278, -1263, -1247, -1231, + -1216, -1200, -1184, -1169, -1153, -1137, -1122, -1106, + -1091, -1075, -1059, -1044, -1028, -1013, -997, -981, + -966, -950, -935, -919, -904, -888, -873, -857, + -842, -826, -811, -795, -780, -765, -749, -734, + -718, -703, -688, -672, -657, -642, -626, -611, + -596, -580, -565, -550, -535, -519, -504, -489, + -474, -459, -443, -428, -413, -398, -383, -368, + -353, -338, -323, -308, -293, -278, -263, -248, + -233, -218, -203, -188, -173, -158, -143, -128, + -114, -99, -84, -69, -54, -40, -25, -10, + 5, 19, 34, 49, 63, 78, 92, 107, + 122, 136, 151, 165, 180, 194, 209, 223, + 237, 252, 266, 280, 295, 309, 323, 338, + 352, 366, 380, 395, 409, 423, 437, 451, + 465, 479, 493, 507, 521, 535, 549, 563, + 577, 591, 605, 619, 633, 647, 660, 674, + 688, 702, 715, 729, 743, 756, 770, 783, + 797, 811, 824, 838, 851, 864, 878, 891, + 905, 918, 931, 945, 958, 971, 984, 998, + 1011, 1024, 1037, 1050, 1063, 1076, 1089, 1102, + 1115, 1128, 1141, 1154, 1167, 1180, 1193, 1205, + 1218, 1231, 1244, 1256, 1269, 1282, 1294, 1307, + 1319, 1332, 1344, 1357, 1369, 1382, 1394, 1407, + 1419, 1431, 1443, 1456, 1468, 1480, 1492, 1504, + 1517, 1529, 1541, 1553, 1565, 1577, 1589, 1601, + 1612, 1624, 1636, 1648, 1660, 1671, 1683, 1695, + 1707, 1718, 1730, 1741, 1753, 1764, 1776, 1787, + 1799, 1810, 1821, 1833, 1844, 1855, 1867, 1878, + 1889, 1900, 1911, 1922, 1933, 1944, 1955, 1966, + 1977, 1988, 1999, 2010, 2021, 2031, 2042, 2053, + 2063, 2074, 2085, 2095, 2106, 2116, 2127, 2137, + 2148, 2158, 2168, 2179, 2189, 2199, 2209, 2220, + 2230, 2240, 2250, 2260, 2270, 2280, 2290, 2300, + 2310, 2320, 2330, 2339, 2349, 2359, 2369, 2378, + 2388, 2397, 2407, 2417, 2426, 2435, 2445, 2454, + 2464, 2473, 2482, 2491, 2501, 2510, 2519, 2528, + 2537, 2546, 2555, 2564, 2573, 2582, 2591, 2600, + 2609, 2617, 2626, 2635, 2644, 2652, 2661, 2669, + 2678, 2686, 2695, 2703, 2712, 2720, 2728, 2737, + 2745, 2753, 2761, 2769, 2777, 2785, 2793, 2801, + 2809, 2817, 2825, 2833, 2841, 2849, 2856, 2864, + 2872, 2879, 2887, 2895, 2902, 2910, 2917, 2925, + 2932, 2939, 2947, 2954, 2961, 2968, 2975, 2983, + 2990, 2997, 3004, 3011, 3018, 3025, 3031, 3038, + 3045, 3052, 3059, 3065, 3072, 3079, 3085, 3092, + 3098, 3105, 3111, 3117, 3124, 3130, 3136, 3143, + 3149, 3155, 3161, 3167, 3173, 3179, 3185, 3191, + 3197, 3203, 3209, 3215, 3221, 3226, 3232, 3238, + 3243, 3249, 3254, 3260, 3265, 3271, 3276, 3282, + 3287, 3292, 3297, 3303, 3308, 3313, 3318, 3323, + 3328, 3333, 3338, 3343, 3348, 3353, 3357, 3362, + 3367, 3372, 3376, 3381, 3385, 3390, 3395, 3399, + 3403, 3408, 3412, 3416, 3421, 3425, 3429, 3433, + 3437, 3442, 3446, 3450, 3454, 3458, 3461, 3465, + 3469, 3473, 3477, 3480, 3484, 3488, 3491, 3495, + 3498, 3502, 3505, 3509, 3512, 3515, 3519, 3522, + 3525, 3528, 3532, 3535, 3538, 3541, 3544, 3547, + 3550, 3553, 3556, 3558, 3561, 3564, 3567, 3569, + 3572, 3575, 3577, 3580, 3582, 3585, 3587, 3589, + 3592, 3594, 3596, 3598, 3601, 3603, 3605, 3607, + 3609, 3611, 3613, 3615, 3617, 3619, 3621, 3622, + 3624, 3626, 3627, 3629, 3631, 3632, 3634, 3635, + 3637, 3638, 3640, 3641, 3642, 3644, 3645, 3646, + 3647, 3648, 3649, 3650, 3651, 3652, 3653, 3654, + 3655, 3656, 3657, 3658, 3658, 3659, 3660, 3660, + 3661, 3662, 3662, 3663, 3663, 3663, 3664, 3664, + 3664, 3665, 3665, 3665, 3665, 3665, 3666, 3666, + 3666, 3666, 3666, 3665, 3665, 3665, 3665, 3665, + 3665, 3664, 3664, 3664, 3663, 3663, 3662, 3662, + 3661, 3661, 3660, 3659, 3659, 3658, 3657, 3657, + 3656, 3655, 3654, 3653, 3652, 3651, 3650, 3649, + 3648, 3647, 3646, 3645, 3643, 3642, 3641, 3640, + 3638, 3637, 3635, 3634, 3633, 3631, 3630, 3628, + 3626, 3625, 3623, 3621, 3620, 3618, 3616, 3614, + 3612, 3610, 3608, 3606, 3604, 3602, 3600, 3598, + 3596, 3594, 3592, 3589, 3587, 3585, 3583, 3580, + 3578, 3575, 3573, 3570, 3568, 3565, 3563, 3560, + 3557, 3555, 3552, 3549, 3547, 3544, 3541, 3538, + 3535, 3532, 3529, 3526, 3523, 3520, 3517, 3514, + 3511, 3508, 3505, 3501, 3498, 3495, 3491, 3488, + 3485, 3481, 3478, 3474, 3471, 3467, 3464, 3460, + 3457, 3453, 3449, 3446, 3442, 3438, 3434, 3430, + 3427, 3423, 3419, 3415, 3411, 3407, 3403, 3399, + 3395, 3391, 3387, 3382, 3378, 3374, 3370, 3365, + 3361, 3357, 3352, 3348, 3344, 3339, 3335, 3330, + 3326, 3321, 3317, 3312, 3307, 3303, 3298, 3293, + 3289, 3284, 3279, 3274, 3269, 3264, 3260, 3255, + 3250, 3245, 3240, 3235, 3230, 3224, 3219, 3214, + 3209, 3204, 3199, 3193, 3188, 3183, 3178, 3172, + 3167, 3162, 3156, 3151, 3145, 3140, 3134, 3129, + 3123, 3118, 3112, 3106, 3101, 3095, 3089, 3084, + 3078, 3072, 3066, 3060, 3055, 3049, 3043, 3037, + 3031, 3025, 3019, 3013, 3007, 3001, 2995, 2989, + 2983, 2977, 2970, 2964, 2958, 2952, 2945, 2939, + 2933, 2927, 2920, 2914, 2908, 2901, 2895, 2888, + 2882, 2875, 2869, 2862, 2856, 2849, 2843, 2836, + 2829, 2823, 2816, 2809, 2803, 2796, 2789, 2782, + 2776, 2769, 2762, 2755, 2748, 2741, 2734, 2727, + 2720, 2714, 2707, 2700, 2692, 2685, 2678, 2671, + 2664, 2657, 2650, 2643, 2636, 2628, 2621, 2614, + 2607, 2599, 2592, 2585, 2578, 2570, 2563, 2556, + 2548, 2541, 2533, 2526, 2518, 2511, 2504, 2496, + 2489, 2481, 2473, 2466, 2458, 2451, 2443, 2435, + 2428, 2420, 2412, 2405, 2397, 2389, 2382, 2374, + 2366, 2358, 2351, 2343, 2335, 2327, 2319, 2311, + 2303, 2296, 2288, 2280, 2272, 2264, 2256, 2248, + 2240, 2232, 2224, 2216, 2208, 2200, 2192, 2183, + 2175, 2167, 2159, 2151, 2143, 2135, 2127, 2118, + 2110, 2102, 2094, 2085, 2077, 2069, 2061, 2052, + 2044, 2036, 2027, 2019, 2011, 2002, 1994, 1986, + 1977, 1969, 1961, 1952, 1944, 1935, 1927, 1918, + 1910, 1901, 1893, 1884, 1876, 1867, 1859, 1850, + 1842, 1833, 1825, 1816, 1808, 1799, 1790, 1782, + 1773, 1765, 1756, 1747, 1739, 1730, 1721, 1713, + 1704, 1695, 1687, 1678, 1669, 1660, 1652, 1643, + 1634, 1625, 1617, 1608, 1599, 1590, 1582, 1573, + 1564, 1555, 1546, 1538, 1529, 1520, 1511, 1502, + 1493, 1485, 1476, 1467, 1458, 1449, 1440, 1431, + 1423, 1414, 1405, 1396, 1387, 1378, 1369, 1360, + 1351, 1342, 1333, 1324, 1316, 1307, 1298, 1289, + 1280, 1271, 1262, 1253, 1244, 1235, 1226, 1217, + 1208, 1199, 1190, 1181, 1172, 1163, 1154, 1145, + 1136, 1127, 1118, 1109, 1100, 1091, 1082, 1073, + 1064, 1055, 1046, 1037, 1028, 1019, 1010, 1001, + 992, 983, 974, 965, 956, 947, 938, 929, + 920, 910, 901, 892, 883, 874, 865, 856, + 847, 838, 829, 820, 811, 802, 793, 784, + 775, 766, 757, 748, 739, 730, 721, 712, + 703, 694, 685, 676, 667, 658, 649, 640, + 631, 622, 613, 604, 595, 586, 577, 568, + 559, 550, 541, 532, 523, 514, 505, 496, + 488, 479, 470, 461, 452, 443, 434, 425, + 416, 407, 398, 389, 381, 372, 363, 354, + 345, 336, 327, 318, 310, 301, 292, 283, + 274, 265, 257, 248, 239, 230, 221, 213, + 204, 195, 186, 178, 169, 160, 151, 143, + 134, 125, 116, 108, 99, 90, 82, 73, + 64, 56, 47, 38, 30, 21, 12, 4, + -5, -13, -22, -30, -39, -48, -56, -65, + -73, -82, -90, -99, -107, -116, -124, -133, + -141, -150, -158, -167, -175, -183, -192, -200, + -209, -217, -225, -234, -242, -250, -259, -267, + -275, -284, -292, -300, -309, -317, -325, -333, + -342, -350, -358, -366, -374, -382, -391, -399, + -407, -415, -423, -431, -439, -447, -456, -464, + -472, -480, -488, -496, -504, -512, -520, -528, + -536, -543, -551, -559, -567, -575, -583, -591, + -599, -606, -614, -622, -630, -638, -645, -653, + -661, -669, -676, -684, -692, -699, -707, -715, + -722, -730, -738, -745, -753, -760, -768, -775, + -783, -790, -798, -805, -813, -820, -828, -835, + -842, -850, -857, -865, -872, -879, -887, -894, + -901, -908, -916, -923, -930, -937, -945, -952, + -959, -966, -973, -980, -987, -994, -1001, -1009, + -1016, -1023, -1030, -1037, -1044, -1050, -1057, -1064, + -1071, -1078, -1085, -1092, -1099, -1105, -1112, -1119, + -1126, -1133, -1139, -1146, -1153, -1159, -1166, -1173, + -1179, -1186, -1193, -1199, -1206, -1212, -1219, -1225, + -1232, -1238, -1245, -1251, -1258, -1264, -1270, -1277, + -1283, -1289, -1296, -1302, -1308, -1315, -1321, -1327, + -1333, -1339, -1346, -1352, -1358, -1364, -1370, -1376, + -1382, -1388, -1394, -1400, -1406, -1412, -1418, -1424, + -1430, -1436, -1442, -1448, -1454, -1459, -1465, -1471, + -1477, -1482, -1488, -1494, -1500, -1505, -1511, -1516, + -1522, -1528, -1533, -1539, -1544, -1550, -1555, -1561, + -1566, -1572, -1577, -1582, -1588, -1593, -1599, -1604, + -1609, -1614, -1620, -1625, -1630, -1635, -1640, -1646, + -1651, -1656, -1661, -1666, -1671, -1676, -1681, -1686, + -1691, -1696, -1701, -1706, -1711, -1716, -1720, -1725, + -1730, -1735, -1740, -1744, -1749, -1754, -1758, -1763, + -1768, -1772, -1777, -1782, -1786, -1791, -1795, -1800, + -1804, -1809, -1813, -1817, -1822, -1826, -1830, -1835, + -1839, -1843, -1848, -1852, -1856, -1860, -1864, -1869, + -1873, -1877, -1881, -1885, -1889, -1893, -1897, -1901, + -1905, -1909, -1913, -1917, -1921, -1925, -1928, -1932, + -1936, -1940, -1944, -1947, -1951, -1955, -1958, -1962, + -1966, -1969, -1973, -1976, -1980, -1983, -1987, -1990, + -1994, -1997, -2001, -2004, -2007, -2011, -2014, -2017, + -2021, -2024, -2027, -2030, -2033, -2037, -2040, -2043, + -2046, -2049, -2052, -2055, -2058, -2061, -2064, -2067, + -2070, -2073, -2076, -2079, -2081, -2084, -2087, -2090, + -2092, -2095, -2098, -2101, -2103, -2106, -2108, -2111, + -2114, -2116, -2119, -2121, -2124, -2126, -2129, -2131, + -2133, -2136, -2138, -2140, -2143, -2145, -2147, -2150, + -2152, -2154, -2156, -2158, -2160, -2162, -2165, -2167, + -2169, -2171, -2173, -2175, -2177, -2179, -2180, -2182, + -2184, -2186, -2188, -2190, -2191, -2193, -2195, -2197, + -2198, -2200, -2202, -2203, -2205, -2206, -2208, -2209, + -2211, -2212, -2214, -2215, -2217, -2218, -2220, -2221, + -2222, -2224, -2225, -2226, -2227, -2229, -2230, -2231, + -2232, -2233, -2234, -2236, -2237, -2238, -2239, -2240, + -2241, -2242, -2243, -2244, -2244, -2245, -2246, -2247, + -2248, -2249, -2249, -2250, -2251, -2252, -2252, -2253, + -2254, -2254, -2255, -2255, -2256, -2256, -2257, -2257, + -2258, -2258, -2259, -2259, -2260, -2260, -2260, -2261, + -2261, -2261, -2261, -2262, -2262, -2262, -2262, -2262, + -2263, -2263, -2263, -2263, -2263, -2263, -2263, -2263, + -2263, -2263, -2263, -2263, -2262, -2262, -2262, -2262, + -2262, -2261, -2261, -2261, -2261, -2260, -2260, -2260, + -2259, -2259, -2259, -2258, -2258, -2257, -2257, -2256, + -2256, -2255, -2254, -2254, -2253, -2253, -2252, -2251, + -2251, -2250, -2249, -2248, -2248, -2247, -2246, -2245, + -2244, -2243, -2242, -2242, -2241, -2240, -2239, -2238, + -2237, -2236, -2235, -2233, -2232, -2231, -2230, -2229, + -2228, -2227, -2225, -2224, -2223, -2222, -2220, -2219, + -2218, -2216, -2215, -2214, -2212, -2211, -2209, -2208, + -2206, -2205, -2203, -2202, -2200, -2199, -2197, -2195, + -2194, -2192, -2190, -2189, -2187, -2185, -2184, -2182, + -2180, -2178, -2176, -2174, -2173, -2171, -2169, -2167, + -2165, -2163, -2161, -2159, -2157, -2155, -2153, -2151, + -2149, -2147, -2145, -2142, -2140, -2138, -2136, -2134, + -2132, -2129, -2127, -2125, -2122, -2120, -2118, -2116, + -2113, -2111, -2108, -2106, -2104, -2101, -2099, -2096, + -2094, -2091, -2089, -2086, -2083, -2081, -2078, -2076, + -2073, -2070, -2068, -2065, -2062, -2060, -2057, -2054, + -2051, -2049, -2046, -2043, -2040, -2037, -2034, -2031, + -2029, -2026, -2023, -2020, -2017, -2014, -2011, -2008, + -2005, -2002, -1999, -1996, -1992, -1989, -1986, -1983, + -1980, -1977, -1974, -1970, -1967, -1964, -1961, -1957, + -1954, -1951, -1948, -1944, -1941, -1938, -1934, -1931, + -1927, -1924, -1921, -1917, -1914, -1910, -1907, -1903, + -1900, -1896, -1893, -1889, -1886, -1882, -1878, -1875, + -1871, -1868, -1864, -1860, -1857, -1853, -1849, -1845, + -1842, -1838, -1834, -1830, -1827, -1823, -1819, -1815, + -1811, -1807, -1804, -1800, -1796, -1792, -1788, -1784, + -1780, -1776, -1772, -1768, -1764, -1760, -1756, -1752, + -1748, -1744, -1740, -1736, -1732, -1728, -1724, -1719, + -1715, -1711, -1707, -1703, -1699, -1694, -1690, -1686, + -1682, -1677, -1673, -1669, -1665, -1660, -1656, -1652, + -1647, -1643, -1639, -1634, -1630, -1625, -1621, -1617, + -1612, -1608, -1603, -1599, -1594, -1590, -1586, -1581, + -1577, -1572, -1567, -1563, -1558, -1554, -1549, -1545, + -1540, -1535, -1531, -1526, -1522, -1517, -1512, -1508, + -1503, -1498, -1494, -1489, -1484, -1480, -1475, -1470, + -1465, -1461, -1456, -1451, -1446, -1441, -1437, -1432, + -1427, -1422, -1417, -1413, -1408, -1403, -1398, -1393, + -1388, -1383, -1378, -1374, -1369, -1364, -1359, -1354, + -1349, -1344, -1339, -1334, -1329, -1324, -1319, -1314, + -1309, -1304, -1299, -1294, -1289, -1284, -1279, -1274, + -1269, -1264, -1258, -1253, -1248, -1243, -1238, -1233, + -1228, -1223, -1218, -1212, -1207, -1202, -1197, -1192, + -1187, -1181, -1176, -1171, -1166, -1161, -1155, -1150, + -1145, -1140, -1135, -1129, -1124, -1119, -1114, -1108, + -1103, -1098, -1092, -1087, -1082, -1077, -1071, -1066, + -1061, -1055, -1050, -1045, -1039, -1034, -1029, -1023, + -1018, -1013, -1007, -1002, -997, -991, -986, -980, + -975, -970, -964, -959, -953, -948, -943, -937, + -932, -926, -921, -916, -910, -905, -899, -894, + -888, -883, -877, -872, -867, -861, -856, -850, + -845, -839, -834, -828, -823, -817, -812, -806, + -801, -795, -790, -784, -779, -773, -768, -762, + -757, -751, -746, -740, -735, -729, -724, -718, + -713, -707, -702, -696, -691, -685, -680, -674, + -669, -663, -658, -652, -646, -641, -635, -630, + -624, -619, -613, -608, -602, -597, -591, -585, + -580, -574, -569, -563, -558, -552, -547, -541, + -536, -530, -524, -519, -513, -508, -502, -497, + -491, -486, -480, -475, -469, -464, -458, -452, + -447, -441, -436, -430, -425, -419, -414, -408, + -403, -397, -392, -386, -381, -375, -369, -364, + -358, -353, -347, -342, -336, -331, -325, -320, + -314, -309, -303, -298, -292, -287, -281, -276, + -270, -265, -259, -254, -248, -243, -238, -232, + -227, -221, -216, -210, -205, -199, -194, -188, + -183, -178, -172, -167, -161, -156, -150, -145, + -140, -134, -129, -123, -118, -113, -107, -102, + -96, -91, -86, -80, -75, -70, -64, -59, + -53, -48, -43, -37, -32, -27, -21, -16, + -11, -5, 0, 5, 10, 16, 21, 26, + 32, 37, 42, 47, 53, 58, 63, 68, + 74, 79, 84, 89, 95, 100, 105, 110, + 115, 121, 126, 131, 136, 141, 146, 152, + 157, 162, 167, 172, 177, 182, 187, 193, + 198, 203, 208, 213, 218, 223, 228, 233, + 238, 243, 248, 253, 258, 263, 268, 273, + 278, 283, 288, 293, 298, 303, 308, 313, + 318, 323, 328, 333, 338, 343, 347, 352, + 357, 362, 367, 372, 377, 382, 386, 391, + 396, 401, 406, 410, 415, 420, 425, 429, + 434, 439, 444, 448, 453, 458, 463, 467, + 472, 477, 481, 486, 491, 495, 500, 505, + 509, 514, 518, 523, 528, 532, 537, 541, + 546, 550, 555, 559, 564, 568, 573, 577, + 582, 586, 591, 595, 600, 604, 608, 613, + 617, 622, 626, 630, 635, 639, 643, 648, + 652, 656, 661, 665, 669, 674, 678, 682, + 686, 691, 695, 699, 703, 707, 712, 716, + 720, 724, 728, 732, 737, 741, 745, 749, + 753, 757, 761, 765, 769, 773, 777, 781, + 785, 789, 793, 797, 801, 805, 809, 813, + 817, 821, 825, 829, 832, 836, 840, 844, + 848, 852, 855, 859, 863, 867, 871, 874, + 878, 882, 885, 889, 893, 897, 900, 904, + 908, 911, 915, 918, 922, 926, 929, 933, + 936, 940, 943, 947, 950, 954, 957, 961, + 964, 968, 971, 975, 978, 981, 985, 988, + 992, 995, 998, 1002, 1005, 1008, 1012, 1015, + 1018, 1021, 1025, 1028, 1031, 1034, 1038, 1041, + 1044, 1047, 1050, 1053, 1057, 1060, 1063, 1066, + 1069, 1072, 1075, 1078, 1081, 1084, 1087, 1090, + 1093, 1096, 1099, 1102, 1105, 1108, 1111, 1114, + 1117, 1119, 1122, 1125, 1128, 1131, 1134, 1136, + 1139, 1142, 1145, 1148, 1150, 1153, 1156, 1158, + 1161, 1164, 1166, 1169, 1172, 1174, 1177, 1179, + 1182, 1185, 1187, 1190, 1192, 1195, 1197, 1200, + 1202, 1205, 1207, 1210, 1212, 1214, 1217, 1219, + 1222, 1224, 1226, 1229, 1231, 1233, 1236, 1238, + 1240, 1242, 1245, 1247, 1249, 1251, 1253, 1256, + 1258, 1260, 1262, 1264, 1266, 1268, 1271, 1273, + 1275, 1277, 1279, 1281, 1283, 1285, 1287, 1289, + 1291, 1293, 1295, 1297, 1298, 1300, 1302, 1304, + 1306, 1308, 1310, 1311, 1313, 1315, 1317, 1319, + 1320, 1322, 1324, 1325, 1327, 1329, 1330, 1332, + 1334, 1335, 1337, 1339, 1340, 1342, 1343, 1345, + 1346, 1348, 1349, 1351, 1352, 1354, 1355, 1357, + 1358, 1360, 1361, 1362, 1364, 1365, 1367, 1368, + 1369, 1370, 1372, 1373, 1374, 1376, 1377, 1378, + 1379, 1380, 1382, 1383, 1384, 1385, 1386, 1387, + 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, + 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, + 1405, 1405, 1406, 1407, 1408, 1409, 1410, 1410, + 1411, 1412, 1413, 1414, 1414, 1415, 1416, 1416, + 1417, 1418, 1419, 1419, 1420, 1420, 1421, 1422, + 1422, 1423, 1423, 1424, 1424, 1425, 1425, 1426, + 1426, 1427, 1427, 1428, 1428, 1429, 1429, 1429, + 1430, 1430, 1431, 1431, 1431, 1432, 1432, 1432, + 1432, 1433, 1433, 1433, 1433, 1434, 1434, 1434, + 1434, 1434, 1434, 1435, 1435, 1435, 1435, 1435, + 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, + 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, + 1435, 1434, 1434, 1434, 1434, 1434, 1434, 1433, + 1433, 1433, 1433, 1432, 1432, 1432, 1432, 1431, + 1431, 1431, 1430, 1430, 1429, 1429, 1429, 1428, + 1428, 1427, 1427, 1427, 1426, 1426, 1425, 1425, + 1424, 1424, 1423, 1422, 1422, 1421, 1421, 1420, + 1420, 1419, 1418, 1418, 1417, 1416, 1416, 1415, + 1414, 1413, 1413, 1412, 1411, 1410, 1410, 1409, + 1408, 1407, 1406, 1406, 1405, 1404, 1403, 1402, + 1401, 1400, 1400, 1399, 1398, 1397, 1396, 1395, + 1394, 1393, 1392, 1391, 1390, 1389, 1388, 1387, + 1386, 1384, 1383, 1382, 1381, 1380, 1379, 1378, + 1377, 1375, 1374, 1373, 1372, 1371, 1369, 1368, + 1367, 1366, 1364, 1363, 1362, 1361, 1359, 1358, + 1357, 1355, 1354, 1353, 1351, 1350, 1348, 1347, + 1346, 1344, 1343, 1341, 1340, 1338, 1337, 1335, + 1334, 1332, 1331, 1329, 1328, 1326, 1325, 1323, + 1322, 1320, 1318, 1317, 1315, 1314, 1312, 1310, + 1309, 1307, 1305, 1304, 1302, 1300, 1299, 1297, + 1295, 1293, 1292, 1290, 1288, 1286, 1284, 1283, + 1281, 1279, 1277, 1275, 1274, 1272, 1270, 1268, + 1266, 1264, 1262, 1260, 1258, 1257, 1255, 1253, + 1251, 1249, 1247, 1245, 1243, 1241, 1239, 1237, + 1235, 1233, 1231, 1229, 1227, 1224, 1222, 1220, + 1218, 1216, 1214, 1212, 1210, 1208, 1205, 1203, + 1201, 1199, 1197, 1195, 1192, 1190, 1188, 1186, + 1183, 1181, 1179, 1177, 1174, 1172, 1170, 1168, + 1165, 1163, 1161, 1158, 1156, 1154, 1151, 1149, + 1147, 1144, 1142, 1140, 1137, 1135, 1132, 1130, + 1128, 1125, 1123, 1120, 1118, 1115, 1113, 1110, + 1108, 1105, 1103, 1100, 1098, 1095, 1093, 1090, + 1088, 1085, 1083, 1080, 1078, 1075, 1073, 1070, + 1067, 1065, 1062, 1060, 1057, 1054, 1052, 1049, + 1046, 1044, 1041, 1038, 1036, 1033, 1030, 1028, + 1025, 1022, 1020, 1017, 1014, 1012, 1009, 1006, + 1003, 1001, 998, 995, 992, 990, 987, 984, + 981, 978, 976, 973, 970, 967, 964, 961, + 959, 956, 953, 950, 947, 944, 942, 939, + 936, 933, 930, 927, 924, 921, 918, 915, + 913, 910, 907, 904, 901, 898, 895, 892, + 889, 886, 883, 880, 877, 874, 871, 868, + 865, 862, 859, 856, 853, 850, 847, 844, + 841, 838, 835, 832, 829, 826, 823, 820, + 817, 813, 810, 807, 804, 801, 798, 795, + 792, 789, 786, 783, 779, 776, 773, 770, + 767, 764, 761, 758, 754, 751, 748, 745, + 742, 739, 735, 732, 729, 726, 723, 720, + 716, 713, 710, 707, 704, 700, 697, 694, + 691, 688, 684, 681, 678, 675, 671, 668, + 665, 662, 659, 655, 652, 649, 646, 642, + 639, 636, 633, 629, 626, 623, 620, 616, + 613, 610, 606, 603, 600, 597, 593, 590, + 587, 584, 580, 577, 574, 570, 567, 564, + 560, 557, 554, 551, 547, 544, 541, 537, + 534, 531, 527, 524, 521, 517, 514, 511, + 507, 504, 501, 498, 494, 491, 488, 484, + 481, 478, 474, 471, 468, 464, 461, 458, + 454, 451, 448, 444, 441, 437, 434, 431, + 427, 424, 421, 417, 414, 411, 407, 404, + 401, 397, 394, 391, 387, 384, 381, 377, + 374, 371, 367, 364, 361, 357, 354, 351, + 347, 344, 341, 337, 334, 330, 327, 324, + 320, 317, 314, 310, 307, 304, 300, 297, + 294, 290, 287, 284, 280, 277, 274, 270, + 267, 264, 260, 257, 254, 250, 247, 244, + 240, 237, 234, 230, 227, 224, 221, 217, + 214, 211, 207, 204, 201, 197, 194, 191, + 187, 184, 181, 178, 174, 171, 168, 164, + 161, 158, 154, 151, 148, 145, 141, 138, + 135, 132, 128, 125, 122, 118, 115, 112, + 109, 105, 102, 99, 96, 92, 89, 86, + 83, 79, 76, 73, 70, 67, 63, 60, + 57, 54, 50, 47, 44, 41, 38, 34, + 31, 28, 25, 22, 18, 15, 12, 9, + 6, 2, -1, -4, -7, -10, -13, -16, + -20, -23, -26, -29, -32, -35, -39, -42, + -45, -48, -51, -54, -57, -60, -63, -67, + -70, -73, -76, -79, -82, -85, -88, -91, + -94, -97, -100, -104, -107, -110, -113, -116, + -119, -122, -125, -128, -131, -134, -137, -140, + -143, -146, -149, -152, -155, -158, -161, -164, + -167, -170, -173, -176, -179, -182, -185, -188, + -191, -194, -196, -199, -202, -205, -208, -211, + -214, -217, -220, -223, -226, -228, -231, -234, + -237, -240, -243, -246, -248, -251, -254, -257, + -260, -263, -266, -268, -271, -274, -277, -280, + -282, -285, -288, -291, -293, -296, -299, -302, + -305, -307, -310, -313, -315, -318, -321, -324, + -326, -329, -332, -334, -337, -340, -343, -345, + -348, -351, -353, -356, -359, -361, -364, -366, + -369, -372, -374, -377, -380, -382, -385, -387, + -390, -392, -395, -398, -400, -403, -405, -408, + -410, -413, -415, -418, -420, -423, -425, -428, + -430, -433, -435, -438, -440, -443, -445, -448, + -450, -453, -455, -457, -460, -462, -465, -467, + -469, -472, -474, -477, -479, -481, -484, -486, + -488, -491, -493, -495, -498, -500, -502, -505, + -507, -509, -512, -514, -516, -518, -521, -523, + -525, -527, -530, -532, -534, -536, -538, -541, + -543, -545, -547, -549, -552, -554, -556, -558, + -560, -562, -564, -567, -569, -571, -573, -575, + -577, -579, -581, -583, -585, -587, -589, -592, + -594, -596, -598, -600, -602, -604, -606, -608, + -610, -612, -614, -615, -617, -619, -621, -623, + -625, -627, -629, -631, -633, -635, -637, -639, + -640, -642, -644, -646, -648, -650, -651, -653, + -655, -657, -659, -661, -662, -664, -666, -668, + -669, -671, -673, -675, -676, -678, -680, -682, + -683, -685, -687, -688, -690, -692, -693, -695, + -697, -698, -700, -702, -703, -705, -706, -708, + -710, -711, -713, -714, -716, -717, -719, -720, + -722, -724, -725, -727, -728, -730, -731, -733, + -734, -735, -737, -738, -740, -741, -743, -744, + -746, -747, -748, -750, -751, -753, -754, -755, + -757, -758, -759, -761, -762, -763, -765, -766, + -767, -769, -770, -771, -772, -774, -775, -776, + -777, -779, -780, -781, -782, -783, -785, -786, + -787, -788, -789, -791, -792, -793, -794, -795, + -796, -797, -798, -800, -801, -802, -803, -804, + -805, -806, -807, -808, -809, -810, -811, -812, + -813, -814, -815, -816, -817, -818, -819, -820, + -821, -822, -823, -824, -825, -826, -827, -827, + -828, -829, -830, -831, -832, -833, -833, -834, + -835, -836, -837, -838, -838, -839, -840, -841, + -842, -842, -843, -844, -845, -845, -846, -847, + -847, -848, -849, -850, -850, -851, -852, -852, + -853, -854, -854, -855, -855, -856, -857, -857, + -858, -858, -859, -860, -860, -861, -861, -862, + -862, -863, -863, -864, -864, -865, -865, -866, + -866, -867, -867, -868, -868, -869, -869, -870, + -870, -870, -871, -871, -872, -872, -872, -873, + -873, -874, -874, -874, -875, -875, -875, -876, + -876, -876, -876, -877, -877, -877, -878, -878, + -878, -878, -879, -879, -879, -879, -879, -880, + -880, -880, -880, -880, -881, -881, -881, -881, + -881, -881, -882, -882, -882, -882, -882, -882, + -882, -882, -882, -882, -882, -882, -883, -883, + -883, -883, -883, -883, -883, -883, -883, -883, + -883, -883, -883, -883, -882, -882, -882, -882, + -882, -882, -882, -882, -882, -882, -882, -882, + -881, -881, -881, -881, -881, -881, -881, -880, + -880, -880, -880, -880, -879, -879, -879, -879, + -879, -878, -878, -878, -878, -877, -877, -877, + -876, -876, -876, -876, -875, -875, -875, -874, + -874, -874, -873, -873, -873, -872, -872, -871, + -871, -871, -870, -870, -870, -869, -869, -868, + -868, -867, -867, -867, -866, -866, -865, -865, + -864, -864, -863, -863, -862, -862, -861, -861, + -860, -860, -859, -859, -858, -857, -857, -856, + -856, -855, -855, -854, -853, -853, -852, -852, + -851, -850, -850, -849, -848, -848, -847, -846, + -846, -845, -844, -844, -843, -842, -842, -841, + -840, -840, -839, -838, -837, -837, -836, -835, + -834, -834, -833, -832, -831, -831, -830, -829, + -828, -827, -827, -826, -825, -824, -823, -822, + -822, -821, -820, -819, -818, -817, -816, -816, + -815, -814, -813, -812, -811, -810, -809, -808, + -808, -807, -806, -805, -804, -803, -802, -801, + -800, -799, -798, -797, -796, -795, -794, -793, + -792, -791, -790, -789, -788, -787, -786, -785, + -784, -783, -782, -781, -780, -779, -778, -777, + -776, -774, -773, -772, -771, -770, -769, -768, + -767, -766, -765, -763, -762, -761, -760, -759, + -758, -757, -755, -754, -753, -752, -751, -750, + -748, -747, -746, -745, -744, -743, -741, -740, + -739, -738, -736, -735, -734, -733, -732, -730, + -729, -728, -727, -725, -724, -723, -722, -720, + -719, -718, -716, -715, -714, -713, -711, -710, + -709, -707, -706, -705, -703, -702, -701, -699, + -698, -697, -695, -694, -693, -691, -690, -689, + -687, -686, -685, -683, -682, -680, -679, -678, + -676, -675, -673, -672, -671, -669, -668, -666, + -665, -664, -662, -661, -659, -658, -656, -655, + -654, -652, -651, -649, -648, -646, -645, -643, + -642, -640, -639, -638, -636, -635, -633, -632, + -630, -629, -627, -626, -624, -623, -621, -620, + -618, -617, -615, -614, -612, -610, -609, -607, + -606, -604, -603, -601, -600, -598, -597, -595, + -594, -592, -590, -589, -587, -586, -584, -583, + -581, -579, -578, -576, -575, -573, -572, -570, + -568, -567, -565, -564, -562, -560, -559, -557, + -556, -554, -552, -551, -549, -547, -546, -544, + -543, -541, -539, -538, -536, -534, -533, -531, + -530, -528, -526, -525, -523, -521, -520, -518, + -516, -515, -513, -511, -510, -508, -506, -505, + -503, -501, -500, -498, -496, -495, -493, -491, + -490, -488, -486, -485, -483, -481, -479, -478, + -476, -474, -473, -471, -469, -468, -466, -464, + -462, -461, -459, -457, -456, -454, -452, -450, + -449, -447, -445, -444, -442, -440, -438, -437, + -435, -433, -432, -430, -428, -426, -425, -423, + -421, -419, -418, -416, -414, -413, -411, -409, + -407, -406, -404, -402, -400, -399, -397, -395, + -393, -392, -390, -388, -386, -385, -383, -381, + -379, -378, -376, -374, -372, -371, -369, -367, + -365, -364, -362, -360, -358, -357, -355, -353, + -351, -350, -348, -346, -344, -343, -341, -339, + -337, -336, -334, -332, -330, -328, -327, -325, + -323, -321, -320, -318, -316, -314, -313, -311, + -309, -307, -306, -304, -302, -300, -299, -297, + -295, -293, -291, -290, -288, -286, -284, -283, + -281, -279, -277, -276, -274, -272, -270, -269, + -267, -265, -263, -262, -260, -258, -256, -255, + -253, -251, -249, -247, -246, -244, -242, -240, + -239, -237, -235, -233, -232, -230, -228, -226, + -225, -223, -221, -219, -218, -216, -214, -213, + -211, -209, -207, -206, -204, -202, -200, -199, + -197, -195, -193, -192, -190, -188, -186, -185, + -183, -181, -180, -178, -176, -174, -173, -171, + -169, -167, -166, -164, -162, -161, -159, -157, + -155, -154, -152, -150, -149, -147, -145, -143, + -142, -140, -138, -137, -135, -133, -132, -130, + -128, -126, -125, -123, -121, -120, -118, -116, + -115, -113, -111, -110, -108, -106, -105, -103, + -101, -99, -98, -96, -94, -93, -91, -89, + -88, -86, -84, -83, -81, -80, -78, -76, + -75, -73, -71, -70, -68, -66, -65, -63, + -61, -60, -58, -57, -55, -53, -52, -50, + -48, -47, -45, -43, -42, -40, -39, -37, + -35, -34, -32, -31, -29, -27, -26, -24, + -23, -21, -19, -18, -16, -15, -13, -11, + -10, -8, -7, -5, -4, -2, 0, 1, + 3, 4, 6, 7, 9, 10, 12, 14, + 15, 17, 18, 20, 21, 23, 24, 26, + 27, 29, 30, 32, 34, 35, 37, 38, + 40, 41, 43, 44, 46, 47, 49, 50, + 52, 53, 55, 56, 58, 59, 61, 62, + 64, 65, 66, 68, 69, 71, 72, 74, + 75, 77, 78, 80, 81, 82, 84, 85, + 87, 88, 90, 91, 93, 94, 95, 97, + 98, 100, 101, 102, 104, 105, 107, 108, + 109, 111, 112, 114, 115, 116, 118, 119, + 121, 122, 123, 125, 126, 127, 129, 130, + 132, 133, 134, 136, 137, 138, 140, 141, + 142, 144, 145, 146, 148, 149, 150, 152, + 153, 154, 155, 157, 158, 159, 161, 162, + 163, 165, 166, 167, 168, 170, 171, 172, + 174, 175, 176, 177, 179, 180, 181, 182, + 184, 185, 186, 187, 189, 190, 191, 192, + 193, 195, 196, 197, 198, 200, 201, 202, + 203, 204, 206, 207, 208, 209, 210, 211, + 213, 214, 215, 216, 217, 218, 220, 221, + 222, 223, 224, 225, 227, 228, 229, 230, + 231, 232, 233, 234, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 288, + 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, + 311, 312, 313, 314, 315, 316, 317, 318, + 318, 319, 320, 321, 322, 323, 323, 324, + 325, 326, 327, 328, 328, 329, 330, 331, + 332, 332, 333, 334, 335, 336, 336, 337, + 338, 339, 339, 340, 341, 342, 343, 343, + 344, 345, 346, 346, 347, 348, 349, 349, + 350, 351, 351, 352, 353, 354, 354, 355, + 356, 356, 357, 358, 358, 359, 360, 361, + 361, 362, 363, 363, 364, 365, 365, 366, + 367, 367, 368, 368, 369, 370, 370, 371, + 372, 372, 373, 373, 374, 375, 375, 376, + 376, 377, 378, 378, 379, 379, 380, 381, + 381, 382, 382, 383, 383, 384, 385, 385, + 386, 386, 387, 387, 388, 388, 389, 389, + 390, 391, 391, 392, 392, 393, 393, 394, + 394, 395, 395, 396, 396, 397, 397, 398, + 398, 398, 399, 399, 400, 400, 401, 401, + 402, 402, 403, 403, 403, 404, 404, 405, + 405, 406, 406, 406, 407, 407, 408, 408, + 409, 409, 409, 410, 410, 410, 411, 411, + 412, 412, 412, 413, 413, 413, 414, 414, + 415, 415, 415, 416, 416, 416, 417, 417, + 417, 418, 418, 418, 419, 419, 419, 420, + 420, 420, 420, 421, 421, 421, 422, 422, + 422, 423, 423, 423, 423, 424, 424, 424, + 424, 425, 425, 425, 425, 426, 426, 426, + 426, 427, 427, 427, 427, 428, 428, 428, + 428, 428, 429, 429, 429, 429, 429, 430, + 430, 430, 430, 430, 431, 431, 431, 431, + 431, 432, 432, 432, 432, 432, 432, 432, + 433, 433, 433, 433, 433, 433, 433, 434, + 434, 434, 434, 434, 434, 434, 434, 435, + 435, 435, 435, 435, 435, 435, 435, 435, + 435, 436, 436, 436, 436, 436, 436, 436, + 436, 436, 436, 436, 436, 436, 436, 436, + 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 437, + 437, 437, 437, 437, 437, 437, 437, 436, + 436, 436, 436, 436, 436, 436, 436, 436, + 436, 436, 436, 436, 436, 436, 436, 435, + 435, 435, 435, 435, 435, 435, 435, 435, + 435, 434, 434, 434, 434, 434, 434, 434, + 434, 434, 433, 433, 433, 433, 433, 433, + 433, 432, 432, 432, 432, 432, 432, 432, + 431, 431, 431, 431, 431, 431, 430, 430, + 430, 430, 430, 430, 429, 429, 429, 429, + 429, 429, 428, 428, 428, 428, 428, 427, + 427, 427, 427, 427, 426, 426, 426, 426, + 425, 425, 425, 425, 425, 424, 424, 424, + 424, 423, 423, 423, 423, 422, 422, 422, + 422, 421, 421, 421, 421, 420, 420, 420, + 420, 419, 419, 419, 419, 418, 418, 418, + 418, 417, 417, 417, 416, 416, 416, 416, + 415, 415, 415, 414, 414, 414, 414, 413, + 413, 413, 412, 412, 412, 411, 411, 411, + 410, 410, 410, 409, 409, 409, 409, 408, + 408, 408, 407, 407, 407, 406, 406, 406, + 405, 405, 405, 404, 404, 404, 403, 403, + 402, 402, 402, 401, 401, 401, 400, 400, + 400, 399, 399, 399, 398, 398, 397, 397, + 397, 396, 396, 396, 395, 395, 394, 394, + 394, 393, 393, 393, 392, 392, 391, 391, + 391, 390, 390, 389, 389, 389, 388, 388, + 387, 387, 387, 386, 386, 385, 385, 385, + 384, 384, 383, 383, 382, 382, 382, 381, + 381, 380, 380, 380, 379, 379, 378, 378, + 377, 377, 377, 376, 376, 375, 375, 374, + 374, 373, 373, 373, 372, 372, 371, 371, + 370, 370, 370, 369, 369, 368, 368, 367, + 367, 366, 366, 365, 365, 365, 364, 364, + 363, 363, 362, 362, 361, 361, 360, 360, + 359, 359, 359, 358, 358, 357, 357, 356, + 356, 355, 355, 354, 354, 353, 353, 352, + 352, 351, 351, 350, 350, 349, 349, 348, + 348, 348, 347, 347, 346, 346, 345, 345, + 344, 344, 343, 343, 342, 342, 341, 341, + 340, 340, 339, 339, 338, 338, 337, 337, + 336, 336, 335, 335, 334, 334, 333, 333, + 332, 332, 331, 331, 330, 330, 329, 329, + 328, 328, 327, 327, 326, 326, 325, 325, + 324, 323, 323, 322, 322, 321, 321, 320, + 320, 319, 319, 318, 318, 317, 317, 316, + 316, 315, 315, 314, 314, 313, 313, 312, + 312, 311, 311, 310, 309, 309, 308, 308, + 307, 307, 306, 306, 305, 305, 304, 304, + 303, 303, 302, 302, 301, 300, 300, 299, + 299, 298, 298, 297, 297, 296, 296, 295, + 295, 294, 294, 293, 293, 292, 291, 291, + 290, 290, 289, 289, 288, 288, 287, 287, + 286, 286, 285, 285, 284, 283, 283, 282, + 282, 281, 281, 280, 280, 279, 279, 278, + 278, 277, 277, 276, 275, 275, 274, 274, + 273, 273, 272, 272, 271, 271, 270, 270, + 269, 268, 268, 267, 267, 266, 266, 265, + 265, 264, 264, 263, 263, 262, 261, 261, + 260, 260, 259, 259, 258, 258, 257, 257, + 256, 256, 255, 255, 254, 253, 253, 252, + 252, 251, 251, 250, 250, 249, 249, 248, + 248, 247, 247, 246, 245, 245, 244, 244, + 243, 243, 242, 242, 241, 241, 240, 240, + 239, 239, 238, 237, 237, 236, 236, 235, + 235, 234, 234, 233, 233, 232, 232, 231, + 231, 230, 230, 229, 229, 228, 227, 227, + 226, 226, 225, 225, 224, 224, 223, 223, + 222, 222, 221, 221, 220, 220, 219, 219, + 218, 218, 217, 217, 216, 215, 215, 214, + 214, 213, 213, 212, 212, 211, 211, 210, + 210, 209, 209, 208, 208, 207, 207, 206, + 206, 205, 205, 204, 204, 203, 203, 202, + 202, 201, 201, 200, 200, 199, 199, 198, + 198, 197, 197, 196, 196, 195, 195, 194, + 194, 193, 193, 192, 192, 191, 191, 190, + 190, 189, 189, 188, 188, 187, 187, 186, + 186, 185, 185, 184, 184, 183, 183, 182, + 182, 181, 181, 180, 180, 179, 179, 178, + 178, 177, 177, 176, 176, 175, 175, 174, + 174, 174, 173, 173, 172, 172, 171, 171, + 170, 170, 169, 169, 168, 168, 167, 167, + 166, 166, 165, 165, 165, 164, 164, 163, + 163, 162, 162, 161, 161, 160, 160, 159, + 159, 159, 158, 158, 157, 157, 156, 156, + 155, 155, 154, 154, 153, 153, 153, 152, + 152, 151, 151, 150, 150, 149, 149, 149, + 148, 148, 147, 147, 146, 146, 145, 145, + 145, 144, 144, 143, 143, 142, 142, 141, + 141, 141, 140, 140, 139, 139, 138, 138, + 138, 137, 137, 136, 136, 135, 135, 135, + 134, 134, 133, 133, 132, 132, 132, 131, + 131, 130, 130, 130, 129, 129, 128, 128, + 127, 127, 127, 126, 126, 125, 125, 125, + 124, 124, 123, 123, 123, 122, 122, 121, + 121, 121, 120, 120, 119, 119, 119, 118, + 118, 117, 117, 117, 116, 116, 115, 115, + 115, 114, 114, 113, 113, 113, 112, 112, + 112, 111, 111, 110, 110, 110, 109, 109, + 108, 108, 108, 107, 107, 107, 106, 106, + 105, 105, 105, 104, 104, 104, 103, 103, + 103, 102, 102, 101, 101, 101, 100, 100, + 100, 99, 99, 99, 98, 98, 97, 97, + 97, 96, 96, 96, 95, 95, 95, 94, + 94, 94, 93, 93, 93, 92, 92, 92, + 91, 91, 90, 90, 90, 89, 89, 89, + 88, 88, 88, 87, 87, 87, 86, 86, + 86, 85, 85, 85, 85, 84, 84, 84, + 83, 83, 83, 82, 82, 82, 81, 81, + 81, 80, 80, 80, 79, 79, 79, 78, + 78, 78, 77, 77, 77, 77, 76, 76, + 76, 75, 75, 75, 74, 74, 74, 74, + 73, 73, 73, 72, 72, 72, 71, 71, + 71, 71, 70, 70, 70, 69, 69, 69, + 69, 68, 68, 68, 67, 67, 67, 67, + 66, 66, 66, 65, 65, 65, 65, 64, + 64, 64, 63, 63, 63, 63, 62, 62, + 62, 62, 61, 61, 61, 60, 60, 60, + 60, 59, 59, 59, 59, 58, 58, 58, + 58, 57, 57, 57, 57, 56, 56, 56, + 56, 55, 55, 55, 55, 54, 54, 54, + 54, 53, 53, 53, 53, 52, 52, 52, + 52, 51, 51, 51, 51, 50, 50, 50, + 50, 50, 49, 49, 49, 49, 48, 48, + 48, 48, 47, 47, 47, 47, 46, 46, + 46, 46, 46, 45, 45, 45, 45, 44, + 44, 44, 44, 44, 43, 43, 43, 43, + 43, 42, 42, 42, 42, 42, 41, 41, + 41, 41, 40, 40, 40, 40, 40, 39, + 39, 39, 39, 39, 38, 38, 38, 38, + 38, 37, 37, 37, 37, 37, 37, 36, + 36, 36, 36, 36, 35, 35, 35, 35, + 35, 34, 34, 34, 34, 34, 33, 33, + 33, 33, 33, 33, 32, 32, 32, 32, + 32, 32, 31, 31, 31, 31, 31, 31, + 30, 30, 30, 30, 30, 29, 29, 29, + 29, 29, 29, 28, 28, 28, 28, 28, + 28, 27, 27, 27, 27, 27, 27, 27, + 26, 26, 26, 26, 26, 26, 26, 25, + 25, 25, 25, 25, 25, 24, 24, 24, + 24, 24, 24, 23, 23, 23, 23, 23, + 23, 23, 22, 22, 22, 22, 22, 22, + 22, 22, 21, 21, 21, 21, 21, 21, + 21, 21, 20, 20, 20, 20, 20, 20, + 20, 19, 19, 19, 19, 19, 19, 19, + 18, 18, 18, 18, 18, 18, 18, 18, + 18, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 16, 16, 16, 16, 16, + 16, 16, 15, 15, 15, 15, 15, 15, + 15, 15, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, + 13, 13, 13, 13, 13, 13, 13, 13, + 12, 12, 12, 12, 12, 12, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 10, 10, 10, 10, + 9, 9, 9, 8, 8, 8, 7, 7, + 7, 7, 7, 7, 7, 7, 8, 8, + 9, 9, 10, 11, 12, 14, 15, 17, + 18, 20, 21, 23, 25, 26, 28, 29, + 31, 32, 33, 34, 35, 35, 36, 36, +}; + + +BandPass::BandPass() +{ + // This is the square of the bandpass, since the correlator multiplies two + // bandpasses. The following matlab functions are used: + + // f=fftshift(fft(Coeffs16384Kaiser-quant,262144)) + // m=f(131073-128:131073+127) + // r=f(131073-128+256:131073+127+256) + // l=f(131073-128-256:131073+127-256) + // plot(2^50./((abs(m).^2+abs(l).^2+abs(r).^2)./2.^50)) + + // it is not worth to use the more complex R2C FFTW method + std::vector<fcomplex, AlignedStdAllocator<fcomplex, 16> > in(262144, 0.0), out(262144); + + for (unsigned i = 0; i < 16384; i ++) + in[i] = stationFilterConstants[i]; + +#if defined HAVE_FFTW3 + fftwf_plan plan = fftwf_plan_dft_1d(262144, reinterpret_cast<fftwf_complex *>(&in[0]), reinterpret_cast<fftwf_complex *>(&out[0]), FFTW_FORWARD, FFTW_ESTIMATE); + fftwf_execute(plan); + fftwf_destroy_plan(plan); +#elif defined HAVE_FFTW2 + fftw_plan plan = fftw_create_plan(262144, FFTW_FORWARD, FFTW_ESTIMATE); + fftw_one(plan, reinterpret_cast<fftw_complex *>(&in[0]), reinterpret_cast<fftw_complex *>(&out[0])); + fftw_destroy_plan(plan); +#else +#error need FFTW2 or FFTW3 +#endif + + factors = new float[NR_SUBBAND_CHANNELS]; + + for (unsigned i = 0; i < NR_SUBBAND_CHANNELS; i ++) { + fcomplex m = out[(i - NR_SUBBAND_CHANNELS / 2) % 262144U]; + fcomplex l = out[(i - 3 * NR_SUBBAND_CHANNELS / 2) % 262144U]; + fcomplex r = out[i + NR_SUBBAND_CHANNELS / 2]; + + factors[i] = pow(2, 50) / abs(m * m + l * l + r * r); + } +} + + +BandPass::~BandPass() +{ + delete [] factors; +} + +} // namespace CS1 +} // namespace LOFAR + + +#if 0 +int main() +{ + LOFAR::CS1::BandPass bandpass; + const float *f = bandpass.correctionFactors(); + + for (unsigned i = 0; i < NR_SUBBAND_CHANNELS; i ++) + std::clog << i << ' ' << f[i] << std::endl; + + return 0; +} +#endif diff --git a/Appl/CEP/CS1/CS1_BGLProc/src/BandPass.h b/Appl/CEP/CS1/CS1_BGLProc/src/BandPass.h new file mode 100644 index 0000000000000000000000000000000000000000..4702634040d148a175d5839c99bc8caff5623f61 --- /dev/null +++ b/Appl/CEP/CS1/CS1_BGLProc/src/BandPass.h @@ -0,0 +1,30 @@ +#ifndef LOFAR_APPL_CEP_CS1_CS1_BGL_PROC_BANDPASS_H +#define LOFAR_APPL_CEP_CS1_CS1_BGL_PROC_BANDPASS_H + + +namespace LOFAR { +namespace CS1 { + +class BandPass { + public: + BandPass(); + ~BandPass(); + + const float *correctionFactors() const; + + private: + static const float stationFilterConstants[65536]; + + float *factors; +}; + + +inline const float *BandPass::correctionFactors() const +{ + return factors; +} + +} // namespace CS1 +} // namespace LOFAR + +#endif