diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h index 8136c5b258fa..7db3b5f7a92b 100644 --- a/quantum/audio/audio.h +++ b/quantum/audio/audio.h @@ -13,8 +13,8 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#ifndef AUDIO_H -#define AUDIO_H + +#pragma once #include #include @@ -27,6 +27,9 @@ #include "voices.h" #include "quantum.h" #include +#if defined(PROTOCOL_CHIBIOS) + #include "audio_arm.h" +#endif // Largely untested PWM audio mode (doesn't sound as good) // #define PWM_AUDIO @@ -107,6 +110,5 @@ void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat); #define PLAY_SONG(note_array) play_notes(¬e_array, NOTE_ARRAY_SIZE((note_array)), false) #define PLAY_LOOP(note_array) play_notes(¬e_array, NOTE_ARRAY_SIZE((note_array)), true) +bool is_playing_note(void); bool is_playing_notes(void); - -#endif diff --git a/quantum/audio/audio_arm.c b/quantum/audio/audio_arm.c index f38f90563b3f..0edc3be0aafd 100644 --- a/quantum/audio/audio_arm.c +++ b/quantum/audio/audio_arm.c @@ -1,4 +1,4 @@ -/* Copyright 2016 Jack Humbert +/* Copyright 2016-2019 Jack Humbert * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,75 +26,8 @@ // ----------------------------------------------------------------------------- -/** - * Size of the dac_buffer arrays. All must be the same size. - */ -#define DAC_BUFFER_SIZE 256U - -/** - * Highest value allowed by our 12bit DAC. - */ -#ifndef DAC_SAMPLE_MAX - #define DAC_SAMPLE_MAX 4095U -#endif - -#define DAC_LOW_QUALITY - -/** - * These presets allow you to quickly switch between quality/voice settings for - * the DAC. The sample rate and number of voices roughly has an inverse - * relationship - slightly higher sample rates may be possible. - */ -#ifdef DAC_VERY_LOW_QUALITY - #define DAC_SAMPLE_RATE 11025U - #define DAC_VOICES_MAX 8 -#endif - -#ifdef DAC_LOW_QUALITY - #define DAC_SAMPLE_RATE 22050U - #define DAC_VOICES_MAX 4 -#endif - -#ifdef DAC_HIGH_QUALITY - #define DAC_SAMPLE_RATE 44100U - #define DAC_VOICES_MAX 2 -#endif - -#ifdef DAC_VERY_HIGH_QUALITY - #define DAC_SAMPLE_RATE 88200U - #define DAC_VOICES_MAX 1 -#endif - -/** - * Effective bitrate of the DAC. 44.1khz is the standard for most audio - any - * lower will sacrifice perceptible audio quality. Any higher will limit the - * number of simultaneous voices. In most situations, a tenth (1/10) of the - * sample rate is where notes become unbearable. - */ -#ifndef DAC_SAMPLE_RATE - #define DAC_SAMPLE_RATE 44100U -#endif - -/** - * The number of voices (in polyphony) that are supported. If too high a value - * is used here, the keyboard will freeze and glitch-out when that many voices - * are being played. - */ -#ifndef DAC_VOICES_MAX - #define DAC_VOICES_MAX 2 -#endif - -/** - * The default value of the DAC when not playing anything. Certain hardware - * setups may require a high (DAC_SAMPLE_MAX) or low (0) value here. - */ -#ifndef DAC_OFF_VALUE - #define DAC_OFF_VALUE DAC_SAMPLE_MAX / 2 -#endif - -int voices = 0; -float frequencies[8] = {0, 0, 0, 0, 0, 0, 0, 0}; -int volumes[8] = {0, 0, 0, 0, 0, 0, 0, 0}; +uint8_t dac_voices = 0; +float dac_frequencies[8] = { 0.0 }; bool playing_notes = false; bool playing_note = false; @@ -129,7 +62,7 @@ bool glissando = true; #endif float startup_song[][2] = STARTUP_SONG; -static const dacsample_t dac_buffer[DAC_BUFFER_SIZE] = { +static const dacsample_t dac_buffer_sine[DAC_BUFFER_SIZE] = { // 256 values, max 4095 0x800,0x832,0x864,0x896,0x8c8,0x8fa,0x92c,0x95e, 0x98f,0x9c0,0x9f1,0xa22,0xa52,0xa82,0xab1,0xae0, @@ -209,69 +142,40 @@ static const dacsample_t dac_buffer_square[DAC_BUFFER_SIZE] = { static dacsample_t dac_buffer_empty[DAC_BUFFER_SIZE] = { DAC_OFF_VALUE }; -#include "wavetable.h" - -float dac_if[8] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; -uint8_t dac_voice = 0; -uint8_t dac_voice_flipped = 0; -uint16_t dac_voice_counter = 0; -float dac_voice_count_flipped = 0; +static float dac_if[8] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; /** - * Generation of the sample being passed to the callback. Declared weak so users + * Generation of the waveform being passed to the callback. Declared weak so users * can override it with their own waveforms/noises. */ __attribute__ ((weak)) -uint16_t generate_sample(void) { - uint16_t sample = DAC_OFF_VALUE; - uint8_t working_voices = voices; +uint16_t dac_value_generate(void) { + uint16_t value = DAC_OFF_VALUE; + uint8_t working_voices = dac_voices; if (working_voices > DAC_VOICES_MAX) working_voices = DAC_VOICES_MAX; if (working_voices > 0) { - uint16_t sample_sum = 0; + uint16_t value_avg = 0; for (uint8_t i = 0; i < working_voices; i++) { - dac_if[i] = dac_if[i] + ((frequencies[i]*DAC_BUFFER_SIZE)/DAC_SAMPLE_RATE); + dac_if[i] = dac_if[i] + ((dac_frequencies[i] * DAC_BUFFER_SIZE) / DAC_SAMPLE_RATE); // Needed because % doesn't work with floats - // 0.5 less than the size because we use round() later while (dac_if[i] >= (DAC_BUFFER_SIZE)) dac_if[i] = dac_if[i] - DAC_BUFFER_SIZE; - (void)dac_buffer; - (void)dac_buffer_square; - (void)dac_buffer_triangle; - - #define DAC_MORPH_SPEED 3000 - #define DAC_SAMPLE_CUSTOM_LENGTH 64 - #define DAC_MORPH_SPEED_COMPUTED (DAC_SAMPLE_RATE / DAC_SAMPLE_CUSTOM_LENGTH * DAC_MORPH_SPEED / 1000) - - uint16_t dac_i = (uint16_t)dac_if[i]; // Wavetable generation/lookup + uint16_t dac_i = (uint16_t)dac_if[i]; // SINE - // sample_sum += dac_buffer[dac_i] / working_voices / 3; + value_avg += dac_buffer_sine[dac_i] / working_voices / 3; // TRIANGLE - // sample_sum += dac_buffer_triangle[dac_i] / working_voices / 3; - // RISING TRIANGLE - // sample_sum += (uint16_t)round((dac_if[i] * DAC_SAMPLE_MAX) / DAC_BUFFER_SIZE / working_voices ); + value_avg += dac_buffer_triangle[dac_i] / working_voices / 3; // SQUARE - // sample_sum += ((dac_if[i] > (DAC_BUFFER_SIZE / 2)) ? DAC_SAMPLE_MAX / working_voices: 0); - // sample_sum += dac_buffer_square[dac_i] / working_voices / 3; - // sample_sum += dac_buffer_custom[dac_voice_flipped][dac_i] / working_voices / 2 * ((dac_voice >= 63) ? 6400 - dac_voice_counter : dac_voice_counter) / 6400; - // sample_sum += dac_buffer_custom[dac_voice_flipped + 1][dac_i] / working_voices / 2 * ((dac_voice >= 63) ? dac_voice_counter : 6400 - dac_voice_counter) / 6400; - sample_sum += dac_buffer_custom[dac_voice][dac_i] / working_voices / 2 * (DAC_MORPH_SPEED_COMPUTED - dac_voice_counter) / DAC_MORPH_SPEED_COMPUTED; - sample_sum += dac_buffer_custom[dac_voice + 1][dac_i] / working_voices / 2 * dac_voice_counter / DAC_MORPH_SPEED_COMPUTED; - } - sample = sample_sum; - dac_voice_counter++; - if (dac_voice_counter >= DAC_MORPH_SPEED_COMPUTED) { - dac_voice_counter = 0; - // dac_voice = (dac_voice + 1) % 125; - // dac_voice_flipped = ((dac_voice >= 63) ? (125 - dac_voice) : dac_voice); - dac_voice = (dac_voice + 1) % (DAC_SAMPLE_CUSTOM_LENGTH - 1); + value_avg += dac_buffer_square[dac_i] / working_voices / 3; } + value = value_avg; } - return sample; + return value; } /** @@ -282,7 +186,7 @@ static void dac_end(DACDriver * dacp, dacsample_t * sample_p, size_t sample_coun (void)dacp; for (uint8_t s = 0; s < sample_count; s++) { - sample_p[s] = generate_sample(); + sample_p[s] = dac_value_generate(); } if (playing_notes) { @@ -402,15 +306,13 @@ void stop_all_notes() { if (!audio_initialized) { audio_init(); } - voices = 0; + dac_voices = 0; playing_notes = false; playing_note = false; - for (uint8_t i = 0; i < 8; i++) - { - frequencies[i] = 0; - volumes[i] = 0; + for (uint8_t i = 0; i < 8; i++) { + dac_frequencies[i] = 0; } } @@ -422,23 +324,20 @@ void stop_note(float freq) { audio_init(); } for (int i = 7; i >= 0; i--) { - if (frequencies[i] == freq) { - frequencies[i] = 0; - volumes[i] = 0; + if (dac_frequencies[i] == freq) { + dac_frequencies[i] = 0; for (int j = i; (j < 7); j++) { - frequencies[j] = frequencies[j+1]; - frequencies[j+1] = 0; - volumes[j] = volumes[j+1]; - volumes[j+1] = 0; + dac_frequencies[j] = dac_frequencies[j+1]; + dac_frequencies[j+1] = 0; } break; } } - voices--; - if (voices < 0) { - voices = 0; + dac_voices--; + if (dac_voices < 0) { + dac_voices = 0; } - if (voices == 0) { + if (dac_voices == 0) { playing_note = false; } } @@ -472,25 +371,19 @@ void play_note(float freq, int vol) { audio_init(); } - if (audio_config.enable && voices < 8) { - - // Cancel notes if notes are playing - // if (playing_notes) { - // stop_all_notes(); - // } - + if (audio_config.enable && dac_voices < 8) { playing_note = true; - if (freq > 0) { envelope_index = 0; - frequencies[voices] = freq; - dac_if[voices] = 0.0f; - volumes[voices] = vol; - voices++; + dac_frequencies[dac_voices] = freq; + dac_voices++; } - } +} +__attribute__ ((weak)) +void dac_setup_note(void) { + dac_if[dac_voices] = 0.0f; } void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat) { @@ -517,6 +410,10 @@ void play_notes(float (*np)[][2], uint16_t n_count, bool n_repeat) { } } +bool is_playing_note(void) { + return playing_note; +} + bool is_playing_notes(void) { return playing_notes; } @@ -624,3 +521,11 @@ void increase_tempo(uint8_t tempo_change) { note_tempo -= tempo_change; } } + +uint8_t dac_number_of_voices(void) { + return dac_voices; +} + +float dac_get_frequency(uint8_t index) { + return dac_frequencies[index]; +} diff --git a/quantum/audio/audio_arm.h b/quantum/audio/audio_arm.h new file mode 100644 index 000000000000..bd8853a86acc --- /dev/null +++ b/quantum/audio/audio_arm.h @@ -0,0 +1,89 @@ +/* Copyright 2019 Jack Humbert + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include "ch.h" + +/** + * Size of the dac_buffer arrays. All must be the same size. + */ +#define DAC_BUFFER_SIZE 256U + +/** + * Highest value allowed by our 12bit DAC. + */ +#ifndef DAC_SAMPLE_MAX + #define DAC_SAMPLE_MAX 4095U +#endif + +// #define DAC_LOW_QUALITY + +/** + * These presets allow you to quickly switch between quality/voice settings for + * the DAC. The sample rate and number of voices roughly has an inverse + * relationship - slightly higher sample rates may be possible. + */ +#ifdef DAC_VERY_LOW_QUALITY + #define DAC_SAMPLE_RATE 11025U + #define DAC_VOICES_MAX 8 +#endif + +#ifdef DAC_LOW_QUALITY + #define DAC_SAMPLE_RATE 22050U + #define DAC_VOICES_MAX 4 +#endif + +#ifdef DAC_HIGH_QUALITY + #define DAC_SAMPLE_RATE 44100U + #define DAC_VOICES_MAX 2 +#endif + +#ifdef DAC_VERY_HIGH_QUALITY + #define DAC_SAMPLE_RATE 88200U + #define DAC_VOICES_MAX 1 +#endif + +/** + * Effective bitrate of the DAC. 44.1khz is the standard for most audio - any + * lower will sacrifice perceptible audio quality. Any higher will limit the + * number of simultaneous voices. In most situations, a tenth (1/10) of the + * sample rate is where notes become unbearable. + */ +#ifndef DAC_SAMPLE_RATE + #define DAC_SAMPLE_RATE 44100U +#endif + +/** + * The number of voices (in polyphony) that are supported. If too high a value + * is used here, the keyboard will freeze and glitch-out when that many voices + * are being played. + */ +#ifndef DAC_VOICES_MAX + #define DAC_VOICES_MAX 2 +#endif + +/** + * The default value of the DAC when not playing anything. Certain hardware + * setups may require a high (DAC_SAMPLE_MAX) or low (0) value here. + */ +#ifndef DAC_OFF_VALUE + #define DAC_OFF_VALUE DAC_SAMPLE_MAX / 2 +#endif + +uint8_t dac_number_of_voices(void); +float dac_get_frequency(uint8_t index); +uint16_t dac_value_generate(void); +void dac_setup_note(void); diff --git a/quantum/audio/wavetable.h b/quantum/audio/wavetable.h deleted file mode 100644 index 64b80b1f2364..000000000000 --- a/quantum/audio/wavetable.h +++ /dev/null @@ -1,2178 +0,0 @@ -static const dacsample_t dac_buffer_custom[64][256] = { - { - 2049, 2042, 2026, 2000, 1968, 1937, 1912, 1898, - 1896, 1904, 1918, 1932, 1939, 1937, 1926, 1918, - 1929, 1982, 2094, 2262, 2464, 2655, 2792, 2845, - 2817, 2742, 2666, 2628, 2638, 2677, 2716, 2735, - 2742, 2767, 2843, 2982, 3162, 3332, 3439, 3457, - 3398, 3308, 3238, 3220, 3250, 3298, 3328, 3322, - 3286, 3247, 3227, 3235, 3258, 3273, 3270, 3260, - 3271, 3333, 3455, 3619, 3781, 3894, 3932, 3899, - 3828, 3761, 3728, 3735, 3764, 3789, 3792, 3771, - 3740, 3715, 3707, 3712, 3720, 3721, 3711, 3696, - 3682, 3674, 3671, 3669, 3664, 3656, 3648, 3642, - 3638, 3632, 3622, 3611, 3603, 3598, 3587, 3552, - 3474, 3345, 3181, 3017, 2893, 2838, 2853, 2910, - 2969, 2996, 2980, 2939, 2899, 2885, 2898, 2923, - 2938, 2931, 2907, 2883, 2874, 2877, 2870, 2820, - 2708, 2539, 2351, 2193, 2107, 2103, 2158, 2226, - 2267, 2266, 2234, 2198, 2179, 2174, 2153, 2081, - 1936, 1733, 1519, 1352, 1276, 1295, 1376, 1464, - 1513, 1507, 1463, 1416, 1396, 1412, 1449, 1480, - 1488, 1472, 1450, 1438, 1440, 1437, 1400, 1304, - 1150, 969, 810, 716, 705, 761, 842, 903, - 918, 892, 850, 824, 830, 862, 897, 915, - 908, 888, 875, 877, 886, 873, 811, 689, - 527, 367, 255, 219, 253, 323, 388, 419, - 411, 382, 358, 357, 377, 406, 427, 433, - 428, 421, 423, 434, 449, 460, 466, 467, - 470, 477, 487, 495, 499, 501, 506, 515, - 528, 538, 544, 554, 587, 663, 790, 954, - 1120, 1245, 1300, 1284, 1225, 1165, 1139, 1156, - 1198, 1237, 1250, 1235, 1209, 1196, 1206, 1232, - 1255, 1261, 1253, 1260, 1314, 1435, 1610, 1799, - 1948, 2025, 2028, 1994, 1970, 1988, 2051, 2131 - }, - { - 2197, 2242, 2285, 2368, 2517, 2725, 2942, 3103, - 3165, 3132, 3060, 3018, 3057, 3172, 3313, 3415, - 3440, 3401, 3350, 3347, 3419, 3545, 3669, 3737, - 3733, 3685, 3648, 3670, 3760, 3885, 3992, 4038, - 4015, 3948, 3881, 3848, 3855, 3884, 3909, 3910, - 3888, 3856, 3832, 3826, 3832, 3840, 3840, 3829, - 3811, 3795, 3787, 3785, 3786, 3782, 3774, 3762, - 3751, 3744, 3740, 3736, 3730, 3723, 3714, 3706, - 3700, 3695, 3690, 3683, 3674, 3666, 3660, 3655, - 3651, 3646, 3638, 3629, 3621, 3614, 3610, 3607, - 3603, 3597, 3588, 3578, 3569, 3565, 3564, 3564, - 3561, 3552, 3539, 3526, 3518, 3517, 3516, 3505, - 3468, 3397, 3299, 3193, 3106, 3059, 3051, 3062, - 3059, 3014, 2921, 2805, 2703, 2649, 2647, 2671, - 2677, 2630, 2528, 2403, 2303, 2259, 2261, 2262, - 2202, 2047, 1814, 1566, 1384, 1315, 1352, 1432, - 1476, 1432, 1305, 1149, 1034, 1003, 1044, 1102, - 1113, 1045, 918, 786, 706, 702, 748, 790, - 775, 690, 564, 451, 396, 407, 452, 480, - 449, 357, 236, 136, 95, 119, 181, 243, - 274, 268, 241, 219, 218, 240, 270, 292, - 298, 291, 284, 285, 298, 316, 330, 337, - 337, 337, 341, 351, 364, 374, 379, 382, - 385, 391, 401, 411, 419, 423, 426, 431, - 438, 447, 457, 464, 468, 471, 475, 482, - 492, 501, 508, 512, 514, 517, 523, 533, - 543, 552, 558, 559, 559, 563, 571, 584, - 596, 604, 605, 606, 618, 655, 725, 821, - 923, 1006, 1051, 1059, 1049, 1055, 1101, 1194, - 1310, 1413, 1470, 1475, 1452, 1442, 1482, 1579, - 1706, 1814, 1867, 1859, 1823, 1814, 1871, 1998, - 2151, 2269, 2307, 2268, 2209, 2214, 2346, 2613 - }, - { - 2954, 3272, 3477, 3536, 3486, 3414, 3407, 3507, - 3694, 3896, 4036, 4070, 4012, 3914, 3838, 3822, - 3860, 3917, 3953, 3946, 3905, 3855, 3825, 3823, - 3842, 3863, 3866, 3844, 3799, 3737, 3663, 3584, - 3505, 3439, 3394, 3380, 3392, 3419, 3442, 3447, - 3432, 3404, 3381, 3378, 3407, 3465, 3544, 3626, - 3694, 3735, 3745, 3727, 3694, 3661, 3641, 3637, - 3645, 3655, 3658, 3650, 3633, 3615, 3603, 3599, - 3602, 3603, 3596, 3569, 3519, 3446, 3358, 3270, - 3197, 3155, 3147, 3166, 3195, 3217, 3219, 3201, - 3173, 3153, 3154, 3186, 3245, 3321, 3400, 3465, - 3508, 3523, 3513, 3487, 3457, 3432, 3421, 3423, - 3432, 3443, 3446, 3438, 3419, 3396, 3379, 3376, - 3385, 3390, 3367, 3288, 3144, 2953, 2761, 2617, - 2552, 2548, 2547, 2474, 2281, 1982, 1652, 1391, - 1268, 1285, 1366, 1408, 1334, 1139, 892, 693, - 610, 640, 711, 729, 635, 440, 217, 57, - 14, 81, 197, 290, 316, 277, 214, 172, - 175, 216, 266, 297, 300, 283, 267, 268, - 291, 335, 393, 463, 541, 621, 691, 737, - 752, 738, 709, 685, 680, 697, 727, 751, - 753, 723, 663, 584, 503, 436, 395, 385, - 401, 432, 464, 485, 491, 485, 476, 473, - 481, 498, 517, 530, 534, 530, 526, 530, - 555, 605, 679, 768, 857, 929, 970, 977, - 959, 930, 910, 907, 925, 952, 973, 972, - 943, 885, 809, 730, 663, 622, 610, 625, - 654, 684, 705, 710, 704, 691, 682, 682, - 693, 712, 732, 745, 745, 737, 734, 761, - 840, 980, 1164, 1353, 1498, 1566, 1565, 1542, - 1561, 1667, 1858, 2079, 2253, 2331, 2321, 2291, - 2331, 2495, 2766, 3057, 3264, 3323, 3248, 3121 - }, - { - 3038, 3042, 3095, 3098, 2958, 2658, 2283, 1989, - 1928, 2164, 2642, 3206, 3675, 3927, 3947, 3818, - 3667, 3601, 3659, 3803, 3960, 4060, 4073, 4016, - 3937, 3879, 3865, 3886, 3919, 3936, 3925, 3884, - 3823, 3750, 3672, 3594, 3521, 3465, 3441, 3457, - 3513, 3599, 3692, 3772, 3823, 3841, 3830, 3804, - 3776, 3754, 3743, 3742, 3746, 3750, 3748, 3739, - 3724, 3708, 3697, 3694, 3695, 3695, 3681, 3645, - 3584, 3502, 3410, 3325, 3263, 3237, 3251, 3304, - 3383, 3472, 3554, 3613, 3642, 3642, 3620, 3591, - 3566, 3552, 3551, 3556, 3561, 3560, 3552, 3539, - 3526, 3518, 3515, 3516, 3515, 3503, 3474, 3423, - 3350, 3262, 3172, 3098, 3058, 3063, 3112, 3193, - 3285, 3367, 3425, 3456, 3463, 3455, 3439, 3418, - 3395, 3376, 3368, 3374, 3386, 3388, 3358, 3283, - 3170, 3052, 2967, 2933, 2933, 2907, 2783, 2518, - 2133, 1714, 1373, 1196, 1187, 1266, 1305, 1206, - 948, 607, 309, 157, 177, 306, 431, 457, - 361, 194, 45, 0, 29, 131, 224, 259, - 231, 174, 133, 138, 189, 268, 352, 429, - 498, 560, 611, 643, 649, 631, 604, 587, - 591, 615, 644, 658, 643, 594, 521, 439, - 364, 311, 286, 291, 319, 355, 386, 400, - 396, 381, 373, 385, 426, 496, 584, 674, - 754, 810, 833, 821, 773, 698, 610, 526, - 464, 434, 434, 458, 489, 516, 530, 530, - 522, 516, 522, 549, 601, 677, 765, 854, - 925, 968, 977, 960, 931, 908, 904, 920, - 947, 970, 971, 940, 879, 798, 715, 646, - 603, 591, 604, 634, 669, 695, 706, 700, - 684, 673, 684, 731, 814, 918, 1016, 1084, - 1116, 1130, 1164, 1259, 1437, 1685, 1957, 2191 - }, - { - 2338, 2382, 2344, 2274, 2227, 2251, 2371, 2590, - 2891, 3235, 3569, 3835, 3987, 4009, 3927, 3802, - 3703, 3678, 3728, 3814, 3879, 3879, 3808, 3693, - 3578, 3493, 3448, 3430, 3425, 3428, 3446, 3491, - 3564, 3648, 3720, 3758, 3755, 3723, 3684, 3656, - 3647, 3652, 3662, 3665, 3653, 3624, 3577, 3511, - 3433, 3352, 3284, 3242, 3236, 3268, 3329, 3407, - 3484, 3547, 3587, 3600, 3590, 3566, 3538, 3517, - 3510, 3513, 3523, 3529, 3526, 3515, 3498, 3483, - 3474, 3473, 3474, 3471, 3453, 3414, 3354, 3278, - 3195, 3122, 3072, 3058, 3082, 3140, 3218, 3299, - 3366, 3410, 3428, 3422, 3401, 3377, 3357, 3346, - 3345, 3350, 3353, 3346, 3320, 3270, 3198, 3112, - 3028, 2965, 2938, 2954, 3006, 3080, 3157, 3220, - 3266, 3295, 3310, 3313, 3301, 3273, 3237, 3210, - 3208, 3229, 3244, 3195, 3023, 2704, 2272, 1820, - 1460, 1269, 1246, 1306, 1323, 1198, 911, 538, - 208, 32, 47, 198, 376, 480, 468, 372, - 267, 222, 262, 365, 480, 569, 621, 651, - 678, 707, 725, 709, 650, 560, 467, 400, - 376, 388, 420, 451, 471, 476, 474, 470, - 471, 481, 505, 550, 614, 694, 776, 843, - 883, 886, 853, 794, 719, 643, 579, 538, - 523, 533, 560, 589, 611, 619, 614, 606, - 602, 607, 620, 637, 649, 653, 651, 648, - 652, 672, 711, 770, 844, 924, 996, 1046, - 1062, 1039, 982, 903, 820, 751, 707, 692, - 699, 720, 743, 761, 770, 771, 767, 766, - 774, 799, 847, 917, 1002, 1086, 1150, 1178, - 1162, 1109, 1034, 957, 894, 850, 822, 806, - 802, 813, 840, 877, 907, 911, 888, 866, - 895, 1028, 1283, 1627, 1976, 2241, 2369, 2382 - }, - { - 2363, 2408, 2558, 2765, 2917, 2902, 2690, 2372, - 2124, 2121, 2436, 2993, 3598, 4042, 4095, 4086, - 3841, 3629, 3562, 3642, 3788, 3895, 3898, 3807, - 3677, 3569, 3511, 3487, 3465, 3424, 3375, 3348, - 3372, 3450, 3557, 3656, 3715, 3727, 3704, 3670, - 3643, 3631, 3630, 3632, 3633, 3629, 3622, 3613, - 3603, 3594, 3586, 3582, 3579, 3577, 3572, 3563, - 3553, 3544, 3538, 3535, 3533, 3529, 3522, 3513, - 3504, 3498, 3494, 3491, 3487, 3481, 3473, 3465, - 3459, 3454, 3450, 3445, 3438, 3431, 3425, 3421, - 3419, 3417, 3414, 3408, 3400, 3391, 3384, 3378, - 3374, 3370, 3364, 3357, 3351, 3346, 3344, 3342, - 3338, 3332, 3325, 3318, 3310, 3298, 3274, 3229, - 3160, 3074, 2987, 2923, 2899, 2922, 2984, 3065, - 3144, 3206, 3246, 3271, 3285, 3288, 3276, 3248, - 3212, 3185, 3185, 3206, 3216, 3155, 2965, 2626, - 2179, 1723, 1373, 1201, 1196, 1265, 1274, 1127, - 814, 419, 81, 0, 0, 118, 312, 423, - 411, 312, 205, 162, 207, 315, 435, 526, - 577, 605, 627, 650, 660, 639, 578, 490, - 400, 336, 313, 330, 377, 441, 515, 594, - 670, 734, 775, 787, 775, 752, 734, 731, - 745, 767, 785, 788, 767, 723, 658, 584, - 515, 465, 447, 468, 524, 604, 694, 777, - 845, 888, 903, 889, 846, 781, 703, 627, - 569, 539, 543, 579, 641, 719, 801, 877, - 937, 973, 983, 972, 951, 933, 929, 941, - 964, 985, 990, 969, 920, 851, 775, 708, - 662, 646, 664, 712, 784, 869, 955, 1028, - 1078, 1094, 1076, 1027, 958, 883, 815, 764, - 734, 724, 733, 753, 780, 806, 820, 818, - 808, 811, 864, 1005, 1251, 1578, 1925, 2205 - }, - { - 2350, 2341, 2231, 2126, 2144, 2357, 2755, 3249, - 3705, 4005, 4095, 4006, 3821, 3638, 3522, 3484, - 3492, 3503, 3495, 3473, 3467, 3501, 3579, 3679, - 3764, 3807, 3799, 3759, 3711, 3681, 3675, 3687, - 3702, 3706, 3693, 3660, 3608, 3542, 3465, 3387, - 3320, 3279, 3274, 3306, 3368, 3445, 3522, 3584, - 3623, 3635, 3617, 3572, 3503, 3419, 3333, 3259, - 3209, 3191, 3205, 3247, 3310, 3383, 3455, 3513, - 3549, 3553, 3523, 3465, 3386, 3300, 3219, 3156, - 3119, 3112, 3136, 3188, 3260, 3338, 3408, 3458, - 3477, 3464, 3420, 3355, 3277, 3196, 3123, 3067, - 3037, 3039, 3074, 3138, 3217, 3295, 3357, 3393, - 3401, 3388, 3365, 3342, 3327, 3322, 3325, 3331, - 3333, 3321, 3288, 3228, 3145, 3051, 2969, 2922, - 2922, 2964, 3029, 3097, 3154, 3201, 3246, 3283, - 3285, 3203, 2992, 2639, 2193, 1751, 1421, 1267, - 1272, 1339, 1339, 1181, 862, 470, 143, 0, - 42, 239, 470, 635, 693, 670, 625, 608, - 627, 650, 637, 567, 460, 359, 305, 313, - 364, 422, 458, 460, 440, 418, 412, 429, - 468, 522, 588, 662, 738, 803, 843, 849, - 817, 756, 680, 605, 544, 504, 490, 506, - 551, 621, 705, 790, 862, 910, 928, 915, - 876, 816, 743, 670, 608, 570, 566, 597, - 659, 739, 824, 901, 960, 995, 1002, 980, - 930, 860, 782, 709, 657, 636, 650, 695, - 762, 841, 922, 994, 1049, 1078, 1077, 1043, - 980, 903, 825, 763, 726, 717, 729, 752, - 775, 792, 800, 801, 798, 797, 806, 836, - 892, 973, 1066, 1151, 1201, 1204, 1162, 1093, - 1021, 963, 919, 881, 847, 836, 890, 1051, - 1331, 1689, 2038, 2285, 2385, 2370, 2347, 2432 - }, - { - 2682, 3039, 3350, 3441, 3219, 2740, 2199, 1842, - 1851, 2249, 2895, 3553, 4010, 4095, 4059, 3829, - 3618, 3508, 3495, 3521, 3522, 3478, 3413, 3377, - 3403, 3492, 3608, 3706, 3756, 3755, 3721, 3682, - 3656, 3650, 3656, 3663, 3663, 3654, 3641, 3628, - 3620, 3615, 3613, 3610, 3605, 3597, 3588, 3579, - 3573, 3569, 3565, 3560, 3553, 3545, 3538, 3532, - 3527, 3523, 3517, 3510, 3503, 3496, 3491, 3487, - 3482, 3476, 3469, 3462, 3456, 3451, 3447, 3442, - 3436, 3429, 3422, 3416, 3412, 3408, 3404, 3398, - 3391, 3384, 3378, 3374, 3371, 3367, 3361, 3354, - 3348, 3342, 3337, 3334, 3331, 3327, 3322, 3316, - 3309, 3303, 3297, 3293, 3290, 3287, 3282, 3276, - 3268, 3259, 3252, 3248, 3243, 3229, 3195, 3134, - 3050, 2957, 2882, 2845, 2858, 2910, 2980, 3048, - 3102, 3146, 3186, 3213, 3192, 3073, 2818, 2434, - 1986, 1576, 1304, 1210, 1248, 1306, 1262, 1050, - 700, 323, 52, 0, 87, 307, 519, 642, - 659, 616, 576, 577, 609, 631, 601, 514, - 400, 309, 277, 306, 367, 421, 441, 428, - 402, 387, 394, 418, 442, 456, 456, 450, - 448, 455, 467, 480, 488, 492, 495, 499, - 505, 514, 524, 540, 571, 623, 697, 782, - 861, 914, 927, 900, 840, 764, 689, 627, - 585, 566, 572, 606, 665, 743, 829, 909, - 967, 994, 988, 952, 893, 822, 750, 689, - 649, 635, 645, 671, 700, 720, 725, 719, - 710, 707, 713, 727, 741, 751, 754, 753, - 753, 756, 763, 772, 781, 787, 792, 794, - 797, 804, 823, 861, 923, 1004, 1090, 1160, - 1195, 1188, 1145, 1082, 1014, 951, 894, 847, - 823, 849, 959, 1168, 1461, 1788, 2078, 2271 - }, - { - 2335, 2286, 2174, 2062, 1999, 2010, 2093, 2231, - 2399, 2570, 2719, 2822, 2868, 2862, 2828, 2803, - 2817, 2878, 2967, 3047, 3088, 3083, 3054, 3038, - 3065, 3136, 3225, 3294, 3317, 3297, 3266, 3260, - 3301, 3381, 3467, 3523, 3532, 3506, 3479, 3484, - 3535, 3617, 3697, 3742, 3743, 3715, 3692, 3703, - 3758, 3839, 3914, 3953, 3945, 3903, 3853, 3819, - 3813, 3828, 3846, 3852, 3840, 3818, 3796, 3785, - 3783, 3787, 3787, 3780, 3767, 3754, 3745, 3740, - 3737, 3733, 3725, 3716, 3709, 3704, 3699, 3692, - 3683, 3674, 3666, 3659, 3646, 3617, 3565, 3493, - 3415, 3350, 3313, 3307, 3313, 3308, 3270, 3198, - 3109, 3035, 2997, 2998, 3017, 3019, 2981, 2902, - 2807, 2732, 2700, 2711, 2734, 2734, 2687, 2599, - 2503, 2436, 2418, 2440, 2465, 2456, 2396, 2301, - 2209, 2155, 2147, 2159, 2144, 2065, 1915, 1730, - 1569, 1480, 1478, 1530, 1580, 1579, 1510, 1400, - 1297, 1244, 1251, 1292, 1320, 1300, 1227, 1131, - 1053, 1024, 1041, 1076, 1087, 1050, 971, 881, - 817, 800, 823, 851, 851, 805, 724, 641, - 590, 584, 611, 638, 633, 582, 500, 421, - 376, 375, 403, 427, 417, 364, 284, 209, - 170, 178, 220, 270, 302, 305, 288, 268, - 263, 278, 304, 328, 339, 337, 330, 328, - 336, 350, 365, 375, 378, 378, 380, 388, - 398, 408, 415, 420, 426, 434, 442, 450, - 458, 470, 497, 546, 616, 694, 760, 799, - 808, 802, 805, 840, 909, 995, 1071, 1111, - 1112, 1095, 1093, 1129, 1206, 1300, 1376, 1409, - 1400, 1377, 1376, 1421, 1507, 1603, 1671, 1690, - 1669, 1641, 1646, 1704, 1801, 1899, 1958, 1963, - 1930, 1904, 1925, 2003, 2114, 2210, 2252, 2238 - }, - { - 2210, 2227, 2327, 2496, 2663, 2738, 2661, 2443, - 2167, 1948, 1873, 1956, 2139, 2325, 2446, 2497, - 2534, 2626, 2806, 3041, 3250, 3359, 3346, 3262, - 3194, 3217, 3340, 3511, 3645, 3688, 3647, 3582, - 3570, 3650, 3800, 3955, 4045, 4040, 3962, 3866, - 3808, 3808, 3849, 3893, 3907, 3885, 3843, 3808, - 3797, 3806, 3821, 3827, 3817, 3796, 3776, 3765, - 3764, 3766, 3766, 3759, 3747, 3735, 3726, 3721, - 3717, 3713, 3706, 3698, 3691, 3683, 3677, 3671, - 3665, 3658, 3652, 3645, 3639, 3633, 3627, 3620, - 3613, 3606, 3600, 3595, 3589, 3583, 3578, 3573, - 3568, 3563, 3557, 3549, 3542, 3534, 3528, 3522, - 3517, 3512, 3506, 3500, 3495, 3491, 3487, 3482, - 3474, 3466, 3459, 3457, 3457, 3456, 3450, 3439, - 3424, 3414, 3411, 3410, 3396, 3351, 3264, 3143, - 3014, 2913, 2864, 2865, 2884, 2878, 2814, 2693, - 2553, 2443, 2397, 2401, 2404, 2339, 2170, 1917, - 1651, 1457, 1386, 1421, 1489, 1500, 1400, 1203, - 983, 827, 786, 841, 920, 944, 871, 723, - 566, 468, 459, 510, 557, 541, 442, 294, - 158, 87, 99, 169, 248, 295, 295, 264, - 232, 224, 242, 275, 303, 313, 308, 298, - 296, 306, 323, 340, 349, 351, 350, 352, - 360, 371, 382, 391, 397, 400, 405, 411, - 418, 425, 432, 438, 444, 451, 457, 464, - 471, 477, 483, 489, 495, 501, 507, 512, - 519, 525, 532, 539, 544, 548, 552, 557, - 563, 569, 576, 581, 586, 592, 598, 607, - 615, 621, 624, 627, 631, 638, 648, 656, - 661, 662, 662, 666, 676, 689, 700, 705, - 707, 721, 765, 851, 971, 1099, 1199, 1246, - 1243, 1223, 1230, 1295, 1415, 1553, 1658, 1699 - }, - { - 1689, 1674, 1713, 1831, 2008, 2186, 2307, 2354, - 2366, 2413, 2553, 2787, 3055, 3268, 3362, 3339, - 3269, 3248, 3339, 3536, 3766, 3934, 3982, 3919, - 3812, 3743, 3762, 3858, 3977, 4056, 4057, 3988, - 3886, 3790, 3726, 3693, 3677, 3664, 3647, 3622, - 3589, 3544, 3488, 3429, 3379, 3347, 3328, 3296, - 3222, 3087, 2905, 2720, 2585, 2532, 2556, 2613, - 2648, 2624, 2543, 2441, 2364, 2340, 2361, 2390, - 2390, 2340, 2253, 2164, 2109, 2106, 2150, 2222, - 2297, 2359, 2401, 2425, 2435, 2438, 2442, 2458, - 2493, 2547, 2606, 2652, 2675, 2682, 2701, 2766, - 2892, 3067, 3246, 3377, 3425, 3396, 3332, 3288, - 3301, 3371, 3465, 3536, 3557, 3535, 3501, 3493, - 3530, 3604, 3683, 3735, 3739, 3697, 3622, 3538, - 3461, 3402, 3368, 3355, 3347, 3320, 3246, 3112, - 2929, 2741, 2597, 2531, 2529, 2535, 2475, 2304, - 2036, 1743, 1522, 1433, 1465, 1541, 1560, 1458, - 1246, 1003, 827, 774, 824, 893, 889, 764, - 546, 321, 177, 156, 232, 331, 377, 335, - 228, 113, 50, 62, 138, 239, 328, 388, - 422, 441, 457, 475, 498, 528, 570, 626, - 686, 737, 769, 788, 818, 892, 1025, 1205, - 1389, 1523, 1576, 1553, 1496, 1461, 1484, 1565, - 1667, 1744, 1768, 1748, 1718, 1718, 1767, 1854, - 1943, 2000, 2004, 1960, 1888, 1813, 1751, 1708, - 1684, 1674, 1672, 1668, 1652, 1616, 1562, 1502, - 1455, 1432, 1425, 1407, 1344, 1218, 1045, 867, - 737, 689, 718, 782, 826, 813, 743, 649, - 578, 557, 580, 615, 623, 586, 512, 432, - 380, 376, 420, 495, 580, 657, 713, 744, - 754, 761, 791, 869, 1006, 1188, 1370, 1504, - 1562, 1559, 1545, 1582, 1704, 1894, 2093, 2237 - }, - { - 2297, 2299, 2300, 2353, 2469, 2609, 2719, 2770, - 2787, 2834, 2970, 3202, 3474, 3694, 3792, 3766, - 3682, 3635, 3689, 3834, 4001, 4095, 4082, 3958, - 3794, 3666, 3617, 3639, 3684, 3701, 3661, 3565, - 3438, 3307, 3195, 3112, 3059, 3030, 3010, 2980, - 2918, 2814, 2680, 2550, 2465, 2458, 2536, 2675, - 2835, 2974, 3066, 3106, 3108, 3103, 3117, 3172, - 3269, 3394, 3516, 3604, 3639, 3624, 3589, 3569, - 3591, 3657, 3744, 3813, 3834, 3797, 3714, 3614, - 3526, 3468, 3440, 3433, 3426, 3400, 3338, 3236, - 3106, 2973, 2866, 2806, 2790, 2793, 2778, 2712, - 2591, 2440, 2307, 2237, 2253, 2350, 2496, 2651, - 2779, 2862, 2899, 2906, 2908, 2930, 2990, 3089, - 3212, 3329, 3411, 3440, 3425, 3392, 3374, 3396, - 3459, 3541, 3608, 3628, 3582, 3473, 3323, 3164, - 3033, 2955, 2930, 2924, 2879, 2737, 2473, 2116, - 1749, 1469, 1340, 1349, 1414, 1418, 1282, 1007, - 678, 415, 303, 347, 467, 548, 512, 354, - 144, 0, 0, 5, 152, 300, 396, 426, - 414, 400, 415, 477, 587, 736, 910, 1086, - 1235, 1332, 1365, 1346, 1310, 1298, 1336, 1420, - 1518, 1588, 1594, 1527, 1403, 1256, 1122, 1026, - 977, 965, 969, 960, 913, 821, 696, 571, - 480, 446, 463, 502, 524, 502, 435, 349, - 283, 267, 307, 388, 483, 567, 624, 653, - 663, 672, 698, 757, 854, 980, 1113, 1220, - 1280, 1295, 1290, 1305, 1373, 1496, 1648, 1780, - 1849, 1838, 1759, 1649, 1551, 1489, 1469, 1476, - 1484, 1464, 1396, 1273, 1107, 924, 761, 654, - 617, 639, 686, 716, 701, 638, 551, 477, - 452, 497, 606, 759, 920, 1052, 1130, 1150, - 1144, 1164, 1267, 1476, 1765, 2058, 2267, 2348 - }, - { - 2328, 2304, 2384, 2619, 2955, 3257, 3386, 3286, - 3033, 2803, 2776, 3028, 3487, 3962, 4095, 4095, - 4050, 3758, 3564, 3553, 3694, 3870, 3960, 3910, - 3755, 3578, 3457, 3417, 3432, 3452, 3444, 3411, - 3377, 3367, 3383, 3408, 3417, 3403, 3381, 3377, - 3411, 3482, 3570, 3648, 3694, 3702, 3681, 3648, - 3617, 3598, 3593, 3599, 3608, 3610, 3595, 3554, - 3487, 3402, 3316, 3245, 3202, 3189, 3200, 3220, - 3236, 3240, 3231, 3216, 3201, 3191, 3189, 3191, - 3194, 3193, 3187, 3177, 3168, 3168, 3184, 3222, - 3281, 3352, 3422, 3475, 3499, 3492, 3463, 3427, - 3401, 3393, 3402, 3416, 3422, 3407, 3365, 3299, - 3218, 3135, 3064, 3016, 2997, 3004, 3027, 3052, - 3062, 3053, 3029, 3005, 2997, 3017, 3065, 3132, - 3201, 3261, 3305, 3333, 3344, 3338, 3313, 3276, - 3241, 3225, 3238, 3263, 3253, 3148, 2900, 2514, - 2054, 1630, 1345, 1242, 1279, 1341, 1301, 1089, - 733, 344, 58, 0, 60, 254, 427, 494, - 443, 331, 242, 232, 305, 423, 535, 610, - 649, 672, 697, 726, 746, 747, 728, 705, - 697, 712, 741, 760, 749, 700, 624, 541, - 473, 434, 425, 438, 465, 493, 515, 525, - 522, 512, 507, 520, 560, 628, 714, 801, - 871, 913, 925, 914, 895, 880, 876, 884, - 900, 917, 928, 931, 929, 924, 923, 929, - 939, 950, 952, 937, 898, 836, 761, 689, - 637, 616, 627, 658, 694, 718, 723, 713, - 700, 697, 714, 756, 820, 898, 978, 1049, - 1098, 1119, 1112, 1088, 1062, 1050, 1060, 1086, - 1111, 1119, 1096, 1046, 980, 913, 857, 814, - 784, 767, 769, 795, 838, 882, 900, 882, - 842, 831, 911, 1122, 1448, 1816, 2124, 2300 - }, - { - 2343, 2331, 2375, 2550, 2838, 3132, 3300, 3265, - 3067, 2849, 2778, 2949, 3319, 3735, 4012, 4044, - 3851, 3564, 3339, 3265, 3330, 3440, 3497, 3459, - 3358, 3270, 3249, 3300, 3374, 3415, 3400, 3358, - 3347, 3414, 3564, 3754, 3917, 4002, 3991, 3901, - 3767, 3620, 3478, 3351, 3247, 3177, 3155, 3185, - 3256, 3347, 3432, 3492, 3522, 3525, 3513, 3495, - 3477, 3463, 3454, 3452, 3453, 3453, 3444, 3417, - 3369, 3300, 3220, 3143, 3087, 3063, 3076, 3122, - 3190, 3265, 3332, 3381, 3406, 3409, 3395, 3371, - 3348, 3333, 3329, 3333, 3340, 3338, 3319, 3277, - 3213, 3135, 3057, 2992, 2956, 2959, 3007, 3100, - 3226, 3368, 3501, 3600, 3645, 3625, 3542, 3409, - 3248, 3089, 2956, 2871, 2840, 2855, 2895, 2934, - 2950, 2938, 2906, 2878, 2874, 2907, 2977, 3075, - 3188, 3310, 3430, 3524, 3552, 3460, 3210, 2805, - 2308, 1825, 1463, 1282, 1259, 1294, 1265, 1088, - 764, 384, 74, 0, 0, 189, 416, 586, - 664, 673, 664, 680, 724, 772, 791, 771, - 730, 701, 705, 737, 770, 771, 723, 637, - 542, 471, 444, 460, 507, 569, 636, 705, - 772, 833, 875, 889, 868, 815, 742, 667, - 604, 563, 549, 557, 579, 604, 624, 633, - 632, 626, 624, 635, 665, 717, 786, 864, - 939, 994, 1019, 1007, 962, 894, 819, 752, - 703, 678, 675, 688, 711, 733, 750, 755, - 752, 745, 745, 763, 804, 870, 949, 1029, - 1092, 1126, 1126, 1094, 1037, 968, 898, 838, - 797, 781, 794, 834, 898, 978, 1059, 1129, - 1176, 1195, 1188, 1167, 1148, 1142, 1153, 1173, - 1190, 1187, 1158, 1098, 1011, 900, 773, 645, - 545, 516, 602, 827, 1171, 1572, 1939, 2200 - }, - { - 2330, 2368, 2395, 2482, 2654, 2871, 3061, 3168, - 3195, 3203, 3274, 3450, 3697, 3921, 4016, 3933, - 3705, 3437, 3239, 3174, 3225, 3322, 3394, 3410, - 3392, 3389, 3434, 3522, 3609, 3647, 3613, 3520, - 3407, 3314, 3258, 3232, 3220, 3209, 3200, 3197, - 3203, 3214, 3218, 3210, 3192, 3180, 3189, 3228, - 3291, 3363, 3428, 3470, 3483, 3465, 3420, 3354, - 3275, 3196, 3129, 3086, 3072, 3087, 3127, 3184, - 3249, 3313, 3366, 3397, 3401, 3375, 3320, 3247, - 3167, 3094, 3037, 3005, 3002, 3025, 3072, 3134, - 3201, 3263, 3309, 3331, 3323, 3286, 3223, 3146, - 3067, 3000, 2954, 2932, 2931, 2944, 2961, 2971, - 2970, 2959, 2942, 2930, 2933, 2957, 3005, 3068, - 3136, 3194, 3229, 3236, 3213, 3163, 3094, 3014, - 2934, 2869, 2834, 2839, 2887, 2970, 3078, 3196, - 3314, 3420, 3490, 3488, 3371, 3107, 2705, 2223, - 1763, 1428, 1276, 1287, 1362, 1376, 1240, 947, - 584, 278, 138, 191, 380, 600, 752, 801, - 771, 723, 707, 728, 756, 749, 687, 586, - 489, 438, 449, 512, 595, 674, 737, 786, - 829, 865, 889, 894, 880, 859, 846, 850, - 871, 895, 904, 888, 844, 782, 714, 655, - 615, 600, 615, 658, 724, 804, 883, 949, - 992, 1005, 989, 950, 894, 829, 766, 713, - 682, 678, 704, 758, 831, 911, 984, 1041, - 1072, 1076, 1052, 1006, 944, 878, 816, 769, - 747, 756, 794, 857, 933, 1011, 1078, 1124, - 1146, 1147, 1135, 1118, 1107, 1107, 1119, 1136, - 1149, 1147, 1122, 1074, 1010, 944, 889, 855, - 848, 869, 917, 986, 1069, 1152, 1218, 1250, - 1243, 1204, 1149, 1097, 1052, 1011, 964, 918, - 902, 961, 1132, 1411, 1743, 2041, 2229, 2291 - }, - { - 2289, 2325, 2482, 2764, 3083, 3307, 3343, 3199, - 2995, 2894, 3008, 3325, 3710, 3985, 4029, 3848, - 3561, 3329, 3256, 3342, 3495, 3604, 3613, 3548, - 3488, 3506, 3613, 3758, 3862, 3870, 3782, 3646, - 3520, 3441, 3407, 3391, 3374, 3355, 3354, 3391, - 3469, 3567, 3655, 3703, 3707, 3678, 3639, 3610, - 3599, 3602, 3610, 3614, 3610, 3599, 3585, 3573, - 3565, 3562, 3562, 3560, 3555, 3546, 3535, 3526, - 3521, 3518, 3516, 3511, 3502, 3492, 3482, 3476, - 3473, 3472, 3470, 3467, 3462, 3457, 3451, 3445, - 3438, 3431, 3425, 3421, 3419, 3416, 3410, 3403, - 3394, 3386, 3382, 3378, 3367, 3338, 3285, 3208, - 3118, 3034, 2976, 2957, 2983, 3043, 3123, 3203, - 3270, 3317, 3341, 3342, 3318, 3268, 3191, 3097, - 3003, 2931, 2898, 2912, 2961, 3027, 3092, 3147, - 3197, 3244, 3278, 3261, 3143, 2884, 2489, 2023, - 1592, 1296, 1184, 1214, 1275, 1241, 1035, 678, - 280, 0, 0, 0, 198, 433, 582, 618, - 581, 535, 525, 550, 572, 550, 469, 354, - 252, 206, 229, 305, 401, 490, 560, 615, - 660, 694, 707, 687, 633, 553, 466, 395, - 352, 344, 370, 423, 497, 582, 666, 737, - 785, 806, 803, 787, 769, 760, 765, 781, - 800, 811, 804, 771, 714, 641, 565, 503, - 470, 473, 513, 582, 669, 758, 836, 894, - 925, 930, 917, 896, 881, 878, 891, 913, - 931, 933, 909, 858, 787, 709, 641, 596, - 584, 606, 661, 738, 827, 913, 983, 1027, - 1038, 1016, 966, 897, 822, 752, 699, 669, - 667, 697, 758, 842, 936, 1024, 1087, 1115, - 1105, 1066, 1011, 949, 886, 822, 764, 731, - 754, 864, 1076, 1377, 1716, 2026, 2244, 2338 - }, - { - 2315, 2218, 2102, 2015, 1981, 2000, 2055, 2126, - 2191, 2237, 2263, 2279, 2306, 2372, 2494, 2668, - 2861, 3024, 3116, 3127, 3086, 3052, 3076, 3177, - 3323, 3457, 3527, 3522, 3477, 3452, 3497, 3616, - 3767, 3888, 3934, 3903, 3838, 3796, 3814, 3893, - 3993, 4065, 4079, 4038, 3974, 3924, 3909, 3927, - 3954, 3967, 3956, 3929, 3900, 3884, 3884, 3892, - 3896, 3890, 3875, 3858, 3845, 3840, 3839, 3838, - 3832, 3822, 3811, 3801, 3795, 3790, 3786, 3779, - 3771, 3762, 3755, 3748, 3743, 3737, 3730, 3722, - 3714, 3708, 3702, 3697, 3691, 3684, 3676, 3667, - 3661, 3655, 3651, 3647, 3641, 3632, 3622, 3614, - 3608, 3605, 3604, 3600, 3592, 3580, 3568, 3560, - 3557, 3555, 3542, 3508, 3449, 3372, 3298, 3246, - 3226, 3226, 3221, 3179, 3085, 2954, 2820, 2726, - 2693, 2708, 2728, 2705, 2614, 2473, 2329, 2234, - 2209, 2227, 2228, 2154, 1985, 1757, 1543, 1414, - 1396, 1455, 1514, 1504, 1398, 1229, 1070, 984, - 989, 1046, 1085, 1050, 930, 769, 634, 577, - 599, 653, 674, 618, 489, 336, 222, 186, - 223, 287, 324, 299, 218, 122, 56, 46, - 88, 149, 196, 208, 191, 165, 154, 166, - 193, 221, 235, 234, 225, 221, 228, 245, - 262, 274, 277, 277, 278, 285, 297, 309, - 318, 323, 325, 329, 336, 346, 356, 364, - 368, 372, 377, 385, 394, 403, 410, 414, - 418, 423, 430, 440, 449, 456, 460, 463, - 467, 473, 482, 493, 502, 507, 509, 510, - 514, 523, 535, 547, 554, 556, 558, 572, - 607, 666, 740, 812, 862, 883, 884, 892, - 934, 1023, 1149, 1279, 1375, 1413, 1403, 1383, - 1399, 1480, 1617, 1766, 1872, 1904, 1874, 1834 - }, - { - 1847, 1946, 2110, 2270, 2343, 2282, 2105, 1895, - 1757, 1761, 1906, 2123, 2318, 2429, 2463, 2493, - 2607, 2851, 3191, 3530, 3760, 3823, 3743, 3615, - 3544, 3590, 3736, 3905, 4014, 4018, 3938, 3838, - 3780, 3791, 3849, 3907, 3925, 3894, 3838, 3793, - 3782, 3800, 3826, 3837, 3823, 3794, 3767, 3756, - 3759, 3768, 3770, 3761, 3745, 3729, 3720, 3718, - 3718, 3715, 3707, 3696, 3687, 3680, 3675, 3671, - 3665, 3657, 3650, 3643, 3637, 3632, 3626, 3619, - 3612, 3605, 3599, 3594, 3589, 3583, 3576, 3569, - 3562, 3556, 3551, 3546, 3540, 3534, 3527, 3520, - 3514, 3509, 3504, 3499, 3493, 3486, 3480, 3474, - 3468, 3463, 3457, 3452, 3446, 3441, 3436, 3431, - 3424, 3417, 3410, 3405, 3402, 3400, 3396, 3389, - 3378, 3368, 3362, 3363, 3366, 3366, 3358, 3341, - 3323, 3315, 3317, 3320, 3300, 3237, 3127, 2992, - 2871, 2799, 2781, 2779, 2724, 2557, 2266, 1904, - 1568, 1353, 1296, 1355, 1428, 1409, 1252, 992, - 726, 555, 522, 591, 668, 664, 544, 345, - 154, 50, 60, 151, 253, 304, 287, 228, - 174, 163, 196, 250, 289, 297, 279, 257, - 250, 265, 292, 316, 325, 322, 315, 315, - 325, 340, 355, 362, 364, 365, 370, 378, - 389, 398, 404, 408, 412, 419, 427, 436, - 442, 447, 452, 457, 465, 473, 481, 486, - 491, 495, 501, 508, 516, 524, 529, 534, - 538, 544, 551, 559, 566, 571, 576, 580, - 585, 592, 599, 606, 612, 616, 621, 626, - 633, 639, 645, 650, 655, 660, 667, 674, - 680, 683, 685, 690, 698, 708, 718, 722, - 720, 717, 719, 732, 750, 765, 768, 761, - 764, 803, 901, 1056, 1236, 1393, 1487, 1514 - }, - { - 1508, 1526, 1615, 1783, 1994, 2195, 2351, 2472, - 2605, 2800, 3072, 3376, 3631, 3765, 3758, 3663, - 3574, 3572, 3684, 3864, 4025, 4089, 4023, 3859, - 3663, 3503, 3413, 3389, 3396, 3391, 3338, 3222, - 3047, 2837, 2628, 2462, 2368, 2347, 2371, 2386, - 2347, 2237, 2077, 1924, 1839, 1861, 1988, 2186, - 2402, 2587, 2710, 2768, 2782, 2789, 2830, 2935, - 3111, 3328, 3535, 3676, 3720, 3679, 3600, 3544, - 3553, 3629, 3735, 3817, 3835, 3782, 3682, 3575, - 3493, 3453, 3446, 3450, 3435, 3375, 3252, 3069, - 2850, 2639, 2479, 2399, 2389, 2404, 2383, 2282, - 2101, 1885, 1706, 1624, 1664, 1805, 1992, 2167, - 2287, 2342, 2351, 2348, 2371, 2448, 2592, 2788, - 3001, 3184, 3297, 3328, 3300, 3261, 3263, 3334, - 3461, 3600, 3697, 3712, 3636, 3494, 3329, 3185, - 3091, 3055, 3054, 3043, 2967, 2784, 2487, 2123, - 1774, 1530, 1433, 1456, 1505, 1473, 1295, 991, - 658, 413, 330, 397, 524, 601, 557, 400, - 204, 63, 39, 134, 299, 471, 600, 674, - 704, 718, 741, 797, 901, 1059, 1260, 1471, - 1647, 1751, 1773, 1744, 1721, 1756, 1869, 2034, - 2191, 2276, 2251, 2120, 1920, 1705, 1523, 1401, - 1342, 1326, 1319, 1279, 1176, 1004, 788, 582, - 441, 396, 437, 517, 574, 564, 488, 382, - 300, 282, 336, 436, 543, 623, 662, 667, - 663, 678, 739, 862, 1044, 1260, 1468, 1625, - 1704, 1715, 1702, 1724, 1825, 2006, 2221, 2400, - 2481, 2441, 2300, 2113, 1938, 1818, 1762, 1754, - 1757, 1735, 1657, 1514, 1319, 1108, 928, 816, - 785, 811, 848, 846, 778, 654, 518, 422, - 405, 476, 614, 779, 926, 1024, 1062, 1057, - 1052, 1103, 1251, 1502, 1808, 2089, 2270, 2327 - }, - { - 2309, 2315, 2430, 2669, 2948, 3135, 3124, 2919, - 2647, 2496, 2610, 3003, 3537, 4001, 4095, 4095, - 3891, 3626, 3505, 3569, 3746, 3904, 3935, 3811, - 3583, 3336, 3136, 3005, 2925, 2876, 2851, 2864, - 2925, 3023, 3126, 3197, 3215, 3192, 3166, 3178, - 3249, 3372, 3515, 3640, 3718, 3737, 3703, 3629, - 3538, 3448, 3376, 3333, 3315, 3314, 3310, 3289, - 3242, 3173, 3098, 3035, 2996, 2986, 2998, 3019, - 3035, 3039, 3029, 3011, 2995, 2985, 2985, 2991, - 2996, 2997, 2990, 2978, 2968, 2968, 2986, 3024, - 3079, 3142, 3199, 3238, 3253, 3251, 3246, 3256, - 3293, 3354, 3425, 3481, 3496, 3459, 3369, 3241, - 3098, 2966, 2865, 2807, 2788, 2795, 2803, 2790, - 2743, 2665, 2578, 2516, 2512, 2582, 2724, 2910, - 3106, 3276, 3394, 3453, 3455, 3415, 3352, 3291, - 3256, 3259, 3296, 3332, 3312, 3177, 2895, 2486, - 2029, 1630, 1380, 1303, 1343, 1382, 1305, 1058, - 682, 292, 22, 0, 76, 304, 518, 636, - 642, 583, 529, 533, 607, 727, 857, 973, - 1069, 1147, 1204, 1228, 1207, 1139, 1044, 952, - 895, 881, 897, 910, 891, 821, 708, 575, - 455, 373, 347, 377, 450, 546, 639, 711, - 751, 764, 763, 769, 794, 844, 913, 986, - 1046, 1084, 1095, 1085, 1066, 1050, 1045, 1053, - 1070, 1086, 1097, 1098, 1092, 1086, 1085, 1091, - 1103, 1114, 1115, 1098, 1060, 1004, 940, 882, - 845, 831, 835, 840, 829, 792, 730, 660, - 607, 593, 631, 719, 845, 985, 1116, 1217, - 1277, 1295, 1288, 1278, 1290, 1339, 1418, 1505, - 1567, 1573, 1515, 1404, 1269, 1141, 1041, 978, - 944, 930, 926, 925, 918, 894, 844, 773, - 713, 716, 836, 1096, 1462, 1847, 2150, 2306 - }, - { - 2325, 2301, 2351, 2549, 2871, 3195, 3368, 3298, - 3023, 2699, 2526, 2632, 3000, 3477, 3853, 3981, - 3846, 3562, 3294, 3164, 3186, 3284, 3355, 3338, - 3249, 3155, 3119, 3156, 3230, 3281, 3277, 3233, - 3203, 3238, 3356, 3524, 3685, 3786, 3805, 3754, - 3667, 3576, 3501, 3445, 3404, 3376, 3356, 3341, - 3323, 3291, 3239, 3170, 3099, 3044, 3022, 3038, - 3089, 3158, 3230, 3288, 3325, 3339, 3333, 3316, - 3296, 3280, 3272, 3270, 3272, 3274, 3273, 3267, - 3257, 3247, 3239, 3236, 3236, 3234, 3224, 3200, - 3157, 3097, 3027, 2959, 2908, 2884, 2894, 2936, - 2999, 3069, 3131, 3174, 3195, 3199, 3196, 3202, - 3226, 3271, 3333, 3395, 3438, 3445, 3403, 3313, - 3184, 3039, 2904, 2804, 2754, 2752, 2784, 2826, - 2853, 2852, 2827, 2795, 2779, 2795, 2847, 2929, - 3030, 3138, 3246, 3338, 3387, 3350, 3187, 2880, - 2461, 2008, 1624, 1388, 1315, 1347, 1371, 1284, - 1041, 685, 327, 87, 35, 162, 390, 617, - 770, 831, 834, 826, 838, 869, 897, 900, - 879, 852, 842, 856, 878, 874, 819, 708, - 564, 425, 330, 302, 343, 438, 567, 706, - 836, 941, 1010, 1039, 1033, 1005, 975, 957, - 960, 980, 1007, 1023, 1018, 986, 932, 866, - 803, 758, 737, 740, 760, 785, 804, 814, - 813, 808, 805, 806, 814, 825, 836, 843, - 846, 846, 847, 857, 881, 924, 985, 1055, - 1123, 1173, 1197, 1195, 1174, 1151, 1138, 1143, - 1162, 1185, 1193, 1173, 1117, 1025, 908, 785, - 679, 612, 601, 653, 760, 903, 1053, 1183, - 1272, 1312, 1309, 1281, 1249, 1230, 1234, 1253, - 1276, 1285, 1270, 1226, 1154, 1061, 950, 832, - 728, 674, 710, 866, 1138, 1484, 1831, 2106 - }, - { - 2268, 2332, 2352, 2396, 2500, 2652, 2807, 2921, - 2989, 3051, 3170, 3379, 3654, 3908, 4040, 3987, - 3764, 3455, 3172, 2995, 2945, 2982, 3050, 3113, - 3171, 3250, 3365, 3502, 3623, 3687, 3682, 3634, - 3592, 3600, 3670, 3775, 3865, 3894, 3840, 3707, - 3520, 3311, 3109, 2941, 2830, 2792, 2834, 2946, - 3100, 3260, 3393, 3476, 3508, 3503, 3486, 3480, - 3500, 3552, 3624, 3695, 3738, 3728, 3649, 3501, - 3303, 3086, 2886, 2738, 2670, 2693, 2803, 2981, - 3195, 3407, 3581, 3689, 3722, 3685, 3600, 3494, - 3394, 3320, 3278, 3262, 3256, 3239, 3191, 3102, - 2976, 2830, 2695, 2603, 2584, 2649, 2792, 2990, - 3205, 3398, 3539, 3608, 3604, 3542, 3443, 3337, - 3245, 3183, 3155, 3150, 3148, 3124, 3057, 2942, - 2792, 2638, 2521, 2477, 2521, 2644, 2820, 3014, - 3201, 3359, 3473, 3514, 3447, 3238, 2882, 2420, - 1943, 1557, 1339, 1293, 1343, 1364, 1245, 950, - 540, 144, 0, 0, 57, 359, 667, 898, - 1030, 1086, 1105, 1105, 1079, 1005, 876, 714, - 564, 469, 447, 479, 524, 540, 504, 425, - 333, 265, 250, 302, 419, 590, 793, 1000, - 1178, 1294, 1330, 1282, 1165, 1011, 855, 728, - 647, 613, 614, 630, 637, 619, 570, 498, - 426, 382, 393, 473, 620, 816, 1031, 1227, - 1373, 1441, 1420, 1311, 1135, 921, 710, 537, - 430, 399, 437, 522, 626, 723, 795, 836, - 852, 860, 878, 925, 1012, 1136, 1280, 1415, - 1507, 1528, 1463, 1320, 1123, 909, 718, 580, - 513, 516, 577, 672, 777, 868, 931, 960, - 964, 965, 987, 1053, 1169, 1321, 1475, 1589, - 1630, 1583, 1461, 1291, 1104, 923, 763, 641, - 587, 639, 826, 1143, 1536, 1916, 2194, 2329 - }, - { - 2352, 2354, 2429, 2621, 2892, 3146, 3287, 3287, - 3208, 3166, 3262, 3507, 3812, 4032, 4047, 3835, - 3479, 3121, 2886, 2822, 2890, 3013, 3127, 3222, - 3325, 3469, 3652, 3827, 3929, 3915, 3787, 3596, - 3404, 3261, 3183, 3153, 3149, 3152, 3157, 3164, - 3174, 3178, 3172, 3156, 3140, 3141, 3167, 3218, - 3284, 3348, 3397, 3419, 3410, 3364, 3280, 3162, - 3023, 2886, 2777, 2721, 2735, 2821, 2967, 3152, - 3349, 3526, 3653, 3705, 3671, 3552, 3369, 3152, - 2940, 2767, 2658, 2624, 2662, 2758, 2889, 3032, - 3162, 3259, 3311, 3316, 3279, 3213, 3132, 3053, - 2988, 2942, 2917, 2911, 2917, 2929, 2940, 2945, - 2939, 2926, 2913, 2914, 2944, 3012, 3118, 3246, - 3373, 3471, 3515, 3490, 3392, 3230, 3027, 2812, - 2623, 2495, 2454, 2505, 2635, 2814, 3008, 3188, - 3338, 3440, 3470, 3397, 3189, 2843, 2398, 1940, - 1572, 1367, 1327, 1378, 1397, 1277, 986, 585, - 202, 0, 0, 149, 447, 742, 959, 1078, - 1128, 1145, 1140, 1099, 993, 814, 590, 378, - 235, 197, 260, 389, 542, 687, 808, 899, - 962, 993, 994, 972, 941, 920, 921, 942, - 971, 988, 980, 944, 888, 824, 765, 720, - 698, 705, 748, 831, 951, 1091, 1229, 1336, - 1389, 1375, 1291, 1147, 964, 768, 592, 465, - 412, 446, 564, 746, 961, 1172, 1343, 1451, - 1484, 1447, 1352, 1221, 1079, 950, 853, 801, - 796, 833, 900, 980, 1058, 1123, 1167, 1192, - 1199, 1194, 1182, 1170, 1166, 1171, 1185, 1199, - 1199, 1170, 1102, 996, 868, 742, 646, 603, - 627, 723, 882, 1083, 1297, 1486, 1614, 1653, - 1598, 1466, 1290, 1103, 931, 786, 680, 635, - 686, 862, 1166, 1551, 1927, 2200, 2324, 2329 - }, - { - 2315, 2394, 2620, 2947, 3252, 3400, 3337, 3130, - 2939, 2924, 3150, 3540, 3915, 4095, 3994, 3666, - 3267, 2958, 2829, 2861, 2966, 3060, 3115, 3165, - 3267, 3443, 3659, 3838, 3909, 3847, 3685, 3490, - 3324, 3215, 3158, 3131, 3118, 3121, 3150, 3209, - 3287, 3361, 3411, 3425, 3406, 3365, 3312, 3250, - 3185, 3120, 3066, 3033, 3026, 3040, 3061, 3076, - 3076, 3062, 3044, 3032, 3034, 3055, 3093, 3145, - 3204, 3259, 3301, 3316, 3298, 3249, 3178, 3099, - 3029, 2978, 2951, 2944, 2950, 2960, 2969, 2971, - 2966, 2956, 2944, 2938, 2946, 2973, 3020, 3082, - 3147, 3198, 3222, 3213, 3173, 3112, 3041, 2972, - 2914, 2871, 2851, 2860, 2905, 2988, 3100, 3226, - 3341, 3421, 3448, 3409, 3305, 3144, 2948, 2745, - 2571, 2460, 2434, 2499, 2635, 2813, 2999, 3169, - 3306, 3394, 3409, 3317, 3092, 2736, 2297, 1863, - 1533, 1366, 1352, 1405, 1405, 1259, 951, 558, - 209, 22, 51, 259, 552, 825, 1015, 1116, - 1157, 1171, 1164, 1116, 1000, 816, 597, 400, - 279, 261, 335, 467, 615, 752, 864, 949, - 1005, 1026, 1009, 957, 884, 810, 751, 718, - 710, 722, 752, 798, 858, 928, 996, 1050, - 1078, 1081, 1065, 1046, 1035, 1039, 1054, 1071, - 1081, 1076, 1054, 1015, 964, 907, 854, 815, - 800, 816, 862, 930, 1007, 1078, 1131, 1161, - 1170, 1164, 1151, 1140, 1136, 1140, 1151, 1164, - 1171, 1164, 1136, 1087, 1024, 961, 912, 890, - 900, 938, 996, 1064, 1131, 1191, 1237, 1260, - 1252, 1206, 1120, 1005, 878, 763, 684, 659, - 699, 803, 962, 1157, 1357, 1528, 1638, 1665, - 1605, 1473, 1297, 1107, 931, 789, 703, 692, - 780, 977, 1270, 1615, 1948, 2203, 2338, 2351 - }, - { - 2275, 2164, 2062, 1995, 1968, 1971, 1998, 2044, - 2106, 2173, 2231, 2271, 2305, 2361, 2473, 2657, - 2890, 3115, 3269, 3320, 3288, 3240, 3250, 3359, - 3547, 3747, 3879, 3903, 3837, 3746, 3702, 3739, - 3842, 3953, 4015, 4005, 3940, 3865, 3822, 3826, - 3860, 3893, 3899, 3877, 3840, 3812, 3803, 3812, - 3824, 3827, 3816, 3796, 3778, 3769, 3767, 3769, - 3767, 3759, 3747, 3735, 3727, 3722, 3718, 3714, - 3708, 3701, 3694, 3688, 3683, 3677, 3670, 3663, - 3656, 3649, 3643, 3638, 3632, 3626, 3619, 3611, - 3603, 3596, 3589, 3583, 3578, 3573, 3568, 3562, - 3555, 3548, 3542, 3537, 3532, 3526, 3520, 3513, - 3507, 3501, 3498, 3495, 3492, 3486, 3478, 3469, - 3461, 3457, 3456, 3453, 3446, 3434, 3419, 3409, - 3405, 3406, 3401, 3375, 3321, 3245, 3168, 3113, - 3092, 3094, 3084, 3024, 2896, 2716, 2531, 2398, - 2345, 2355, 2364, 2302, 2130, 1871, 1599, 1403, - 1337, 1384, 1472, 1512, 1450, 1298, 1123, 1004, - 977, 1020, 1059, 1023, 885, 682, 489, 379, - 374, 438, 496, 484, 384, 230, 89, 18, - 34, 110, 194, 243, 241, 206, 170, 159, - 179, 215, 245, 257, 251, 239, 234, 243, - 261, 280, 292, 296, 295, 295, 301, 311, - 323, 333, 340, 345, 349, 354, 360, 368, - 377, 385, 393, 400, 406, 411, 417, 423, - 431, 438, 446, 452, 457, 463, 469, 475, - 482, 488, 493, 499, 505, 512, 520, 528, - 534, 538, 542, 547, 555, 564, 571, 576, - 578, 580, 586, 595, 607, 615, 618, 617, - 616, 621, 635, 651, 663, 664, 663, 677, - 726, 821, 950, 1080, 1172, 1209, 1204, 1199, - 1244, 1364, 1541, 1724, 1857, 1911, 1906, 1896 - }, - { - 1934, 2037, 2180, 2313, 2404, 2468, 2562, 2752, - 3059, 3434, 3775, 3980, 4004, 3884, 3722, 3627, - 3653, 3779, 3926, 4012, 3999, 3911, 3810, 3755, - 3767, 3820, 3869, 3879, 3847, 3795, 3758, 3751, - 3770, 3792, 3798, 3782, 3755, 3732, 3723, 3726, - 3733, 3733, 3724, 3709, 3695, 3687, 3684, 3683, - 3679, 3672, 3663, 3654, 3647, 3641, 3636, 3631, - 3624, 3618, 3611, 3605, 3599, 3592, 3586, 3580, - 3574, 3569, 3563, 3556, 3549, 3543, 3537, 3532, - 3526, 3520, 3514, 3508, 3502, 3498, 3494, 3490, - 3484, 3477, 3469, 3462, 3456, 3451, 3446, 3441, - 3435, 3430, 3424, 3420, 3416, 3412, 3406, 3400, - 3393, 3388, 3384, 3383, 3380, 3375, 3366, 3355, - 3346, 3342, 3345, 3348, 3347, 3337, 3319, 3303, - 3296, 3301, 3308, 3299, 3257, 3184, 3100, 3036, - 3010, 3011, 2987, 2873, 2629, 2267, 1862, 1524, - 1334, 1307, 1367, 1396, 1288, 1016, 650, 315, - 127, 127, 263, 422, 499, 450, 312, 170, - 100, 129, 223, 318, 360, 340, 286, 243, - 241, 277, 326, 358, 361, 342, 323, 321, - 337, 362, 382, 389, 385, 380, 381, 391, - 405, 418, 426, 430, 432, 436, 443, 451, - 461, 469, 476, 481, 485, 489, 494, 500, - 508, 516, 523, 528, 533, 537, 544, 551, - 559, 566, 571, 574, 578, 583, 591, 600, - 607, 612, 615, 618, 621, 627, 635, 642, - 648, 651, 654, 659, 666, 675, 684, 690, - 694, 695, 697, 703, 711, 721, 729, 733, - 733, 733, 736, 745, 757, 769, 774, 772, - 766, 765, 774, 793, 812, 822, 817, 808, - 813, 850, 923, 1012, 1084, 1112, 1105, 1108, - 1186, 1388, 1703, 2057, 2343, 2482, 2474, 2408 - }, - { - 2414, 2583, 2895, 3221, 3377, 3235, 2801, 2226, - 1732, 1500, 1581, 1888, 2261, 2566, 2768, 2925, - 3124, 3401, 3708, 3945, 4027, 3950, 3795, 3679, - 3682, 3798, 3952, 4047, 4035, 3939, 3829, 3776, - 3800, 3871, 3932, 3944, 3904, 3843, 3800, 3791, - 3810, 3833, 3842, 3829, 3797, 3749, 3686, 3614, - 3546, 3498, 3476, 3458, 3396, 3236, 2956, 2592, - 2231, 1972, 1866, 1886, 1935, 1896, 1700, 1369, - 1006, 737, 640, 710, 861, 983, 999, 906, - 763, 648, 615, 672, 783, 896, 976, 1009, - 1009, 999, 1010, 1076, 1224, 1460, 1762, 2068, - 2306, 2429, 2445, 2426, 2476, 2670, 3007, 3402, - 3727, 3881, 3845, 3692, 3542, 3494, 3574, 3729, - 3869, 3921, 3874, 3773, 3686, 3657, 3686, 3739, - 3774, 3768, 3733, 3693, 3670, 3667, 3676, 3683, - 3683, 3674, 3656, 3623, 3565, 3487, 3407, 3351, - 3329, 3318, 3257, 3079, 2753, 2317, 1873, 1541, - 1394, 1411, 1483, 1470, 1277, 916, 494, 163, - 28, 96, 274, 431, 466, 366, 199, 63, - 26, 89, 198, 282, 301, 262, 208, 179, - 193, 235, 276, 295, 292, 280, 273, 277, - 292, 316, 353, 410, 484, 558, 609, 630, - 643, 701, 861, 1142, 1509, 1870, 2128, 2230, - 2208, 2160, 2202, 2402, 2734, 3095, 3362, 3457, - 3395, 3266, 3182, 3216, 3365, 3559, 3707, 3746, - 3667, 3511, 3338, 3197, 3110, 3073, 3065, 3051, - 2995, 2861, 2635, 2337, 2027, 1780, 1650, 1632, - 1654, 1610, 1423, 1090, 695, 368, 212, 249, - 405, 560, 611, 532, 375, 233, 179, 226, - 328, 417, 448, 419, 366, 330, 333, 368, - 410, 436, 440, 430, 419, 416, 424, 446, - 486, 548, 623, 694, 739, 755, 767, 828 - }, - { - 986, 1258, 1604, 1946, 2203, 2342, 2404, 2478, - 2654, 2967, 3366, 3742, 3984, 4037, 3935, 3772, - 3654, 3641, 3721, 3834, 3906, 3892, 3798, 3658, - 3520, 3415, 3350, 3316, 3294, 3258, 3181, 3042, - 2836, 2582, 2331, 2141, 2051, 2058, 2114, 2149, - 2106, 1977, 1804, 1657, 1600, 1660, 1821, 2034, - 2242, 2400, 2492, 2527, 2539, 2575, 2681, 2881, - 3165, 3481, 3750, 3905, 3918, 3817, 3672, 3561, - 3530, 3577, 3657, 3715, 3720, 3674, 3608, 3559, - 3551, 3578, 3616, 3631, 3586, 3456, 3236, 2944, - 2628, 2349, 2164, 2095, 2115, 2158, 2148, 2040, - 1844, 1622, 1455, 1405, 1483, 1652, 1845, 2003, - 2093, 2118, 2111, 2114, 2167, 2294, 2495, 2746, - 2998, 3195, 3299, 3305, 3252, 3200, 3206, 3291, - 3429, 3566, 3647, 3645, 3575, 3480, 3410, 3396, - 3437, 3497, 3524, 3461, 3269, 2942, 2520, 2081, - 1715, 1491, 1417, 1431, 1429, 1317, 1060, 707, - 365, 144, 95, 191, 342, 449, 460, 384, - 282, 221, 238, 329, 459, 588, 690, 758, - 797, 824, 860, 932, 1065, 1268, 1522, 1776, - 1969, 2059, 2048, 1989, 1954, 1998, 2129, 2304, - 2451, 2506, 2443, 2281, 2069, 1862, 1705, 1612, - 1575, 1562, 1527, 1423, 1227, 946, 633, 365, - 209, 195, 296, 441, 552, 583, 536, 457, - 398, 393, 439, 505, 554, 564, 537, 498, - 484, 529, 658, 877, 1166, 1480, 1755, 1938, - 2005, 1985, 1942, 1954, 2063, 2260, 2483, 2650, - 2701, 2622, 2453, 2259, 2101, 2012, 1986, 1994, - 1992, 1939, 1812, 1611, 1362, 1114, 921, 821, - 814, 863, 909, 898, 814, 682, 554, 477, - 476, 535, 620, 688, 711, 688, 638, 603, - 635, 781, 1059, 1442, 1847, 2174, 2347, 2367 - }, - { - 2323, 2353, 2557, 2930, 3342, 3601, 3563, 3229, - 2764, 2420, 2400, 2747, 3315, 3854, 4095, 4095, - 3828, 3510, 3326, 3341, 3497, 3661, 3717, 3620, - 3406, 3150, 2915, 2725, 2578, 2463, 2384, 2353, - 2372, 2417, 2445, 2419, 2337, 2236, 2182, 2233, - 2413, 2698, 3026, 3323, 3533, 3633, 3634, 3574, - 3504, 3468, 3488, 3560, 3653, 3719, 3718, 3626, - 3450, 3227, 3004, 2826, 2717, 2676, 2674, 2672, - 2630, 2530, 2379, 2210, 2072, 2009, 2044, 2169, - 2349, 2537, 2688, 2778, 2812, 2814, 2824, 2878, - 2995, 3171, 3374, 3558, 3676, 3701, 3637, 3516, - 3386, 3293, 3257, 3270, 3295, 3286, 3201, 3022, - 2760, 2455, 2165, 1946, 1839, 1853, 1959, 2105, - 2232, 2298, 2297, 2256, 2223, 2245, 2350, 2535, - 2772, 3014, 3217, 3348, 3396, 3375, 3317, 3262, - 3248, 3292, 3383, 3475, 3505, 3411, 3163, 2777, - 2325, 1903, 1602, 1460, 1443, 1463, 1413, 1226, - 910, 545, 247, 104, 139, 297, 482, 605, - 628, 571, 498, 475, 541, 703, 938, 1213, - 1491, 1734, 1908, 1988, 1971, 1884, 1776, 1703, - 1699, 1758, 1838, 1877, 1821, 1650, 1383, 1073, - 782, 566, 455, 444, 502, 577, 622, 607, - 535, 438, 366, 366, 460, 637, 861, 1083, - 1257, 1362, 1402, 1404, 1408, 1451, 1552, 1702, - 1869, 2007, 2070, 2036, 1912, 1732, 1544, 1393, - 1302, 1269, 1267, 1258, 1206, 1090, 915, 713, - 531, 415, 390, 454, 575, 703, 795, 830, - 817, 792, 802, 887, 1065, 1326, 1630, 1918, - 2134, 2239, 2231, 2141, 2027, 1947, 1934, 1986, - 2063, 2110, 2074, 1933, 1696, 1402, 1108, 865, - 711, 657, 687, 762, 832, 852, 803, 701, - 598, 563, 653, 887, 1234, 1619, 1955, 2183 - }, - { - 2293, 2327, 2354, 2430, 2569, 2739, 2891, 2990, - 3048, 3115, 3243, 3450, 3690, 3879, 3934, 3829, - 3612, 3381, 3235, 3216, 3292, 3377, 3385, 3274, - 3062, 2812, 2593, 2450, 2392, 2405, 2467, 2560, - 2670, 2780, 2871, 2925, 2940, 2934, 2940, 2991, - 3101, 3254, 3412, 3532, 3581, 3552, 3459, 3332, - 3202, 3095, 3024, 2989, 2980, 2981, 2977, 2955, - 2913, 2857, 2801, 2760, 2742, 2749, 2769, 2789, - 2798, 2791, 2774, 2755, 2745, 2746, 2754, 2762, - 2764, 2756, 2743, 2732, 2732, 2747, 2779, 2823, - 2871, 2912, 2941, 2954, 2959, 2971, 3005, 3071, - 3164, 3266, 3348, 3384, 3354, 3257, 3111, 2944, - 2788, 2669, 2600, 2577, 2579, 2578, 2549, 2476, - 2369, 2252, 2166, 2145, 2210, 2355, 2554, 2765, - 2948, 3074, 3137, 3149, 3137, 3131, 3156, 3224, - 3330, 3445, 3523, 3509, 3357, 3055, 2634, 2172, - 1769, 1506, 1410, 1435, 1479, 1434, 1238, 912, - 549, 272, 167, 245, 439, 644, 771, 789, - 730, 663, 650, 721, 866, 1051, 1242, 1414, - 1552, 1642, 1671, 1630, 1527, 1388, 1252, 1158, - 1119, 1126, 1147, 1149, 1109, 1029, 925, 825, - 755, 728, 747, 801, 875, 947, 1004, 1038, - 1050, 1052, 1055, 1070, 1104, 1153, 1207, 1257, - 1291, 1306, 1301, 1286, 1271, 1264, 1268, 1282, - 1298, 1308, 1309, 1303, 1297, 1295, 1301, 1312, - 1321, 1320, 1306, 1277, 1236, 1190, 1147, 1116, - 1101, 1100, 1103, 1100, 1078, 1037, 984, 937, - 916, 934, 997, 1093, 1205, 1310, 1390, 1436, - 1453, 1457, 1471, 1513, 1593, 1701, 1810, 1889, - 1903, 1839, 1699, 1509, 1306, 1125, 995, 925, - 911, 936, 974, 1000, 991, 939, 860, 790, - 785, 892, 1125, 1451, 1795, 2070, 2224, 2267 - }, - { - 2271, 2332, 2506, 2776, 3050, 3219, 3225, 3104, - 2976, 2976, 3172, 3515, 3860, 4040, 3959, 3641, - 3212, 2826, 2592, 2525, 2568, 2645, 2718, 2793, - 2905, 3068, 3257, 3413, 3489, 3475, 3418, 3385, - 3430, 3559, 3725, 3860, 3903, 3827, 3643, 3384, - 3092, 2809, 2571, 2412, 2361, 2429, 2605, 2853, - 3119, 3352, 3512, 3586, 3584, 3534, 3466, 3410, - 3383, 3390, 3418, 3443, 3434, 3367, 3227, 3023, - 2783, 2549, 2369, 2280, 2301, 2431, 2643, 2894, - 3138, 3332, 3450, 3486, 3457, 3392, 3324, 3282, - 3277, 3302, 3336, 3347, 3307, 3197, 3019, 2791, - 2550, 2341, 2208, 2184, 2282, 2488, 2770, 3077, - 3355, 3558, 3660, 3656, 3564, 3418, 3255, 3111, - 3009, 2957, 2943, 2940, 2915, 2839, 2703, 2520, - 2327, 2177, 2114, 2166, 2327, 2571, 2853, 3130, - 3366, 3529, 3586, 3508, 3277, 2903, 2440, 1976, - 1611, 1409, 1366, 1407, 1413, 1285, 988, 581, - 187, 0, 0, 99, 435, 807, 1128, 1355, - 1487, 1544, 1540, 1474, 1344, 1160, 957, 783, - 677, 651, 677, 709, 700, 628, 504, 366, - 260, 228, 292, 455, 698, 989, 1284, 1532, - 1692, 1738, 1670, 1512, 1308, 1105, 941, 837, - 794, 796, 818, 836, 829, 792, 729, 662, - 620, 629, 710, 865, 1078, 1319, 1545, 1714, - 1796, 1772, 1646, 1442, 1197, 956, 760, 638, - 600, 637, 724, 827, 919, 981, 1009, 1014, - 1016, 1040, 1106, 1221, 1380, 1560, 1726, 1838, - 1861, 1775, 1585, 1316, 1016, 737, 529, 421, - 421, 512, 661, 827, 973, 1073, 1123, 1133, - 1134, 1158, 1234, 1372, 1557, 1750, 1898, 1957, - 1904, 1743, 1504, 1230, 957, 721, 552, 482, - 544, 755, 1097, 1507, 1892, 2165, 2291, 2307 - }, - { - 2306, 2385, 2589, 2877, 3148, 3300, 3302, 3212, - 3153, 3235, 3479, 3801, 4051, 4095, 3906, 3550, - 3174, 2914, 2828, 2886, 3009, 3127, 3220, 3316, - 3454, 3638, 3825, 3947, 3946, 3812, 3585, 3330, - 3109, 2954, 2867, 2839, 2861, 2930, 3043, 3185, - 3331, 3448, 3512, 3516, 3471, 3398, 3316, 3241, - 3177, 3130, 3100, 3088, 3091, 3104, 3116, 3120, - 3113, 3099, 3084, 3080, 3092, 3125, 3177, 3240, - 3302, 3351, 3374, 3364, 3323, 3258, 3180, 3104, - 3041, 2999, 2981, 2982, 2996, 3011, 3019, 3016, - 3002, 2987, 2977, 2983, 3009, 3054, 3112, 3176, - 3232, 3267, 3270, 3233, 3152, 3035, 2895, 2756, - 2640, 2573, 2571, 2640, 2776, 2959, 3161, 3350, - 3491, 3562, 3547, 3448, 3278, 3065, 2843, 2649, - 2517, 2468, 2509, 2626, 2795, 2985, 3171, 3333, - 3451, 3499, 3443, 3251, 2916, 2475, 2009, 1619, - 1384, 1319, 1359, 1387, 1293, 1028, 638, 242, - 0, 0, 80, 369, 678, 919, 1059, 1119, - 1135, 1128, 1090, 996, 830, 612, 392, 228, - 167, 219, 361, 555, 763, 957, 1119, 1234, - 1289, 1274, 1191, 1057, 902, 761, 658, 607, - 606, 644, 708, 784, 861, 929, 981, 1011, - 1021, 1015, 1001, 990, 986, 993, 1007, 1022, - 1027, 1015, 982, 929, 865, 803, 756, 735, - 745, 785, 848, 924, 999, 1063, 1106, 1126, - 1124, 1110, 1093, 1085, 1088, 1103, 1119, 1129, - 1122, 1095, 1050, 991, 929, 874, 839, 835, - 872, 951, 1068, 1207, 1347, 1461, 1527, 1529, - 1460, 1326, 1145, 945, 759, 618, 548, 564, - 664, 833, 1044, 1261, 1448, 1576, 1624, 1590, - 1481, 1319, 1128, 935, 766, 648, 606, 667, - 842, 1121, 1469, 1826, 2127, 2320, 2388, 2347 - }, - { - 2243, 2125, 2032, 1982, 1977, 2008, 2064, 2131, - 2195, 2246, 2280, 2311, 2366, 2474, 2644, 2855, - 3056, 3194, 3245, 3228, 3208, 3251, 3394, 3614, - 3842, 3996, 4028, 3952, 3826, 3726, 3696, 3736, - 3803, 3847, 3842, 3796, 3741, 3709, 3712, 3738, - 3760, 3762, 3740, 3710, 3688, 3683, 3690, 3699, - 3698, 3686, 3669, 3654, 3647, 3647, 3647, 3644, - 3636, 3625, 3616, 3609, 3604, 3600, 3595, 3589, - 3582, 3575, 3568, 3562, 3557, 3551, 3545, 3539, - 3533, 3528, 3521, 3515, 3509, 3503, 3498, 3493, - 3487, 3481, 3474, 3468, 3463, 3458, 3453, 3447, - 3441, 3435, 3429, 3424, 3419, 3414, 3408, 3401, - 3395, 3390, 3387, 3383, 3378, 3371, 3362, 3355, - 3351, 3349, 3349, 3345, 3337, 3325, 3313, 3308, - 3310, 3316, 3317, 3308, 3289, 3271, 3263, 3266, - 3265, 3230, 3130, 2958, 2737, 2521, 2368, 2308, - 2321, 2344, 2303, 2156, 1918, 1662, 1473, 1403, - 1440, 1509, 1522, 1427, 1239, 1032, 888, 850, - 890, 929, 886, 726, 485, 248, 102, 87, - 179, 306, 396, 411, 364, 300, 266, 279, - 327, 377, 401, 394, 371, 353, 355, 377, - 404, 423, 427, 421, 415, 417, 428, 443, - 456, 463, 465, 466, 470, 476, 486, 495, - 502, 508, 513, 517, 522, 528, 535, 542, - 549, 556, 561, 566, 570, 576, 583, 590, - 597, 603, 607, 611, 616, 623, 630, 637, - 643, 647, 651, 656, 662, 669, 677, 682, - 686, 689, 693, 700, 708, 715, 721, 723, - 726, 729, 736, 745, 754, 760, 761, 761, - 762, 769, 780, 793, 801, 801, 796, 793, - 798, 812, 830, 843, 847, 853, 886, 976, - 1136, 1351, 1572, 1740, 1812, 1792, 1735, 1721 - }, - { - 1808, 1996, 2210, 2342, 2302, 2084, 1772, 1515, - 1441, 1598, 1921, 2276, 2532, 2642, 2662, 2717, - 2914, 3273, 3711, 4081, 4095, 4095, 4036, 3832, - 3725, 3750, 3861, 3968, 4002, 3951, 3860, 3792, - 3786, 3832, 3889, 3913, 3889, 3837, 3791, 3775, - 3791, 3817, 3829, 3816, 3788, 3761, 3749, 3752, - 3761, 3763, 3754, 3737, 3722, 3714, 3712, 3712, - 3708, 3699, 3688, 3679, 3673, 3669, 3665, 3659, - 3650, 3642, 3636, 3630, 3626, 3620, 3613, 3605, - 3598, 3592, 3587, 3582, 3577, 3570, 3563, 3556, - 3549, 3543, 3538, 3532, 3527, 3522, 3517, 3512, - 3508, 3502, 3496, 3488, 3481, 3473, 3467, 3462, - 3458, 3454, 3449, 3443, 3438, 3433, 3428, 3423, - 3417, 3412, 3406, 3402, 3399, 3396, 3390, 3382, - 3372, 3364, 3362, 3363, 3365, 3361, 3349, 3332, - 3319, 3316, 3326, 3338, 3339, 3322, 3293, 3269, - 3265, 3277, 3264, 3168, 2936, 2561, 2104, 1670, - 1369, 1253, 1282, 1340, 1295, 1071, 691, 270, - 0, 0, 0, 128, 308, 377, 324, 207, - 114, 100, 165, 257, 318, 320, 276, 228, - 212, 238, 286, 325, 335, 320, 299, 292, - 306, 331, 353, 362, 360, 354, 355, 366, - 381, 394, 400, 401, 402, 407, 417, 427, - 435, 440, 444, 449, 457, 466, 474, 479, - 482, 485, 491, 498, 507, 515, 521, 525, - 529, 534, 542, 550, 559, 565, 570, 574, - 579, 585, 592, 598, 604, 608, 611, 615, - 620, 627, 634, 640, 646, 651, 657, 663, - 670, 676, 681, 685, 689, 695, 702, 708, - 713, 717, 720, 726, 733, 741, 747, 750, - 750, 752, 759, 772, 786, 792, 789, 779, - 775, 785, 809, 835, 844, 831, 813, 833 - }, - { - 939, 1157, 1466, 1808, 2109, 2324, 2465, 2594, - 2786, 3078, 3436, 3769, 3978, 4008, 3888, 3711, - 3584, 3570, 3656, 3776, 3850, 3839, 3762, 3672, - 3624, 3635, 3683, 3727, 3735, 3706, 3662, 3629, - 3620, 3630, 3644, 3650, 3647, 3636, 3620, 3600, - 3579, 3565, 3567, 3577, 3561, 3457, 3213, 2818, - 2328, 1858, 1526, 1390, 1411, 1463, 1407, 1161, - 757, 322, 10, 0, 29, 241, 415, 459, - 371, 226, 120, 109, 185, 287, 353, 352, - 305, 254, 237, 261, 306, 342, 353, 345, - 333, 331, 341, 357, 378, 412, 468, 543, - 617, 668, 687, 704, 781, 980, 1320, 1751, - 2167, 2456, 2565, 2531, 2472, 2517, 2741, 3112, - 3512, 3801, 3894, 3804, 3629, 3495, 3482, 3590, - 3751, 3874, 3901, 3829, 3701, 3576, 3494, 3464, - 3470, 3481, 3462, 3379, 3207, 2939, 2607, 2274, - 2020, 1891, 1874, 1883, 1805, 1560, 1158, 701, - 333, 169, 222, 408, 586, 645, 557, 384, - 230, 176, 233, 347, 444, 472, 434, 370, - 331, 339, 383, 430, 455, 454, 438, 426, - 426, 434, 446, 459, 474, 493, 506, 505, - 495, 507, 595, 807, 1148, 1565, 1957, 2227, - 2336, 2333, 2339, 2478, 2805, 3270, 3736, 4053, - 4095, 4014, 3801, 3639, 3613, 3717, 3871, 3978, - 3983, 3900, 3793, 3729, 3733, 3786, 3838, 3853, - 3824, 3776, 3739, 3731, 3744, 3758, 3759, 3748, - 3733, 3725, 3721, 3712, 3695, 3677, 3671, 3672, - 3646, 3532, 3277, 2871, 2377, 1910, 1591, 1473, - 1515, 1591, 1562, 1348, 978, 572, 274, 176, - 267, 447, 588, 606, 498, 334, 205, 173, - 245, 377, 509, 597, 627, 614, 591, 602, - 686, 871, 1154, 1494, 1815, 2046, 2153, 2175 - }, - { - 2202, 2328, 2586, 2917, 3197, 3310, 3227, 3033, - 2887, 2928, 3189, 3577, 3922, 4080, 4014, 3807, - 3608, 3538, 3624, 3791, 3921, 3925, 3790, 3579, - 3383, 3272, 3255, 3288, 3302, 3237, 3065, 2795, - 2470, 2154, 1907, 1770, 1744, 1787, 1828, 1803, - 1681, 1486, 1288, 1168, 1186, 1352, 1629, 1949, - 2239, 2450, 2563, 2598, 2605, 2648, 2779, 3018, - 3331, 3644, 3869, 3950, 3888, 3742, 3600, 3530, - 3551, 3631, 3709, 3739, 3708, 3642, 3581, 3555, - 3571, 3611, 3640, 3623, 3529, 3344, 3075, 2759, - 2457, 2231, 2117, 2100, 2117, 2081, 1928, 1658, - 1335, 1064, 934, 980, 1171, 1426, 1659, 1813, - 1876, 1878, 1871, 1907, 2027, 2244, 2538, 2860, - 3143, 3325, 3380, 3333, 3249, 3205, 3249, 3378, - 3539, 3662, 3699, 3646, 3543, 3450, 3411, 3440, - 3508, 3562, 3541, 3398, 3116, 2720, 2276, 1872, - 1590, 1462, 1453, 1468, 1402, 1193, 858, 489, - 206, 91, 147, 300, 444, 500, 452, 346, - 256, 236, 300, 422, 561, 679, 761, 807, - 832, 861, 927, 1065, 1293, 1597, 1925, 2200, - 2360, 2388, 2329, 2268, 2285, 2414, 2622, 2831, - 2950, 2924, 2749, 2468, 2150, 1864, 1657, 1544, - 1507, 1499, 1457, 1327, 1090, 778, 466, 243, - 166, 232, 380, 521, 588, 563, 482, 404, - 377, 410, 476, 537, 561, 543, 503, 476, - 495, 589, 773, 1039, 1350, 1648, 1872, 1986, - 2004, 1988, 2025, 2177, 2447, 2769, 3042, 3173, - 3127, 2936, 2680, 2446, 2292, 2231, 2231, 2241, - 2204, 2082, 1863, 1567, 1245, 966, 788, 736, - 784, 865, 905, 860, 735, 582, 465, 428, - 474, 566, 654, 697, 683, 631, 581, 583, - 686, 918, 1265, 1669, 2035, 2274, 2352, 2323 - }, - { - 2308, 2433, 2748, 3177, 3544, 3668, 3471, 3043, - 2609, 2418, 2602, 3107, 3715, 4095, 4095, 4046, - 3616, 3185, 2897, 2787, 2788, 2806, 2786, 2731, - 2689, 2696, 2748, 2804, 2822, 2794, 2756, 2766, - 2869, 3064, 3305, 3525, 3665, 3701, 3639, 3509, - 3345, 3176, 3025, 2909, 2838, 2812, 2819, 2835, - 2836, 2806, 2748, 2678, 2622, 2603, 2631, 2702, - 2801, 2908, 3003, 3069, 3101, 3101, 3077, 3044, - 3017, 3005, 3008, 3020, 3031, 3034, 3026, 3010, - 2994, 2986, 2988, 2995, 2998, 2985, 2945, 2876, - 2783, 2678, 2580, 2509, 2477, 2490, 2540, 2610, - 2679, 2730, 2754, 2756, 2753, 2768, 2820, 2918, - 3055, 3208, 3345, 3430, 3438, 3358, 3200, 2991, - 2767, 2569, 2428, 2360, 2361, 2409, 2472, 2517, - 2524, 2495, 2450, 2425, 2449, 2544, 2710, 2930, - 3175, 3407, 3585, 3664, 3602, 3379, 3006, 2540, - 2075, 1708, 1500, 1447, 1474, 1469, 1336, 1047, - 657, 281, 40, 5, 171, 465, 788, 1060, - 1245, 1349, 1398, 1415, 1410, 1385, 1347, 1314, - 1304, 1326, 1362, 1377, 1334, 1213, 1024, 806, - 608, 476, 432, 478, 596, 758, 934, 1092, - 1212, 1280, 1300, 1289, 1272, 1275, 1308, 1367, - 1436, 1489, 1507, 1479, 1409, 1311, 1205, 1110, - 1042, 1010, 1011, 1035, 1068, 1095, 1107, 1103, - 1090, 1079, 1077, 1086, 1102, 1117, 1124, 1122, - 1115, 1112, 1126, 1166, 1234, 1327, 1430, 1526, - 1597, 1629, 1617, 1568, 1498, 1428, 1378, 1354, - 1353, 1356, 1341, 1289, 1191, 1055, 904, 770, - 687, 680, 758, 913, 1120, 1342, 1539, 1679, - 1747, 1745, 1696, 1634, 1591, 1586, 1614, 1656, - 1678, 1652, 1560, 1400, 1187, 946, 711, 527, - 440, 494, 706, 1050, 1462, 1849, 2132, 2278 - }, - { - 2319, 2331, 2394, 2542, 2751, 2949, 3073, 3109, - 3107, 3151, 3303, 3555, 3826, 4002, 4003, 3830, - 3568, 3340, 3237, 3272, 3376, 3445, 3394, 3202, - 2912, 2606, 2358, 2209, 2165, 2204, 2299, 2425, - 2556, 2669, 2743, 2772, 2770, 2770, 2814, 2929, - 3111, 3324, 3517, 3640, 3669, 3612, 3505, 3392, - 3309, 3269, 3267, 3280, 3282, 3254, 3190, 3097, - 2990, 2890, 2814, 2772, 2765, 2784, 2812, 2835, - 2841, 2829, 2807, 2785, 2775, 2778, 2789, 2800, - 2801, 2791, 2775, 2765, 2773, 2811, 2879, 2969, - 3067, 3152, 3208, 3228, 3218, 3198, 3189, 3208, - 3257, 3322, 3374, 3382, 3325, 3195, 3007, 2793, - 2594, 2444, 2363, 2348, 2368, 2384, 2357, 2271, - 2141, 2009, 1928, 1941, 2063, 2280, 2546, 2808, - 3018, 3151, 3204, 3200, 3173, 3161, 3191, 3274, - 3394, 3511, 3568, 3508, 3293, 2930, 2474, 2018, - 1663, 1469, 1429, 1464, 1460, 1319, 1013, 604, - 214, 0, 0, 95, 355, 598, 744, 775, - 735, 695, 714, 818, 999, 1226, 1467, 1687, - 1857, 1950, 1949, 1857, 1704, 1539, 1409, 1346, - 1343, 1366, 1368, 1309, 1178, 990, 785, 609, - 497, 468, 516, 613, 723, 811, 858, 865, - 850, 842, 863, 923, 1017, 1126, 1227, 1302, - 1342, 1347, 1328, 1299, 1277, 1271, 1283, 1304, - 1325, 1335, 1332, 1321, 1310, 1308, 1318, 1334, - 1344, 1336, 1299, 1233, 1143, 1046, 961, 905, - 885, 895, 916, 925, 905, 855, 790, 739, - 731, 789, 918, 1104, 1314, 1511, 1659, 1739, - 1756, 1736, 1722, 1749, 1835, 1964, 2095, 2175, - 2161, 2038, 1824, 1562, 1305, 1097, 962, 902, - 900, 925, 943, 921, 846, 726, 599, 526, - 571, 771, 1112, 1525, 1910, 2177, 2297, 2314 - }, - { - 2323, 2419, 2632, 2912, 3149, 3244, 3173, 3014, - 2908, 2973, 3238, 3608, 3918, 4019, 3859, 3505, - 3101, 2783, 2620, 2591, 2628, 2672, 2714, 2788, - 2927, 3129, 3341, 3496, 3547, 3509, 3442, 3422, - 3493, 3644, 3818, 3944, 3963, 3855, 3630, 3317, - 2958, 2600, 2295, 2096, 2046, 2159, 2413, 2751, - 3101, 3394, 3587, 3670, 3665, 3613, 3558, 3539, - 3572, 3648, 3739, 3796, 3774, 3640, 3388, 3043, - 2659, 2303, 2045, 1935, 1997, 2221, 2563, 2960, - 3340, 3639, 3819, 3868, 3808, 3680, 3536, 3419, - 3356, 3346, 3365, 3372, 3322, 3183, 2951, 2650, - 2330, 2056, 1891, 1877, 2024, 2310, 2684, 3077, - 3421, 3662, 3772, 3754, 3635, 3461, 3280, 3131, - 3037, 2997, 2991, 2988, 2954, 2863, 2711, 2517, - 2321, 2175, 2124, 2190, 2369, 2629, 2928, 3218, - 3461, 3621, 3665, 3563, 3300, 2892, 2403, 1927, - 1566, 1378, 1349, 1391, 1380, 1220, 892, 469, - 86, 0, 0, 118, 470, 835, 1134, 1339, - 1459, 1515, 1514, 1447, 1306, 1104, 885, 705, - 604, 589, 626, 660, 644, 558, 420, 275, - 173, 156, 248, 453, 754, 1115, 1485, 1799, - 1997, 2040, 1918, 1662, 1330, 989, 703, 510, - 423, 426, 489, 572, 640, 670, 656, 617, - 584, 599, 695, 889, 1165, 1485, 1788, 2013, - 2110, 2059, 1869, 1579, 1245, 930, 684, 539, - 498, 541, 628, 715, 767, 768, 729, 681, - 668, 729, 886, 1133, 1440, 1754, 2016, 2171, - 2182, 2039, 1762, 1396, 1005, 660, 415, 303, - 323, 444, 620, 801, 946, 1037, 1074, 1079, - 1083, 1119, 1211, 1364, 1557, 1751, 1895, 1944, - 1877, 1700, 1444, 1154, 870, 629, 463, 408, - 493, 732, 1100, 1528, 1919, 2188, 2304, 2314 - }, - { - 2317, 2411, 2628, 2911, 3144, 3223, 3127, 2944, - 2824, 2892, 3171, 3558, 3878, 3980, 3821, 3483, - 3118, 2868, 2787, 2839, 2940, 3028, 3098, 3195, - 3364, 3609, 3870, 4057, 4095, 3974, 3729, 3436, - 3165, 2956, 2819, 2748, 2739, 2789, 2892, 3031, - 3176, 3292, 3359, 3372, 3343, 3289, 3225, 3160, - 3098, 3043, 3004, 2984, 2985, 2998, 3012, 3019, - 3014, 3001, 2987, 2980, 2986, 3009, 3049, 3101, - 3158, 3209, 3241, 3246, 3220, 3167, 3099, 3028, - 2966, 2921, 2897, 2891, 2898, 2911, 2921, 2924, - 2917, 2903, 2891, 2888, 2902, 2936, 2987, 3046, - 3102, 3142, 3156, 3135, 3076, 2984, 2867, 2740, - 2624, 2540, 2512, 2555, 2677, 2868, 3104, 3345, - 3550, 3679, 3706, 3626, 3449, 3205, 2935, 2685, - 2496, 2398, 2401, 2495, 2649, 2829, 3004, 3156, - 3272, 3337, 3327, 3209, 2962, 2599, 2175, 1780, - 1502, 1384, 1396, 1443, 1413, 1233, 911, 535, - 233, 106, 182, 410, 693, 938, 1099, 1180, - 1210, 1213, 1185, 1099, 934, 695, 429, 201, - 71, 71, 193, 403, 654, 906, 1126, 1289, - 1380, 1390, 1324, 1203, 1057, 920, 817, 760, - 746, 767, 813, 874, 943, 1010, 1067, 1105, - 1120, 1118, 1105, 1093, 1087, 1092, 1104, 1117, - 1124, 1119, 1097, 1058, 1004, 946, 895, 863, - 860, 887, 939, 1005, 1075, 1136, 1181, 1207, - 1214, 1207, 1193, 1181, 1178, 1186, 1201, 1215, - 1219, 1204, 1169, 1117, 1058, 1003, 964, 951, - 972, 1028, 1118, 1234, 1360, 1477, 1561, 1589, - 1545, 1424, 1235, 1002, 764, 561, 431, 402, - 481, 658, 903, 1173, 1419, 1602, 1694, 1690, - 1602, 1458, 1285, 1108, 947, 820, 750, 763, - 880, 1103, 1406, 1735, 2026, 2224, 2309, 2292 - }, - { - 2211, 2106, 2007, 1930, 1882, 1874, 1912, 1998, - 2117, 2239, 2337, 2403, 2465, 2566, 2744, 2996, - 3274, 3500, 3615, 3610, 3539, 3489, 3528, 3669, - 3863, 4029, 4095, 4068, 3974, 3886, 3854, 3885, - 3944, 3986, 3983, 3939, 3886, 3854, 3856, 3879, - 3900, 3900, 3878, 3849, 3827, 3822, 3829, 3835, - 3833, 3820, 3803, 3789, 3783, 3782, 3781, 3775, - 3766, 3755, 3747, 3741, 3736, 3731, 3724, 3716, - 3708, 3703, 3698, 3693, 3687, 3678, 3670, 3663, - 3658, 3653, 3648, 3642, 3634, 3625, 3618, 3612, - 3607, 3602, 3596, 3589, 3582, 3575, 3569, 3563, - 3558, 3552, 3546, 3540, 3533, 3527, 3521, 3515, - 3509, 3504, 3498, 3493, 3488, 3481, 3474, 3466, - 3461, 3457, 3455, 3452, 3445, 3434, 3423, 3415, - 3415, 3418, 3420, 3414, 3397, 3378, 3366, 3367, - 3369, 3348, 3276, 3139, 2955, 2769, 2632, 2574, - 2575, 2574, 2495, 2296, 1995, 1671, 1424, 1317, - 1341, 1414, 1427, 1310, 1070, 787, 570, 487, - 531, 623, 661, 584, 401, 186, 30, 0, - 49, 157, 241, 258, 217, 159, 127, 141, - 188, 236, 259, 251, 229, 214, 219, 242, - 269, 286, 288, 282, 278, 283, 297, 313, - 325, 329, 330, 332, 339, 350, 360, 368, - 372, 376, 382, 390, 398, 406, 412, 417, - 422, 428, 436, 445, 452, 457, 461, 466, - 473, 481, 489, 496, 501, 505, 510, 516, - 524, 532, 539, 544, 548, 553, 558, 566, - 573, 580, 585, 590, 595, 601, 607, 613, - 619, 624, 629, 636, 643, 649, 654, 657, - 660, 666, 675, 685, 693, 694, 692, 692, - 698, 713, 729, 739, 739, 739, 763, 838, - 973, 1151, 1331, 1463, 1520, 1519, 1512, 1562 - }, - { - 1707, 1931, 2171, 2349, 2413, 2363, 2253, 2151, - 2108, 2140, 2228, 2354, 2516, 2734, 3020, 3356, - 3684, 3923, 4013, 3952, 3799, 3649, 3577, 3606, - 3697, 3783, 3810, 3768, 3692, 3630, 3616, 3646, - 3689, 3710, 3695, 3656, 3619, 3603, 3612, 3631, - 3640, 3632, 3610, 3588, 3577, 3578, 3583, 3585, - 3578, 3564, 3551, 3543, 3541, 3540, 3537, 3530, - 3520, 3512, 3506, 3502, 3498, 3493, 3486, 3479, - 3472, 3468, 3463, 3458, 3453, 3446, 3439, 3433, - 3429, 3424, 3419, 3414, 3408, 3401, 3395, 3390, - 3386, 3381, 3376, 3370, 3364, 3358, 3353, 3348, - 3344, 3339, 3334, 3328, 3322, 3317, 3312, 3307, - 3303, 3298, 3293, 3288, 3283, 3278, 3272, 3266, - 3262, 3258, 3255, 3252, 3246, 3238, 3230, 3223, - 3221, 3223, 3224, 3220, 3208, 3193, 3181, 3180, - 3190, 3200, 3200, 3183, 3155, 3134, 3134, 3145, - 3130, 3034, 2811, 2462, 2046, 1665, 1414, 1330, - 1367, 1413, 1352, 1122, 760, 381, 116, 45, - 153, 346, 506, 555, 493, 382, 301, 297, - 363, 447, 498, 492, 448, 406, 396, 425, - 470, 503, 508, 491, 471, 467, 483, 508, - 529, 535, 530, 523, 524, 535, 550, 562, - 568, 568, 568, 573, 582, 593, 601, 606, - 609, 611, 617, 625, 633, 640, 645, 648, - 651, 656, 663, 671, 677, 682, 686, 690, - 695, 701, 708, 715, 720, 724, 728, 732, - 738, 745, 752, 757, 761, 764, 768, 774, - 781, 787, 792, 796, 800, 804, 809, 815, - 821, 826, 830, 835, 839, 845, 851, 855, - 859, 862, 867, 874, 881, 887, 890, 890, - 890, 895, 906, 918, 926, 926, 920, 915, - 919, 934, 954, 968, 976, 996, 1068, 1233 - }, - { - 1507, 1856, 2193, 2413, 2442, 2290, 2057, 1904, - 1976, 2331, 2901, 3518, 3992, 4095, 4095, 3903, - 3665, 3542, 3570, 3694, 3817, 3865, 3821, 3726, - 3645, 3621, 3652, 3704, 3735, 3726, 3687, 3646, - 3624, 3626, 3639, 3647, 3645, 3635, 3624, 3615, - 3603, 3587, 3573, 3569, 3574, 3560, 3475, 3265, - 2908, 2446, 1976, 1611, 1425, 1405, 1455, 1442, - 1271, 937, 530, 186, 14, 38, 191, 357, - 438, 404, 299, 200, 170, 216, 301, 368, - 384, 353, 308, 285, 297, 332, 367, 384, - 383, 375, 372, 376, 382, 387, 395, 411, - 434, 452, 453, 443, 464, 584, 868, 1332, - 1914, 2487, 2911, 3104, 3087, 2972, 2911, 3008, - 3268, 3599, 3869, 3982, 3926, 3774, 3632, 3580, - 3628, 3728, 3810, 3827, 3782, 3709, 3653, 3636, - 3655, 3689, 3712, 3701, 3635, 3495, 3276, 2998, - 2715, 2493, 2374, 2338, 2299, 2141, 1783, 1237, - 622, 113, 0, 0, 116, 392, 562, 561, - 431, 278, 200, 232, 337, 440, 481, 451, - 387, 341, 342, 385, 436, 466, 466, 447, - 431, 430, 443, 460, 473, 484, 496, 507, - 511, 509, 521, 592, 769, 1071, 1465, 1866, - 2174, 2328, 2349, 2333, 2410, 2665, 3089, 3575, - 3972, 4095, 4095, 3941, 3739, 3634, 3661, 3776, - 3890, 3933, 3888, 3796, 3719, 3696, 3728, 3778, - 3808, 3797, 3759, 3719, 3698, 3699, 3711, 3718, - 3715, 3707, 3699, 3689, 3674, 3654, 3638, 3638, - 3646, 3626, 3515, 3255, 2831, 2302, 1782, 1398, - 1222, 1229, 1308, 1322, 1178, 880, 522, 236, - 115, 168, 319, 461, 513, 463, 357, 267, - 243, 290, 372, 442, 468, 444, 393, 353, - 362, 452, 639, 911, 1230, 1534, 1767, 1903 - }, - { - 1962, 2005, 2092, 2251, 2456, 2649, 2781, 2850, - 2908, 3022, 3228, 3493, 3728, 3842, 3794, 3627, - 3443, 3341, 3365, 3480, 3601, 3644, 3580, 3441, - 3300, 3222, 3226, 3278, 3305, 3239, 3041, 2722, - 2338, 1968, 1689, 1544, 1526, 1580, 1626, 1592, - 1451, 1235, 1020, 891, 909, 1082, 1369, 1698, - 1993, 2202, 2310, 2341, 2348, 2396, 2537, 2784, - 3102, 3416, 3640, 3720, 3658, 3514, 3372, 3302, - 3323, 3402, 3482, 3514, 3486, 3420, 3359, 3332, - 3347, 3388, 3420, 3405, 3312, 3126, 2854, 2536, - 2231, 2003, 1889, 1873, 1891, 1857, 1707, 1440, - 1119, 847, 715, 760, 954, 1220, 1470, 1644, - 1726, 1740, 1737, 1776, 1905, 2144, 2477, 2849, - 3180, 3394, 3456, 3386, 3256, 3152, 3136, 3212, - 3334, 3437, 3471, 3429, 3345, 3268, 3237, 3259, - 3311, 3352, 3333, 3215, 2982, 2647, 2263, 1907, - 1655, 1544, 1548, 1579, 1534, 1344, 1020, 652, - 364, 248, 314, 489, 664, 748, 719, 618, - 522, 489, 535, 632, 733, 802, 827, 821, - 811, 834, 924, 1107, 1389, 1743, 2108, 2405, - 2573, 2602, 2542, 2481, 2504, 2645, 2871, 3097, - 3229, 3206, 3024, 2731, 2402, 2111, 1906, 1798, - 1765, 1755, 1707, 1569, 1326, 1012, 699, 475, - 394, 454, 598, 739, 809, 789, 711, 631, - 599, 626, 689, 751, 778, 764, 724, 693, - 706, 798, 982, 1252, 1570, 1873, 2100, 2213, - 2229, 2211, 2247, 2398, 2668, 2990, 3262, 3393, - 3346, 3150, 2883, 2631, 2456, 2374, 2361, 2364, - 2326, 2197, 1958, 1626, 1255, 927, 715, 654, - 723, 852, 953, 970, 898, 779, 678, 641, - 677, 757, 833, 872, 859, 811, 764, 764, - 855, 1060, 1365, 1715, 2023, 2215, 2272, 2249 - }, - { - 2257, 2389, 2661, 2971, 3150, 3053, 2652, 2077, - 1558, 1308, 1411, 1787, 2248, 2610, 2801, 2879, - 2974, 3182, 3494, 3795, 3942, 3850, 3543, 3141, - 2782, 2556, 2470, 2472, 2499, 2521, 2547, 2595, - 2666, 2737, 2777, 2776, 2764, 2795, 2915, 3136, - 3415, 3680, 3859, 3910, 3830, 3653, 3427, 3197, - 3000, 2856, 2776, 2752, 2766, 2791, 2799, 2773, - 2714, 2642, 2583, 2563, 2596, 2674, 2779, 2887, - 2976, 3032, 3055, 3049, 3026, 2999, 2977, 2967, - 2969, 2977, 2986, 2989, 2983, 2970, 2955, 2947, - 2946, 2952, 2955, 2941, 2902, 2832, 2738, 2634, - 2540, 2475, 2451, 2470, 2522, 2591, 2656, 2701, - 2721, 2722, 2724, 2753, 2830, 2967, 3152, 3355, - 3531, 3636, 3637, 3523, 3312, 3043, 2767, 2532, - 2374, 2306, 2312, 2359, 2404, 2412, 2368, 2285, - 2199, 2156, 2194, 2328, 2550, 2829, 3122, 3382, - 3565, 3629, 3543, 3297, 2914, 2455, 2012, 1674, - 1492, 1454, 1481, 1467, 1325, 1032, 647, 283, - 58, 40, 226, 548, 909, 1224, 1451, 1586, - 1647, 1657, 1633, 1587, 1537, 1503, 1503, 1536, - 1577, 1578, 1495, 1304, 1023, 704, 417, 228, - 171, 246, 424, 657, 894, 1094, 1234, 1307, - 1323, 1307, 1286, 1284, 1313, 1371, 1440, 1494, - 1513, 1483, 1408, 1305, 1197, 1107, 1050, 1027, - 1034, 1058, 1086, 1107, 1116, 1114, 1106, 1098, - 1095, 1101, 1114, 1127, 1136, 1137, 1132, 1130, - 1143, 1181, 1250, 1344, 1448, 1542, 1607, 1630, - 1611, 1559, 1491, 1427, 1383, 1364, 1362, 1359, - 1330, 1253, 1120, 938, 738, 561, 455, 457, - 581, 816, 1123, 1446, 1727, 1921, 2007, 1995, - 1921, 1833, 1773, 1764, 1801, 1856, 1888, 1858, - 1743, 1541, 1272, 975, 702, 507, 441, 531 - }, - { - 774, 1124, 1511, 1857, 2118, 2294, 2437, 2619, - 2894, 3258, 3648, 3959, 4095, 4007, 3717, 3307, - 2882, 2528, 2295, 2189, 2191, 2278, 2428, 2623, - 2835, 3029, 3168, 3235, 3238, 3215, 3215, 3278, - 3411, 3583, 3742, 3829, 3801, 3645, 3376, 3036, - 2679, 2361, 2135, 2037, 2079, 2245, 2497, 2779, - 3036, 3225, 3329, 3352, 3323, 3276, 3246, 3254, - 3302, 3373, 3434, 3448, 3384, 3226, 2983, 2688, - 2388, 2141, 1994, 1978, 2099, 2333, 2637, 2953, - 3227, 3416, 3500, 3488, 3405, 3292, 3187, 3118, - 3093, 3099, 3111, 3094, 3018, 2869, 2654, 2402, - 2160, 1980, 1910, 1975, 2176, 2482, 2842, 3191, - 3472, 3641, 3682, 3606, 3444, 3242, 3049, 2899, - 2810, 2777, 2774, 2762, 2704, 2579, 2391, 2173, - 1980, 1868, 1878, 2023, 2282, 2612, 2958, 3268, - 3497, 3609, 3576, 3386, 3050, 2617, 2165, 1786, - 1550, 1469, 1489, 1508, 1425, 1185, 816, 418, - 118, 15, 140, 449, 849, 1244, 1563, 1780, - 1895, 1916, 1852, 1708, 1503, 1272, 1067, 929, - 875, 886, 916, 912, 840, 702, 530, 378, - 298, 329, 482, 744, 1079, 1435, 1754, 1981, - 2079, 2036, 1868, 1617, 1337, 1082, 894, 791, - 766, 795, 842, 872, 865, 817, 746, 684, - 671, 736, 894, 1136, 1429, 1726, 1971, 2117, - 2133, 2014, 1780, 1477, 1160, 887, 699, 614, - 628, 710, 823, 927, 996, 1022, 1015, 1003, - 1020, 1094, 1242, 1456, 1707, 1950, 2130, 2200, - 2135, 1934, 1629, 1271, 925, 648, 481, 440, - 515, 674, 872, 1064, 1213, 1302, 1335, 1336, - 1344, 1397, 1520, 1709, 1931, 2128, 2243, 2231, - 2083, 1821, 1493, 1154, 854, 629, 511, 526, - 689, 993, 1390, 1797, 2119, 2292, 2322, 2291 - }, - { - 2314, 2477, 2774, 3101, 3304, 3269, 2996, 2616, - 2327, 2289, 2534, 2943, 3314, 3465, 3329, 2981, - 2577, 2272, 2135, 2143, 2217, 2293, 2362, 2459, - 2629, 2873, 3136, 3336, 3402, 3317, 3119, 2875, - 2646, 2469, 2348, 2279, 2254, 2274, 2335, 2425, - 2519, 2592, 2629, 2631, 2615, 2602, 2605, 2627, - 2661, 2697, 2726, 2738, 2725, 2679, 2596, 2477, - 2338, 2202, 2098, 2053, 2084, 2196, 2379, 2609, - 2850, 3062, 3206, 3253, 3193, 3035, 2807, 2549, - 2305, 2114, 2001, 1978, 2037, 2157, 2310, 2463, - 2591, 2678, 2718, 2716, 2683, 2633, 2582, 2538, - 2510, 2496, 2492, 2489, 2477, 2447, 2397, 2331, - 2260, 2201, 2172, 2191, 2269, 2406, 2591, 2794, - 2982, 3116, 3165, 3116, 2973, 2757, 2503, 2255, - 2054, 1930, 1903, 1972, 2119, 2315, 2524, 2715, - 2864, 2950, 2961, 2886, 2724, 2491, 2223, 1971, - 1787, 1696, 1687, 1710, 1698, 1602, 1413, 1175, - 963, 848, 869, 1014, 1236, 1474, 1680, 1830, - 1921, 1953, 1923, 1822, 1647, 1415, 1162, 942, - 800, 766, 840, 999, 1206, 1422, 1617, 1764, - 1851, 1872, 1835, 1757, 1663, 1577, 1518, 1490, - 1486, 1495, 1501, 1496, 1478, 1449, 1415, 1385, - 1370, 1381, 1428, 1513, 1632, 1770, 1905, 2008, - 2053, 2024, 1913, 1731, 1501, 1261, 1050, 908, - 862, 922, 1078, 1303, 1559, 1802, 1993, 2106, - 2129, 2070, 1950, 1798, 1645, 1517, 1431, 1391, - 1392, 1424, 1472, 1524, 1566, 1595, 1608, 1611, - 1615, 1627, 1658, 1708, 1774, 1845, 1904, 1932, - 1913, 1836, 1700, 1518, 1317, 1131, 998, 947, - 994, 1135, 1351, 1604, 1853, 2054, 2176, 2199, - 2128, 1981, 1788, 1585, 1398, 1250, 1158, 1137, - 1201, 1350, 1563, 1801, 2007, 2140, 2189, 2186 - }, - { - 2189, 2248, 2375, 2527, 2635, 2643, 2551, 2422, - 2354, 2421, 2630, 2905, 3131, 3208, 3107, 2880, - 2624, 2431, 2342, 2340, 2379, 2423, 2468, 2540, - 2662, 2834, 3015, 3151, 3196, 3140, 3009, 2847, - 2695, 2577, 2495, 2447, 2430, 2450, 2510, 2605, - 2717, 2822, 2898, 2932, 2923, 2881, 2818, 2746, - 2675, 2613, 2568, 2545, 2543, 2555, 2572, 2583, - 2585, 2576, 2563, 2553, 2552, 2563, 2586, 2616, - 2648, 2676, 2695, 2700, 2689, 2665, 2632, 2593, - 2557, 2529, 2511, 2504, 2507, 2514, 2522, 2526, - 2523, 2515, 2507, 2504, 2516, 2546, 2595, 2658, - 2723, 2778, 2807, 2802, 2760, 2685, 2587, 2482, - 2385, 2314, 2282, 2295, 2356, 2458, 2586, 2720, - 2838, 2919, 2948, 2917, 2825, 2683, 2510, 2334, - 2186, 2093, 2071, 2118, 2221, 2352, 2488, 2609, - 2702, 2760, 2770, 2719, 2597, 2408, 2178, 1954, - 1784, 1698, 1689, 1714, 1713, 1638, 1482, 1280, - 1098, 997, 1009, 1121, 1288, 1458, 1594, 1684, - 1734, 1751, 1736, 1678, 1568, 1411, 1232, 1071, - 966, 940, 992, 1104, 1245, 1388, 1514, 1609, - 1667, 1682, 1653, 1584, 1487, 1379, 1282, 1211, - 1177, 1181, 1219, 1280, 1354, 1428, 1490, 1533, - 1554, 1555, 1544, 1529, 1518, 1517, 1524, 1536, - 1545, 1546, 1536, 1514, 1484, 1451, 1423, 1404, - 1399, 1409, 1432, 1465, 1502, 1538, 1567, 1587, - 1595, 1593, 1585, 1576, 1571, 1573, 1581, 1590, - 1593, 1582, 1552, 1502, 1440, 1376, 1324, 1296, - 1302, 1343, 1417, 1514, 1618, 1715, 1786, 1819, - 1805, 1744, 1643, 1517, 1386, 1269, 1188, 1156, - 1185, 1277, 1420, 1595, 1770, 1915, 2003, 2022, - 1977, 1883, 1760, 1626, 1499, 1393, 1326, 1316, - 1375, 1500, 1668, 1846, 1998, 2102, 2152, 2156 - }, - { - 2126, 2069, 1990, 1899, 1820, 1789, 1831, 1951, - 2117, 2280, 2399, 2473, 2545, 2676, 2908, 3223, - 3547, 3784, 3872, 3816, 3691, 3602, 3618, 3744, - 3917, 4050, 4087, 4029, 3930, 3856, 3845, 3890, - 3948, 3976, 3956, 3905, 3856, 3837, 3849, 3875, - 3890, 3881, 3854, 3825, 3809, 3810, 3818, 3823, - 3817, 3801, 3784, 3772, 3768, 3768, 3767, 3760, - 3750, 3739, 3731, 3725, 3721, 3716, 3709, 3701, - 3693, 3686, 3680, 3675, 3669, 3662, 3655, 3648, - 3642, 3635, 3629, 3623, 3617, 3611, 3604, 3598, - 3592, 3586, 3581, 3575, 3568, 3561, 3554, 3548, - 3543, 3539, 3535, 3529, 3523, 3515, 3508, 3502, - 3497, 3493, 3489, 3484, 3476, 3467, 3459, 3453, - 3449, 3447, 3445, 3440, 3431, 3419, 3409, 3404, - 3406, 3410, 3409, 3399, 3381, 3364, 3356, 3359, - 3362, 3342, 3278, 3167, 3029, 2905, 2830, 2810, - 2807, 2753, 2586, 2293, 1924, 1579, 1354, 1287, - 1336, 1393, 1348, 1149, 834, 511, 297, 251, - 342, 473, 536, 475, 313, 131, 17, 13, - 95, 201, 266, 262, 211, 157, 139, 167, - 218, 261, 274, 258, 235, 224, 236, 264, - 290, 303, 301, 293, 290, 297, 313, 330, - 341, 345, 345, 346, 352, 362, 374, 383, - 389, 392, 396, 401, 409, 418, 427, 433, - 438, 443, 448, 454, 462, 471, 478, 483, - 487, 492, 498, 506, 514, 521, 526, 531, - 535, 541, 548, 556, 563, 569, 573, 577, - 582, 589, 597, 604, 611, 615, 618, 622, - 627, 635, 643, 651, 657, 660, 662, 664, - 670, 679, 691, 700, 705, 703, 700, 701, - 710, 727, 744, 753, 751, 749, 768, 829, - 937, 1074, 1201, 1278, 1296, 1287, 1314, 1439 - }, - { - 1679, 1983, 2247, 2369, 2302, 2087, 1843, 1700, - 1737, 1938, 2211, 2449, 2598, 2684, 2791, 2997, - 3316, 3676, 3960, 4077, 4013, 3844, 3683, 3621, - 3676, 3792, 3885, 3900, 3836, 3743, 3680, 3678, - 3723, 3774, 3791, 3766, 3717, 3677, 3666, 3682, - 3705, 3713, 3700, 3674, 3651, 3641, 3644, 3651, - 3652, 3643, 3628, 3615, 3607, 3605, 3604, 3600, - 3593, 3584, 3576, 3569, 3565, 3560, 3554, 3547, - 3541, 3535, 3529, 3523, 3517, 3511, 3505, 3500, - 3494, 3489, 3483, 3476, 3470, 3465, 3460, 3454, - 3449, 3442, 3437, 3431, 3426, 3421, 3416, 3410, - 3404, 3398, 3393, 3389, 3385, 3380, 3375, 3368, - 3362, 3357, 3353, 3349, 3345, 3339, 3332, 3324, - 3317, 3313, 3311, 3309, 3305, 3298, 3288, 3279, - 3273, 3273, 3276, 3276, 3269, 3255, 3239, 3229, - 3232, 3243, 3252, 3247, 3225, 3197, 3180, 3185, - 3196, 3167, 3042, 2782, 2401, 1970, 1594, 1363, - 1298, 1341, 1373, 1284, 1029, 658, 289, 49, - 2, 120, 305, 443, 472, 400, 292, 224, - 233, 303, 383, 426, 415, 371, 334, 329, - 360, 403, 433, 437, 421, 404, 402, 417, - 440, 459, 466, 463, 459, 460, 469, 482, - 494, 501, 505, 507, 511, 517, 525, 533, - 540, 546, 551, 557, 562, 567, 573, 579, - 586, 593, 599, 603, 608, 613, 619, 627, - 634, 639, 643, 647, 652, 659, 666, 673, - 678, 682, 686, 690, 697, 704, 711, 716, - 720, 723, 728, 734, 741, 748, 754, 757, - 759, 763, 769, 777, 786, 792, 794, 794, - 795, 800, 810, 823, 831, 833, 829, 825, - 827, 840, 860, 875, 878, 866, 849, 845, - 863, 897, 927, 930, 904, 879, 908, 1042 - }, - { - 1292, 1614, 1922, 2135, 2224, 2239, 2286, 2469, - 2821, 3277, 3702, 3959, 3986, 3827, 3612, 3474, - 3484, 3616, 3775, 3864, 3839, 3731, 3617, 3564, - 3590, 3659, 3717, 3725, 3683, 3625, 3586, 3582, - 3603, 3626, 3633, 3622, 3604, 3586, 3570, 3558, - 3551, 3553, 3555, 3529, 3422, 3183, 2804, 2335, - 1886, 1568, 1442, 1469, 1530, 1482, 1241, 834, - 384, 50, 0, 38, 259, 458, 536, 479, - 354, 251, 233, 296, 391, 454, 458, 415, - 368, 351, 372, 414, 448, 459, 452, 442, - 440, 447, 455, 461, 467, 482, 504, 520, - 520, 516, 558, 721, 1066, 1597, 2230, 2820, - 3221, 3360, 3278, 3112, 3025, 3118, 3381, 3706, - 3952, 4026, 3931, 3752, 3600, 3551, 3606, 3706, - 3781, 3788, 3734, 3660, 3608, 3599, 3625, 3661, - 3680, 3662, 3590, 3455, 3261, 3036, 2826, 2679, - 2610, 2574, 2477, 2221, 1762, 1156, 546, 102, - 0, 33, 287, 531, 639, 584, 432, 293, - 250, 312, 425, 513, 530, 484, 420, 387, - 403, 452, 499, 519, 509, 489, 478, 484, - 499, 513, 522, 531, 544, 556, 560, 558, - 576, 663, 865, 1193, 1595, 1975, 2236, 2335, - 2322, 2314, 2442, 2765, 3238, 3723, 4063, 4095, - 4040, 3809, 3614, 3552, 3628, 3770, 3878, 3894, - 3822, 3720, 3653, 3652, 3699, 3750, 3768, 3744, - 3699, 3664, 3653, 3662, 3673, 3675, 3667, 3658, - 3652, 3646, 3632, 3610, 3593, 3592, 3595, 3554, - 3391, 3045, 2511, 1874, 1281, 879, 742, 827, - 996, 1085, 993, 731, 406, 161, 88, 184, - 363, 513, 562, 508, 408, 333, 324, 375, - 448, 501, 515, 493, 457, 433, 443, 510, - 648, 851, 1086, 1295, 1427, 1476, 1501, 1604 - }, - { - 1873, 2315, 2828, 3239, 3395, 3259, 2944, 2665, - 2622, 2890, 3375, 3857, 4095, 4038, 3680, 3215, - 2844, 2686, 2728, 2850, 2894, 2743, 2370, 1837, - 1266, 781, 472, 367, 430, 577, 712, 763, - 708, 582, 450, 376, 391, 475, 577, 641, - 639, 582, 516, 500, 588, 801, 1125, 1507, - 1867, 2134, 2272, 2305, 2319, 2417, 2670, 3068, - 3520, 3889, 4070, 4037, 3861, 3665, 3559, 3583, - 3699, 3824, 3884, 3850, 3745, 3620, 3524, 3480, - 3480, 3496, 3485, 3395, 3178, 2813, 2321, 1781, - 1307, 1002, 908, 981, 1105, 1149, 1037, 782, - 479, 260, 229, 422, 801, 1277, 1745, 2120, - 2355, 2453, 2465, 2472, 2561, 2787, 3136, 3532, - 3861, 4026, 3999, 3835, 3640, 3517, 3514, 3604, - 3716, 3779, 3761, 3684, 3598, 3551, 3560, 3608, - 3656, 3659, 3577, 3388, 3094, 2731, 2364, 2067, - 1893, 1836, 1829, 1768, 1563, 1196, 738, 318, - 67, 54, 259, 586, 917, 1156, 1271, 1286, - 1270, 1306, 1464, 1779, 2238, 2773, 3277, 3639, - 3791, 3737, 3562, 3385, 3310, 3371, 3525, 3683, - 3763, 3735, 3631, 3516, 3452, 3466, 3535, 3604, - 3611, 3503, 3257, 2887, 2447, 2021, 1695, 1521, - 1486, 1511, 1481, 1309, 984, 585, 241, 61, - 81, 241, 427, 535, 523, 422, 307, 250, - 279, 375, 493, 587, 635, 640, 626, 637, - 723, 936, 1301, 1794, 2337, 2813, 3116, 3204, - 3127, 3002, 2960, 3077, 3338, 3643, 3861, 3889, - 3691, 3308, 2828, 2358, 1983, 1748, 1651, 1641, - 1635, 1546, 1322, 974, 581, 256, 94, 120, - 281, 471, 590, 595, 509, 403, 341, 354, - 423, 503, 553, 554, 516, 470, 457, 521, - 698, 996, 1379, 1768, 2069, 2221, 2237, 2214 - }, - { - 2279, 2510, 2874, 3226, 3379, 3210, 2744, 2152, - 1669, 1477, 1618, 1994, 2440, 2822, 3098, 3310, - 3522, 3751, 3949, 4039, 3972, 3776, 3543, 3381, - 3349, 3425, 3518, 3526, 3382, 3084, 2688, 2274, - 1916, 1668, 1562, 1605, 1784, 2059, 2367, 2637, - 2814, 2885, 2880, 2865, 2910, 3057, 3302, 3595, - 3863, 4036, 4077, 3991, 3820, 3627, 3465, 3367, - 3333, 3337, 3344, 3326, 3267, 3171, 3058, 2949, - 2866, 2820, 2808, 2816, 2823, 2808, 2763, 2695, - 2625, 2579, 2576, 2618, 2689, 2764, 2821, 2850, - 2853, 2848, 2854, 2887, 2954, 3048, 3153, 3246, - 3308, 3334, 3333, 3332, 3358, 3430, 3543, 3667, - 3759, 3773, 3680, 3482, 3207, 2907, 2640, 2452, - 2359, 2341, 2345, 2307, 2181, 1960, 1687, 1441, - 1308, 1348, 1573, 1940, 2372, 2784, 3106, 3303, - 3377, 3359, 3302, 3259, 3274, 3363, 3508, 3655, - 3728, 3654, 3397, 2975, 2469, 1988, 1637, 1462, - 1434, 1455, 1410, 1219, 883, 482, 142, 0, - 0, 179, 418, 606, 687, 669, 609, 580, - 639, 808, 1078, 1421, 1794, 2148, 2424, 2566, - 2541, 2352, 2051, 1722, 1448, 1284, 1233, 1248, - 1259, 1202, 1044, 797, 512, 256, 93, 55, - 139, 305, 494, 652, 749, 782, 779, 772, - 792, 851, 944, 1055, 1162, 1244, 1292, 1306, - 1299, 1291, 1304, 1347, 1415, 1486, 1533, 1536, - 1493, 1420, 1344, 1288, 1262, 1261, 1268, 1262, - 1228, 1161, 1068, 966, 876, 816, 790, 788, - 786, 758, 686, 575, 453, 364, 350, 442, - 638, 911, 1209, 1473, 1658, 1748, 1766, 1764, - 1804, 1933, 2155, 2426, 2668, 2799, 2761, 2542, - 2181, 1751, 1337, 1009, 807, 735, 759, 824, - 870, 850, 750, 597, 451, 388, 466, 705 - }, - { - 1070, 1486, 1860, 2115, 2220, 2192, 2089, 1981, - 1927, 1954, 2066, 2251, 2498, 2802, 3152, 3520, - 3849, 4068, 4095, 3958, 3642, 3244, 2865, 2584, - 2435, 2403, 2441, 2503, 2553, 2578, 2577, 2557, - 2528, 2512, 2538, 2639, 2833, 3112, 3429, 3720, - 3915, 3973, 3886, 3690, 3437, 3188, 2986, 2855, - 2793, 2781, 2788, 2784, 2744, 2663, 2553, 2441, - 2362, 2346, 2403, 2527, 2691, 2859, 2996, 3083, - 3114, 3105, 3080, 3064, 3076, 3118, 3177, 3233, - 3263, 3256, 3211, 3142, 3067, 3007, 2971, 2958, - 2953, 2935, 2884, 2789, 2652, 2495, 2349, 2247, - 2214, 2256, 2358, 2488, 2613, 2704, 2751, 2764, - 2768, 2796, 2873, 3010, 3198, 3404, 3584, 3687, - 3677, 3538, 3286, 2963, 2629, 2344, 2155, 2078, - 2100, 2182, 2273, 2331, 2333, 2287, 2228, 2199, - 2241, 2376, 2598, 2879, 3177, 3442, 3625, 3681, - 3577, 3308, 2903, 2429, 1982, 1650, 1481, 1455, - 1488, 1468, 1307, 989, 577, 195, 0, 0, - 169, 523, 913, 1249, 1481, 1609, 1656, 1653, - 1620, 1574, 1530, 1505, 1511, 1545, 1579, 1570, - 1474, 1272, 982, 658, 372, 187, 139, 227, - 418, 662, 906, 1107, 1240, 1304, 1316, 1306, - 1309, 1348, 1431, 1542, 1654, 1731, 1746, 1687, - 1564, 1403, 1237, 1100, 1014, 982, 995, 1033, - 1074, 1103, 1111, 1102, 1086, 1074, 1072, 1083, - 1101, 1117, 1124, 1121, 1112, 1112, 1135, 1198, - 1303, 1444, 1600, 1740, 1836, 1865, 1825, 1728, - 1602, 1479, 1388, 1338, 1322, 1318, 1293, 1220, - 1086, 901, 695, 515, 411, 421, 560, 812, - 1133, 1464, 1744, 1931, 2006, 1985, 1905, 1816, - 1759, 1756, 1800, 1857, 1886, 1845, 1714, 1496, - 1217, 919, 652, 469, 412, 508, 757, 1121 - }, - { - 1529, 1894, 2138, 2224, 2171, 2044, 1924, 1875, - 1917, 2030, 2181, 2351, 2550, 2802, 3122, 3481, - 3804, 4000, 3999, 3790, 3427, 3009, 2633, 2364, - 2225, 2208, 2298, 2490, 2778, 3143, 3537, 3889, - 4095, 4095, 4052, 3779, 3424, 3058, 2741, 2510, - 2383, 2361, 2427, 2555, 2707, 2844, 2939, 2984, - 2989, 2979, 2981, 3015, 3087, 3188, 3298, 3391, - 3438, 3412, 3299, 3102, 2840, 2554, 2291, 2103, - 2029, 2094, 2296, 2614, 3001, 3396, 3732, 3949, - 4007, 3894, 3628, 3255, 2839, 2447, 2141, 1963, - 1934, 2047, 2273, 2564, 2865, 3125, 3308, 3395, - 3388, 3305, 3175, 3033, 2905, 2812, 2759, 2740, - 2736, 2726, 2689, 2614, 2506, 2384, 2280, 2231, - 2267, 2407, 2647, 2957, 3291, 3589, 3794, 3862, - 3771, 3529, 3172, 2757, 2353, 2030, 1839, 1810, - 1938, 2189, 2512, 2851, 3156, 3389, 3523, 3533, - 3401, 3127, 2737, 2296, 1890, 1601, 1468, 1464, - 1501, 1471, 1298, 979, 590, 255, 86, 138, - 387, 752, 1137, 1467, 1707, 1850, 1897, 1838, - 1660, 1362, 975, 564, 212, 0, 0, 88, - 355, 697, 1051, 1364, 1598, 1730, 1755, 1686, - 1555, 1402, 1267, 1175, 1132, 1126, 1132, 1128, - 1094, 1026, 929, 820, 727, 679, 703, 815, - 1013, 1275, 1560, 1820, 2005, 2077, 2014, 1813, - 1500, 1117, 724, 390, 173, 115, 228, 493, - 864, 1278, 1667, 1970, 2144, 2171, 2057, 1832, - 1543, 1243, 983, 800, 714, 721, 804, 932, - 1075, 1202, 1295, 1349, 1369, 1373, 1383, 1419, - 1491, 1598, 1718, 1821, 1870, 1834, 1696, 1460, - 1154, 824, 530, 328, 261, 350, 589, 943, - 1354, 1755, 2076, 2266, 2296, 2171, 1923, 1603, - 1265, 960, 725, 591, 578, 699, 945, 1284 - }, - { - 1654, 1980, 2202, 2302, 2323, 2348, 2464, 2715, - 3075, 3450, 3725, 3816, 3707, 3453, 3150, 2882, - 2696, 2591, 2549, 2556, 2624, 2780, 3036, 3370, - 3720, 4001, 4095, 4095, 3928, 3632, 3287, 2950, - 2666, 2464, 2366, 2382, 2507, 2712, 2956, 3189, - 3369, 3473, 3497, 3453, 3362, 3245, 3121, 3007, - 2920, 2868, 2853, 2865, 2890, 2912, 2919, 2911, - 2893, 2875, 2868, 2876, 2902, 2942, 2990, 3039, - 3078, 3100, 3098, 3072, 3025, 2965, 2904, 2851, - 2814, 2795, 2792, 2800, 2812, 2821, 2822, 2814, - 2801, 2791, 2796, 2827, 2890, 2982, 3090, 3193, - 3265, 3284, 3236, 3118, 2941, 2727, 2507, 2317, - 2195, 2169, 2259, 2460, 2749, 3082, 3403, 3656, - 3797, 3801, 3665, 3410, 3077, 2721, 2400, 2168, - 2061, 2087, 2225, 2432, 2662, 2873, 3044, 3160, - 3212, 3182, 3046, 2796, 2452, 2072, 1740, 1526, - 1455, 1483, 1519, 1466, 1273, 967, 637, 398, - 328, 441, 681, 964, 1212, 1390, 1500, 1555, - 1559, 1494, 1334, 1070, 734, 390, 118, 0, - 13, 193, 480, 817, 1152, 1440, 1646, 1744, - 1725, 1597, 1390, 1148, 920, 744, 641, 615, - 654, 743, 861, 987, 1102, 1189, 1238, 1250, - 1236, 1211, 1192, 1187, 1196, 1213, 1228, 1233, - 1224, 1198, 1158, 1110, 1061, 1020, 996, 998, - 1026, 1076, 1137, 1199, 1251, 1286, 1304, 1306, - 1299, 1288, 1279, 1278, 1285, 1297, 1306, 1301, - 1271, 1209, 1117, 1010, 908, 837, 819, 868, - 985, 1160, 1371, 1588, 1776, 1898, 1925, 1838, - 1639, 1353, 1022, 702, 450, 309, 306, 443, - 698, 1030, 1382, 1697, 1922, 2027, 2005, 1875, - 1675, 1447, 1229, 1048, 926, 877, 914, 1045, - 1261, 1535, 1821, 2068, 2235, 2307, 2293, 2223 - }, - { - 2125, 2026, 1944, 1894, 1887, 1932, 2022, 2137, - 2250, 2346, 2435, 2555, 2752, 3044, 3403, 3751, - 4001, 4093, 4033, 3890, 3762, 3719, 3776, 3889, - 3988, 4022, 3986, 3919, 3869, 3867, 3905, 3949, - 3966, 3945, 3900, 3860, 3846, 3856, 3876, 3886, - 3875, 3851, 3826, 3814, 3814, 3820, 3821, 3813, - 3798, 3784, 3775, 3771, 3769, 3765, 3757, 3748, - 3739, 3732, 3727, 3721, 3714, 3707, 3700, 3693, - 3688, 3682, 3675, 3668, 3660, 3653, 3648, 3643, - 3637, 3630, 3623, 3616, 3609, 3604, 3599, 3593, - 3587, 3580, 3573, 3567, 3561, 3556, 3550, 3544, - 3537, 3531, 3525, 3520, 3514, 3508, 3502, 3495, - 3489, 3485, 3480, 3475, 3468, 3461, 3453, 3447, - 3444, 3442, 3439, 3432, 3421, 3410, 3403, 3402, - 3406, 3408, 3401, 3385, 3366, 3354, 3356, 3364, - 3361, 3329, 3261, 3173, 3096, 3056, 3052, 3041, - 2957, 2743, 2394, 1972, 1585, 1334, 1257, 1303, - 1355, 1292, 1057, 693, 319, 65, 1, 104, - 276, 399, 407, 308, 172, 79, 71, 133, - 211, 254, 242, 195, 154, 148, 179, 225, - 259, 264, 249, 231, 228, 244, 269, 289, - 296, 294, 290, 293, 303, 317, 329, 335, - 339, 342, 348, 356, 365, 373, 378, 384, - 390, 398, 406, 412, 417, 423, 429, 436, - 444, 452, 457, 462, 467, 474, 482, 491, - 498, 503, 507, 511, 517, 525, 533, 541, - 546, 550, 553, 559, 566, 574, 581, 587, - 591, 595, 600, 607, 615, 622, 627, 630, - 634, 639, 647, 656, 663, 666, 668, 670, - 676, 687, 698, 705, 706, 703, 702, 709, - 724, 741, 751, 749, 744, 750, 784, 851, - 933, 1004, 1040, 1045, 1056, 1128, 1305, 1590 - }, - { - 1930, 2238, 2433, 2476, 2394, 2256, 2144, 2105, - 2144, 2238, 2364, 2524, 2742, 3034, 3380, 3718, - 3963, 4056, 3998, 3854, 3717, 3664, 3711, 3815, - 3906, 3931, 3883, 3800, 3735, 3722, 3754, 3800, - 3823, 3808, 3767, 3727, 3709, 3718, 3738, 3749, - 3741, 3719, 3694, 3680, 3680, 3685, 3688, 3681, - 3668, 3654, 3644, 3640, 3639, 3636, 3630, 3621, - 3612, 3605, 3599, 3595, 3590, 3583, 3577, 3570, - 3563, 3557, 3552, 3546, 3540, 3534, 3528, 3522, - 3516, 3510, 3504, 3499, 3493, 3487, 3481, 3475, - 3469, 3464, 3459, 3454, 3448, 3441, 3435, 3430, - 3425, 3420, 3415, 3409, 3403, 3397, 3391, 3386, - 3381, 3377, 3373, 3367, 3360, 3353, 3347, 3342, - 3339, 3337, 3334, 3327, 3318, 3308, 3301, 3300, - 3302, 3304, 3299, 3286, 3269, 3256, 3256, 3267, - 3279, 3279, 3260, 3229, 3206, 3206, 3222, 3215, - 3126, 2905, 2548, 2112, 1700, 1414, 1299, 1317, - 1359, 1305, 1090, 741, 366, 95, 8, 98, - 274, 421, 460, 390, 272, 185, 178, 244, - 333, 390, 389, 345, 299, 285, 311, 358, - 395, 405, 390, 369, 362, 374, 399, 423, - 433, 431, 424, 422, 430, 445, 459, 468, - 471, 472, 474, 480, 489, 499, 507, 513, - 517, 521, 526, 532, 540, 547, 554, 560, - 564, 569, 574, 580, 588, 595, 601, 606, - 610, 614, 620, 628, 635, 641, 646, 650, - 654, 660, 667, 674, 680, 684, 688, 692, - 698, 706, 713, 720, 725, 728, 731, 735, - 742, 749, 757, 763, 766, 768, 770, 774, - 781, 791, 800, 806, 807, 805, 805, 810, - 822, 837, 849, 850, 842, 831, 831, 847, - 875, 897, 900, 887, 890, 961, 1146, 1451 - }, - { - 1822, 2159, 2358, 2359, 2187, 1935, 1729, 1660, - 1748, 1944, 2173, 2384, 2578, 2797, 3076, 3406, - 3722, 3936, 3993, 3904, 3749, 3626, 3602, 3675, - 3786, 3859, 3855, 3785, 3700, 3651, 3657, 3700, - 3741, 3751, 3727, 3687, 3656, 3646, 3650, 3659, - 3663, 3663, 3658, 3649, 3631, 3606, 3585, 3582, - 3593, 3578, 3461, 3167, 2663, 2004, 1324, 791, - 523, 533, 713, 896, 937, 789, 517, 255, - 120, 153, 302, 463, 547, 526, 439, 354, - 326, 364, 434, 493, 512, 493, 459, 437, - 444, 490, 578, 707, 867, 1029, 1160, 1240, - 1291, 1382, 1603, 2014, 2596, 3241, 3789, 4095, - 4095, 3955, 3706, 3535, 3516, 3626, 3773, 3861, - 3845, 3751, 3647, 3594, 3612, 3670, 3721, 3729, - 3695, 3646, 3611, 3606, 3620, 3635, 3639, 3631, - 3619, 3607, 3596, 3582, 3569, 3563, 3568, 3562, - 3496, 3314, 2985, 2539, 2067, 1688, 1485, 1459, - 1518, 1522, 1364, 1025, 593, 215, 17, 36, - 209, 409, 525, 511, 405, 292, 243, 278, - 363, 439, 465, 439, 393, 365, 371, 404, - 440, 460, 461, 454, 450, 453, 457, 459, - 465, 480, 505, 528, 532, 520, 534, 650, - 946, 1452, 2111, 2787, 3315, 3577, 3568, 3392, - 3216, 3177, 3319, 3576, 3822, 3946, 3913, 3774, - 3630, 3561, 3591, 3679, 3759, 3781, 3742, 3674, - 3619, 3602, 3618, 3648, 3669, 3664, 3623, 3539, - 3408, 3240, 3068, 2932, 2857, 2818, 2740, 2521, - 2095, 1481, 800, 227, 0, 0, 117, 404, - 599, 625, 507, 346, 249, 263, 361, 470, - 526, 507, 444, 389, 379, 415, 469, 508, - 516, 500, 479, 470, 476, 492, 511, 530, - 546, 554, 547, 534, 539, 608, 782, 1071 - }, - { - 1438, 1802, 2085, 2246, 2311, 2358, 2470, 2684, - 2967, 3233, 3400, 3439, 3392, 3352, 3401, 3559, - 3770, 3922, 3907, 3674, 3257, 2764, 2325, 2036, - 1925, 1934, 1949, 1855, 1581, 1144, 640, 205, - 0, 0, 90, 311, 476, 519, 446, 323, - 232, 221, 285, 380, 451, 465, 424, 364, - 336, 393, 574, 892, 1319, 1788, 2203, 2482, - 2594, 2586, 2568, 2660, 2928, 3341, 3782, 4095, - 4095, 4075, 3782, 3454, 3204, 3083, 3078, 3117, - 3110, 2972, 2654, 2160, 1551, 939, 454, 193, - 180, 346, 562, 698, 685, 541, 357, 231, - 221, 313, 442, 534, 546, 489, 409, 371, - 429, 611, 914, 1300, 1699, 2032, 2238, 2310, - 2312, 2356, 2547, 2924, 3424, 3907, 4095, 4095, - 4095, 3905, 3706, 3642, 3716, 3854, 3962, 3978, - 3897, 3764, 3637, 3559, 3541, 3561, 3573, 3514, - 3323, 2958, 2424, 1795, 1194, 758, 567, 611, - 781, 927, 927, 752, 471, 216, 112, 221, - 527, 949, 1386, 1751, 1998, 2123, 2169, 2206, - 2317, 2560, 2939, 3393, 3809, 4076, 4095, 4017, - 3816, 3651, 3600, 3666, 3787, 3882, 3898, 3835, - 3738, 3664, 3648, 3689, 3751, 3780, 3724, 3541, - 3219, 2788, 2317, 1900, 1622, 1511, 1518, 1534, - 1441, 1178, 777, 352, 44, 0, 84, 364, - 673, 906, 1015, 1018, 983, 997, 1139, 1458, - 1952, 2560, 3172, 3658, 3919, 3932, 3765, 3549, - 3413, 3427, 3571, 3757, 3884, 3894, 3801, 3670, - 3576, 3562, 3622, 3704, 3742, 3675, 3466, 3115, - 2664, 2191, 1791, 1542, 1461, 1486, 1498, 1378, - 1076, 640, 206, 0, 0, 0, 219, 401, - 456, 387, 264, 172, 162, 234, 348, 458, - 535, 571, 575, 577, 624, 783, 1118, 1646 - }, - { - 2301, 2928, 3333, 3373, 3033, 2452, 1865, 1493, - 1442, 1663, 2005, 2313, 2518, 2665, 2852, 3153, - 3549, 3931, 4095, 4095, 4015, 3777, 3611, 3599, - 3729, 3902, 3989, 3888, 3565, 3054, 2440, 1832, - 1333, 1019, 921, 1018, 1236, 1473, 1634, 1670, - 1597, 1492, 1459, 1587, 1911, 2402, 2971, 3507, - 3906, 4095, 4095, 3979, 3794, 3651, 3606, 3663, - 3772, 3860, 3861, 3745, 3531, 3271, 3030, 2857, - 2766, 2729, 2688, 2577, 2343, 1979, 1529, 1083, - 755, 639, 778, 1144, 1650, 2178, 2619, 2906, - 3031, 3037, 2999, 2995, 3075, 3251, 3484, 3711, - 3863, 3901, 3831, 3701, 3581, 3529, 3561, 3646, - 3713, 3681, 3488, 3115, 2598, 2022, 1495, 1119, - 953, 989, 1154, 1335, 1429, 1385, 1227, 1048, - 966, 1077, 1417, 1945, 2565, 3155, 3609, 3865, - 3918, 3816, 3642, 3486, 3414, 3449, 3561, 3677, - 3707, 3580, 3275, 2832, 2339, 1906, 1614, 1487, - 1476, 1481, 1397, 1168, 815, 428, 124, 0, - 39, 206, 385, 483, 459, 345, 219, 175, - 284, 577, 1039, 1614, 2212, 2729, 3073, 3189, - 3091, 2856, 2600, 2431, 2402, 2488, 2603, 2635, - 2498, 2166, 1676, 1119, 600, 213, 13, 0, - 122, 298, 439, 488, 436, 328, 239, 239, - 367, 610, 914, 1208, 1430, 1557, 1606, 1632, - 1707, 1889, 2197, 2596, 3001, 3304, 3414, 3289, - 2955, 2496, 2023, 1636, 1390, 1289, 1284, 1301, - 1266, 1133, 903, 621, 360, 192, 155, 237, - 381, 510, 564, 526, 434, 362, 394, 590, - 967, 1485, 2058, 2579, 2949, 3113, 3078, 2918, - 2742, 2651, 2695, 2848, 3022, 3101, 2993, 2661, - 2141, 1525, 933, 469, 203, 144, 248, 430, - 595, 669, 630, 513, 396, 370, 495, 776 - }, - { - 1160, 1558, 1882, 2075, 2129, 2081, 1993, 1922, - 1910, 1972, 2109, 2320, 2600, 2941, 3319, 3683, - 3966, 4095, 4081, 3913, 3676, 3464, 3347, 3341, - 3404, 3455, 3411, 3223, 2890, 2460, 2009, 1619, - 1361, 1280, 1385, 1646, 1996, 2354, 2641, 2812, - 2869, 2859, 2854, 2918, 3084, 3334, 3613, 3849, - 3981, 3984, 3874, 3700, 3521, 3385, 3311, 3292, - 3298, 3297, 3266, 3197, 3098, 2989, 2889, 2816, - 2779, 2772, 2782, 2785, 2765, 2714, 2644, 2578, - 2543, 2553, 2605, 2680, 2751, 2800, 2819, 2817, - 2812, 2824, 2866, 2939, 3034, 3134, 3218, 3270, - 3289, 3288, 3293, 3331, 3413, 3530, 3649, 3724, - 3713, 3594, 3373, 3089, 2795, 2552, 2395, 2329, - 2318, 2299, 2210, 2014, 1726, 1409, 1156, 1055, - 1157, 1455, 1893, 2379, 2820, 3146, 3327, 3373, - 3330, 3258, 3219, 3252, 3362, 3517, 3652, 3689, - 3568, 3269, 2828, 2331, 1884, 1577, 1442, 1438, - 1465, 1407, 1193, 828, 402, 46, 0, 0, - 125, 399, 622, 728, 719, 659, 630, 701, - 903, 1227, 1633, 2062, 2447, 2716, 2815, 2721, - 2457, 2094, 1725, 1436, 1272, 1224, 1237, 1237, - 1165, 999, 759, 500, 284, 163, 157, 254, - 411, 577, 708, 781, 802, 799, 805, 849, - 944, 1083, 1245, 1396, 1508, 1561, 1556, 1509, - 1453, 1416, 1413, 1442, 1483, 1513, 1517, 1498, - 1471, 1455, 1460, 1482, 1506, 1511, 1477, 1395, - 1271, 1120, 970, 850, 779, 761, 775, 788, - 764, 687, 566, 440, 360, 369, 492, 716, - 1001, 1290, 1526, 1676, 1740, 1752, 1775, 1869, - 2067, 2355, 2672, 2924, 3025, 2923, 2624, 2186, - 1702, 1263, 940, 761, 716, 758, 829, 869, - 839, 732, 578, 440, 394, 499, 773, 1173 - }, - { - 1604, 1952, 2125, 2096, 1917, 1698, 1557, 1568, - 1730, 1980, 2235, 2444, 2616, 2802, 3057, 3384, - 3720, 3959, 4001, 3808, 3418, 2926, 2441, 2043, - 1773, 1639, 1642, 1783, 2052, 2415, 2807, 3142, - 3354, 3421, 3383, 3316, 3301, 3384, 3557, 3766, - 3936, 3997, 3904, 3646, 3246, 2755, 2247, 1808, - 1516, 1428, 1563, 1892, 2349, 2844, 3284, 3602, - 3765, 3787, 3713, 3611, 3543, 3547, 3625, 3740, - 3828, 3822, 3671, 3361, 2918, 2406, 1913, 1533, - 1343, 1384, 1654, 2103, 2645, 3178, 3611, 3883, - 3977, 3918, 3765, 3588, 3448, 3380, 3383, 3423, - 3444, 3386, 3204, 2888, 2466, 2006, 1598, 1332, - 1274, 1445, 1818, 2323, 2864, 3348, 3698, 3876, - 3880, 3744, 3522, 3278, 3068, 2929, 2868, 2859, - 2855, 2797, 2641, 2374, 2027, 1668, 1386, 1260, - 1335, 1610, 2038, 2546, 3048, 3471, 3753, 3854, - 3752, 3459, 3018, 2512, 2039, 1690, 1508, 1471, - 1494, 1468, 1309, 1000, 600, 223, 0, 0, - 199, 601, 1096, 1595, 2026, 2341, 2509, 2512, - 2352, 2051, 1667, 1277, 962, 771, 712, 743, - 794, 799, 718, 557, 360, 194, 128, 211, - 461, 860, 1354, 1864, 2303, 2591, 2674, 2538, - 2211, 1758, 1268, 829, 511, 346, 324, 398, - 502, 571, 567, 489, 374, 286, 294, 445, - 756, 1198, 1708, 2197, 2573, 2761, 2718, 2450, - 2004, 1467, 936, 505, 234, 140, 198, 350, - 526, 665, 733, 730, 691, 670, 728, 909, - 1224, 1644, 2102, 2508, 2771, 2829, 2658, 2286, - 1785, 1247, 767, 419, 241, 236, 370, 590, - 832, 1040, 1178, 1238, 1246, 1250, 1307, 1464, - 1731, 2077, 2434, 2715, 2841, 2768, 2496, 2070, - 1564, 1062, 639, 358, 258, 353, 626, 1023 - }, - { - 1459, 1835, 2070, 2132, 2053, 1917, 1822, 1830, - 1935, 2069, 2134, 2052, 1809, 1462, 1112, 856, - 753, 809, 989, 1242, 1520, 1786, 2008, 2165, - 2250, 2284, 2320, 2424, 2645, 2975, 3348, 3656, - 3800, 3736, 3491, 3151, 2813, 2543, 2368, 2279, - 2266, 2335, 2508, 2797, 3180, 3591, 3941, 4095, - 4095, 4001, 3709, 3357, 3008, 2711, 2495, 2379, - 2371, 2469, 2653, 2888, 3127, 3325, 3453, 3499, - 3469, 3384, 3267, 3141, 3024, 2933, 2875, 2852, - 2857, 2879, 2902, 2914, 2911, 2895, 2876, 2865, - 2869, 2893, 2932, 2982, 3032, 3073, 3098, 3102, - 3081, 3039, 2981, 2918, 2860, 2817, 2794, 2790, - 2799, 2812, 2822, 2822, 2814, 2801, 2791, 2794, - 2821, 2877, 2961, 3064, 3168, 3249, 3284, 3255, - 3155, 2990, 2780, 2556, 2355, 2216, 2168, 2231, - 2407, 2675, 2999, 3326, 3602, 3777, 3815, 3701, - 3447, 3087, 2677, 2284, 1976, 1805, 1794, 1931, - 2173, 2465, 2751, 2990, 3159, 3244, 3232, 3108, - 2868, 2534, 2157, 1813, 1575, 1475, 1483, 1521, - 1493, 1335, 1053, 723, 453, 338, 413, 647, - 962, 1276, 1534, 1715, 1821, 1850, 1785, 1606, - 1307, 918, 510, 170, 0, 0, 120, 405, - 750, 1095, 1391, 1607, 1723, 1730, 1631, 1447, - 1214, 977, 781, 655, 610, 638, 722, 838, - 962, 1077, 1168, 1226, 1250, 1244, 1222, 1199, - 1186, 1189, 1205, 1225, 1237, 1232, 1208, 1167, - 1118, 1069, 1028, 1004, 1000, 1020, 1061, 1118, - 1181, 1240, 1284, 1307, 1310, 1299, 1285, 1276, - 1277, 1288, 1302, 1309, 1302, 1272, 1218, 1140, - 1044, 943, 858, 814, 835, 936, 1111, 1334, - 1562, 1753, 1871, 1901, 1837, 1685, 1451, 1149, - 811, 492, 267, 210, 362, 705, 1162, 1620 - } -}; diff --git a/util/sample_parser.py b/util/sample_parser.py new file mode 100644 index 000000000000..a1d6f6f92d84 --- /dev/null +++ b/util/sample_parser.py @@ -0,0 +1,39 @@ +#! /bin/python +# +# Copyright 2019 Jack Humbert +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import wave, struct, sys + +waveFile = wave.open(sys.argv[1], 'r') +# print(str(waveFile.getparams())) +# sys.exit() + +if (waveFile.getsampwidth() != 2): + raise(Exception("This script currently only works with 16bit audio files")) + +length = waveFile.getnframes() +out = "#define DAC_SAMPLE_CUSTOM_LENGTH " + str(length) + "\n\n" +out += "static const dacsample_t dac_sample_custom[" + str(length) + "] = {" +for i in range(0,length): + if (i % 8 == 0): + out += "\n " + waveData = waveFile.readframes(1) + data = struct.unpack(". +# + +import wave, struct, sys + +waveFile = wave.open(sys.argv[1], 'r') + +length = waveFile.getnframes() +out = "#define DAC_WAVETABLE_CUSTOM_LENGTH " + str(int(length / 256)) + "\n\n" +out += "static const dacsample_t dac_wavetable_custom[" + str(int(length / 256)) + "][256] = {" +for i in range(0,length): + if (i % 8 == 0): + out += "\n " + if (i % 256 == 0): + out = out[:-2] + out += "{\n " + waveData = waveFile.readframes(1) + data = struct.unpack("