Помогите добавить пару строк к коду.

Astronaut
Offline
Зарегистрирован: 10.02.2016

Взываю к помощи людей знающих. Нужно дописать к коду индикацию BPM отдельным светодиодом. 
Код в данном случае для драм машинки.

Ранее уже создавал топик на тему создания семплера из этих исходников.
Вопрос с семплером уже решен на другой платформе, но и данный проект тоже реализовал, так как было задумано автором. 
Все работает, прям не нарадуюсь. Но встал вопрос с синхронизацией, и в общем-то был найден ответ, причем очень легко реализуемый. 

Гуру меня сейчас закидают помидорами за столь извращенное решение, но я старался максимально избежать сильного вмешательства в код, ибо никто серьезно помогать за бесплатно не станет. А в данном случае прошу лишь пару строк, ибо все что нужно для индикации BPM в коде присудствует. 
В общем этот самый диод мне нужен не только для того что бы он красиво моргал, а еще и для запуска 555 таймера импульсом от которого сам загорается. Таймер в свою очередь будет выдавать короткую звуковую волну которая идет в sync in разьем volca keys. Таким образом синтезатор синхронизируется с драм машинкой и работает в заданном ей BPM. 

Код:
https://bitbucket.org/Cerkvenik/arduino-drum-machine/src/0fdc2bc43b19af556b0ed916bd397dc13374a039/DrumMachine.ino?fileviewer=file-view-default

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

Код, вообще-то, вставляется вот так: ПРАВИЛА

, а не кликается по непонятным ссылкам, где можно "подхватить" что угодно.

Astronaut
Offline
Зарегистрирован: 10.02.2016

Серьезно? Подхватить с битбакета? Поднял настроение)

Но вообще да, стоило по человечески код вставить.

 

/*

  Created by Mitja Cerkvenik (cc) 2012 - http://www.mitjacerkvenik.com
  mitjacerkvenik@gmail.com
  
*/

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>

uint16_t syncPhaseAcc;
uint16_t syncPhaseInc;
uint16_t grainPhaseAcc;
uint16_t grainPhaseInc;
uint16_t grainAmp;
uint8_t grainDecay;
uint16_t grain2PhaseAcc;
uint16_t grain2PhaseInc;

uint8_t grain2Decay;
uint16_t grainPhaseAccSN;
uint16_t grainPhaseIncSN;
uint16_t grainPhaseIncSNtmp;
uint16_t grainAmpSN;
uint8_t grainDecaySN;
uint16_t grain2PhaseAccSN;
uint16_t grain2PhaseIncSN;
uint16_t grain2PhaseIncSNtmp;
uint16_t grain2AmpSN;
uint8_t grain2DecaySN;
uint16_t wave;
uint8_t sinusW;
uint8_t squareW;
uint8_t noiseW;
uint8_t sawW;
uint8_t triangleW;
uint16_t index;
long time = 0;
long timeSN = 400;
int duration;
int attack;
int sustain;
int release;
int attackSN;
int sustainSN;
int releaseSN;
int releaseHH;
int inkrement;
uint16_t toneDecaySN;
uint16_t toneDecaySNtmp;
uint16_t toneDecay;
uint16_t fazaInc = 0;
uint16_t grain_freq_ctrl;
uint16_t grain_freq_ctrlSN;
uint16_t grain2_freq_ctrlSN;
uint16_t values[5];
uint16_t hihatInc = 0;
uint16_t grainDecayHH;

uint16_t grainDecay_tmp;
uint16_t toneDecay_tmp;  
uint16_t grain_freq_ctrl_tmp; 
uint16_t grainPhaseInc_tmp;
uint16_t grainDecayHH_tmp;
uint16_t grain_freq_ctrlHH;
uint16_t grain_freq_ctrlHH_tmp;
uint16_t grainPhaseIncHH;

uint16_t grain2DecaySN_tmp;
uint16_t grainDecaySN_tmp;
uint16_t toneDecaySN_tmp;
uint16_t grain_freq_ctrlSN_tmp;
uint16_t grain_freq_ctrlSNtmp;

boolean rhythm [3][16];
boolean kickStart;
boolean snareStart;
boolean hihatStart;


int instrument;
uint8_t led = 0;

uint16_t tempoInc;             
uint16_t interval;
uint8_t sixteenth;

uint8_t pin22_29ki;
uint8_t pin30_37ki;
uint8_t pin22_29sn;
uint8_t pin30_37sn;
uint8_t pin22_29hh;
uint8_t pin30_37hh;

long PrevTimer = 0;
long momentarySwitchTime = 200;

// Define analog inputs for the potentiometers
#define Frequency0  (0)
#define Decay1      (1)
#define Decay2      (2)
#define Attack3     (3)

#define PWM_PIN       3
#define LED_PIN       13
#define LED_PORT      PORTB
#define LED_BIT 7
#define PWM_VALUE OCR3C //OCR3C is the compare register which defines the PWM output
#define PWM_INTERRUPT TIMER3_OVF_vect 


PROGMEM uint8_t waveTable[] =
{  
   //cosinus table (0-255)
   128, 131, 134, 137, 140, 143, 146, 149, 152, 155, 158, 162, 165, 167, 170, 173, 176, 179, 182, 185, 188, 190, 193, 196, 198, 201, 203, 206, 208, 211, 213, 215, 218, 220, 222, 224, 226, 228, 230, 232, 234, 235, 237, 238, 240, 241, 243, 244, 245, 246, 248, 249, 250, 250, 251, 252, 253, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 253, 252, 251, 250, 250, 249, 248, 246, 245, 244, 243, 241, 240, 238, 237, 235, 234, 232, 230, 228, 226, 224, 222, 220, 218, 215, 213, 211, 208, 206, 203, 201, 198, 196, 193, 190, 188, 185, 182, 179, 176, 173, 170, 167, 165, 162, 158, 155, 152, 149, 146, 143, 140, 137, 134, 131, 128, 124, 121, 118, 115, 112, 109, 106, 103, 100, 97, 93, 90, 88, 85, 82, 79, 76, 73, 70, 67, 65, 62, 59, 57, 54, 52, 49, 47, 44, 42, 40, 37, 35, 33, 31, 29, 27, 25, 23, 21, 20, 18, 17, 15, 14, 12, 11, 10, 9, 7, 6, 5, 5, 4, 3, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 4, 5, 5, 6, 7, 9, 10, 11, 12, 14, 15, 17, 18, 20, 21, 23, 25, 27, 29, 31, 33, 35, 37, 40, 42, 44, 47, 49, 52, 54, 57, 59, 62, 65, 67, 70, 73, 76, 79, 82, 85, 88, 90, 93, 97, 100, 103, 106, 109, 112, 115, 118, 121, 124 ,
   //random table (256-1279)
   210, 231, 60, 244, 12, 92, 243, 126, 86, 108, 37, 147, 13, 110, 45, 250, 207, 19, 227, 78, 117, 62, 235, 124, 165, 177, 166, 118, 80, 237, 35, 140, 28, 101, 179, 162, 12, 65, 198, 232, 129, 17, 105, 205, 90, 46, 51, 179, 90, 207, 152, 30, 128, 80, 17, 6, 190, 98, 224, 163, 220, 195, 101, 12, 236, 207, 43, 219, 106, 254, 178, 99, 109, 155, 160, 53, 148, 119, 18, 121, 9, 116, 111, 234, 92, 153, 212, 194, 127, 223, 87, 101, 186, 194, 255, 29, 16, 62, 181, 247, 93, 236, 200, 122, 183, 118, 29, 8, 222, 59, 49, 153, 67, 150, 159, 217, 202, 81, 12, 66, 84, 29, 174, 100, 86, 65, 43, 65, 242, 4, 225, 207, 117, 151, 241, 253, 134, 8, 42, 147, 60, 104, 56, 15, 10, 21, 198, 135, 96, 133, 41, 113, 73, 183, 124, 6, 200, 190, 133, 100, 173, 105, 40, 78, 10, 61, 104, 139, 225, 218, 233, 152, 141, 248, 176, 127, 244, 201, 84, 124, 214, 26, 127, 216, 1, 181, 138, 232, 71, 203, 86, 161, 203, 227, 106, 38, 76, 178, 129, 186, 232, 81, 151, 105, 209, 97, 219, 5, 81, 242, 117, 197, 130, 195, 123, 57, 241, 87, 219, 23, 105, 153, 172, 164, 89, 227, 212, 127, 84, 170, 11, 164, 201, 139, 12, 92, 146, 244, 166, 165, 223, 176, 214, 240, 201, 162, 123, 95, 65, 160, 43, 133, 182, 168, 173, 175, 116, 46, 26, 253, 198, 57, 99, 26, 214, 26, 129, 58, 188, 191, 54, 200, 198, 10, 81, 87, 249, 182, 101, 74, 198, 219, 121, 94, 162, 187, 214, 170, 236, 95, 160, 91, 2, 105, 142, 99, 193, 67, 64, 99, 30, 86, 40, 163, 70, 203, 175, 202, 249, 6, 250, 65, 174, 152, 139, 99, 12, 87, 35, 105, 83, 208, 39, 7, 45, 249, 233, 45, 181, 64, 236, 52, 188, 82, 194, 20, 52, 219, 252, 235, 141, 32, 201, 104, 8, 57, 38, 153, 236, 70, 158, 161, 113, 35, 216, 101, 36, 76, 197, 2, 17, 57, 76, 228, 156, 38, 64, 93, 63, 98, 109, 255, 254, 75, 253, 102, 85, 205, 243, 26, 74, 241, 91, 154, 200, 145, 97, 140, 182, 155, 255, 227, 235, 87, 227, 73, 37, 146, 21, 205, 129, 132, 29, 61, 29, 149, 8, 23, 131, 177, 159, 126, 55, 216, 122, 142, 229, 253, 239, 81, 201, 55, 185, 47, 216, 160, 95, 89, 5, 97, 83, 11, 12, 26, 163, 213, 128, 83, 56, 141, 137, 93, 199, 201, 169, 80, 252, 159, 145, 204, 164, 95, 16, 123, 221, 162, 229, 250, 227, 157, 28, 29, 245, 35, 116, 7, 143, 62, 102, 20, 233, 184, 158, 32, 94, 215, 221, 124, 129, 203, 59, 111, 32, 231, 209, 146, 209, 79, 248, 7, 80, 163, 38, 109, 3, 156, 117, 250, 179, 49, 80, 128, 229, 251, 161, 219, 195, 187, 221, 168, 237, 167, 150, 169, 69, 100, 12, 30, 166, 63, 159, 249, 106, 86, 164, 77, 20, 62, 74, 31, 29, 158, 175, 76, 252, 222, 204, 145, 177, 66, 239, 145, 235, 141, 73, 193, 116, 223, 253, 144, 110, 141, 23, 173, 23, 232, 15, 232, 18, 97, 189, 246, 212, 65, 220, 192, 36, 254, 204, 101, 222, 211, 61, 73, 109, 103, 71, 50, 240, 95, 147, 5, 190, 12, 38, 87, 228, 13, 111, 242, 11, 112, 217, 72, 65, 217, 15, 73, 213, 91, 33, 166, 246, 218, 177, 0, 101, 10, 20, 71, 89, 227, 85, 211, 70, 115, 21, 109, 33, 225, 42, 178, 43, 30, 133, 34, 231, 252, 109, 22, 134, 138, 35, 210, 193, 196, 6, 33, 59, 37, 251, 179, 29, 148, 67, 66, 186, 39, 243, 193, 47, 71, 133, 187, 255, 200, 23, 112, 31, 197, 122, 171, 201, 93, 174, 139, 62, 186, 22, 247, 56, 1, 50, 217, 144, 196, 134, 43, 80, 142, 195, 78, 144, 40, 31, 176, 238, 242, 210, 124, 208, 93, 174, 239, 135, 61, 143, 60, 181, 189, 37, 67, 108, 5, 235, 77, 50, 172, 129, 123, 9, 250, 111, 245, 42, 28, 197, 242, 102, 166, 159, 84, 208, 241, 83, 57, 207, 178, 125, 122, 10, 25, 253, 101, 50, 227, 120, 91, 238, 66, 4, 213, 103, 246, 238, 87, 212, 8, 7, 153, 63, 20, 106, 11, 80, 182, 155, 231, 252, 42, 164, 193, 182, 143, 2, 40, 215, 53, 216, 183, 188, 255, 213, 98, 18, 82, 130, 58, 22, 236, 56, 204, 217, 212, 119, 218, 251, 209, 212, 193, 241, 249, 85, 79, 165, 96, 202, 198, 62, 114, 156, 179, 27, 47, 71, 137, 148, 161, 121, 59, 209, 251, 98, 80, 81, 99, 255, 205, 123, 86, 142, 170, 148, 89, 62, 52, 52, 179, 82, 153, 112, 80, 201, 106, 15, 38, 216, 240, 155, 34, 48, 65, 18, 171, 144, 224, 125, 215, 13, 70, 213, 106, 214, 32, 42, 138, 181, 11, 130, 16, 155, 19, 207, 90, 114, 63, 143, 116, 209, 168, 51, 13, 91, 139, 199, 53, 98, 240, 202, 179, 179, 126, 116, 107, 86, 122, 56, 245, 28, 164, 159, 173, 17, 149, 230, 219, 211, 217, 255, 70, 242, 73, 190, 169, 85, 237, 181, 134, 17, 152, 142, 170, 53, 96, 115, 136, 45, 235, 94, 194, 249, 211, 123, 42, 130, 65, 219, 76, 45, 1, 225, 156, 1, 98, 54, 113, 166, 82, 50, 252, 50, 38, 27, 72, 11, 86, 55, 104, 79, 19, 45, 173, 97, 47, 60, 65, 15, 40, 117, 101, 176, 239, 119, 244, 55, 210, 97, 215, 195, 100, 67, 221, 76, 17, 195, 116, 173, 217, 19, 159, 249, 143, 134, 226, 175, 220, 43, 32, 65, 247, 47, 115, 82, 179, 204, 222, 122, 107, 57, 220, 224, 11, 17, 86, 202, 98, 216, 179, 8, 67, 83, 85, 68, 60, 104, 203, 149, 50, 53, 116, 211, 76, 143, 255,
   //hihat table (sampled) (1280-5375)
   128, 128, 128, 128, 123, 125, 133, 132, 133, 121, 130, 131, 132, 123, 122, 131, 131, 129, 138, 106, 126, 143, 140, 114, 124, 128, 134, 145, 83, 122, 156, 146, 136, 102, 98, 170, 135, 92, 124, 165, 154, 70, 108, 173, 143, 129, 87, 122, 164, 149, 91, 104, 144, 149, 150, 96, 99, 145, 168, 124, 75, 136, 159, 147, 109, 91, 142, 160, 117, 109, 128, 130, 146, 150, 79, 113, 167, 165, 87, 75, 174, 144, 142, 121, 62, 159, 160, 115, 120, 132, 128, 141, 140, 81, 123, 159, 150, 138, 61, 123, 174, 151, 97, 100, 142, 148, 133, 130, 96, 138, 164, 98, 98, 177, 151, 70, 110, 158, 139, 134, 131, 112, 126, 122, 121, 142, 134, 158, 109, 72, 152, 163, 129, 98, 129, 169, 119, 77, 143, 155, 120, 107, 142, 147, 136, 105, 106, 135, 143, 138, 138, 102, 121, 149, 119, 112, 136, 145, 139, 128, 90, 118, 153, 139, 124, 141, 128, 99, 126, 144, 127, 115, 148, 147, 84, 119, 173, 142, 78, 119, 153, 156, 116, 88, 134, 153, 156, 106, 72, 166, 150, 152, 77, 96, 171, 162, 116, 64, 155, 157, 130, 145, 59, 131, 175, 151, 93, 80, 167, 146, 142, 118, 78, 141, 164, 129, 94, 148, 153, 90, 106, 158, 145, 142, 82, 118, 173, 154, 74, 107, 161, 132, 122, 136, 132, 106, 120, 164, 138, 86, 122, 148, 150, 127, 95, 124, 146, 128, 149, 116, 99, 137, 132, 137, 128, 136, 126, 106, 141, 135, 125, 123, 128, 131, 129, 128, 125, 128, 133, 124, 123, 133, 129, 127, 127, 141, 122, 105, 150, 145, 92, 129, 179, 95, 82, 153, 170, 132, 78, 123, 155, 152, 124, 80, 134, 169, 134, 90, 119, 154, 139, 107, 114, 142, 147, 150, 84, 99, 159, 146, 118, 145, 111, 95, 166, 164, 64, 106, 177, 144, 129, 84, 120, 156, 155, 130, 66, 132, 168, 156, 85, 91, 171, 139, 150, 91, 85, 173, 150, 134, 92, 110, 144, 156, 104, 114, 146, 159, 118, 77, 141, 146, 129, 132, 136, 113, 120, 136, 130, 125, 120, 129, 163, 111, 86, 145, 155, 126, 112, 127, 138, 136, 115, 118, 150, 161, 79, 85, 179, 150, 103, 111, 139, 137, 140, 152, 67, 113, 176, 132, 148, 81, 100, 174, 149, 127, 78, 129, 159, 151, 109, 89, 147, 147, 121, 123, 138, 129, 110, 124, 170, 118, 83, 136, 154, 145, 109, 104, 145, 139, 114, 119, 145, 133, 154, 93, 88, 163, 163, 114, 92, 139, 142, 120, 127, 145, 120, 111, 165, 133, 62, 142, 160, 154, 99, 84, 162, 163, 125, 78, 123, 155, 139, 135, 118, 97, 140, 175, 106, 72, 157, 154, 137, 116, 93, 141, 162, 131, 88, 118, 160, 128, 107, 131, 159, 142, 70, 117, 169, 132, 124, 123, 117, 139, 134, 131, 112, 125, 141, 138, 121, 106, 134, 137, 163, 117, 51, 156, 169, 148, 74, 116, 169, 157, 93, 81, 164, 170, 107, 78, 151, 152, 137, 115, 98, 143, 155, 134, 95, 110, 160, 138, 109, 120, 136, 134, 140, 114, 117, 124, 154, 139, 93, 121, 143, 139, 127, 121, 125, 146, 146, 88, 101, 168, 139, 110, 119, 141, 137, 116, 111, 142, 139, 145, 113, 84, 162, 144, 155, 74, 95, 177, 153, 113, 84, 153, 148, 141, 111, 89, 143, 152, 125, 111, 123, 144, 140, 133, 98, 120, 156, 146, 99, 108, 148, 141, 121, 114, 125, 145, 134, 150, 81, 113, 168, 141, 120, 88, 152, 146, 103, 117, 148, 136, 154, 89, 93, 156, 164, 117, 88, 135, 153, 137, 131, 90, 129, 159, 145, 101, 91, 151, 174, 103, 85, 148, 153, 120, 142, 108, 104, 155, 147, 127, 88, 134, 172, 103, 92, 154, 144, 144, 126, 71, 140, 158, 144, 131, 69, 135, 167, 124, 124, 119, 128, 134, 139, 137, 79, 137, 168, 118, 94, 142, 141, 124, 128, 143, 106, 125, 139, 140, 122, 97, 137, 141, 126, 132, 154, 97, 105, 145, 152, 127, 103, 128, 133, 130, 136, 141, 117, 103, 140, 154, 117, 102, 138, 141, 122, 117, 144, 138, 110, 127, 144, 125, 119, 127, 139, 131, 122, 113, 127, 130, 150, 135, 98, 121, 143, 138, 120, 143, 136, 82, 124, 158, 148, 133, 73, 131, 162, 141, 136, 74, 121, 164, 136, 129, 114, 108, 151, 133, 158, 89, 81, 166, 176, 105, 74, 151, 156, 125, 149, 75, 119, 176, 133, 94, 127, 149, 155, 95, 85, 158, 165, 132, 71, 131, 163, 133, 134, 95, 117, 159, 148, 113, 89, 138, 148, 132, 132, 128, 103, 130, 140, 135, 117, 122, 157, 115, 104, 132, 152, 135, 91, 126, 172, 132, 78, 127, 152, 137, 129, 124, 109, 144, 149, 91, 113, 153, 161, 112, 77, 152, 153, 127, 110, 129, 139, 128, 132, 139, 103, 100, 163, 163, 86, 105, 152, 162, 102, 99, 147, 149, 132, 99, 120, 182, 116, 62, 151, 162, 146, 101, 84, 158, 155, 126, 94, 134, 148, 141, 111, 102, 135, 164, 141, 73, 113, 167, 137, 147, 94, 95, 158, 156, 136, 79, 116, 164, 141, 142, 71, 123, 175, 152, 67, 115, 167, 157, 105, 74, 158, 160, 143, 69, 121, 170, 134, 127, 94, 134, 143, 159, 118, 58, 151, 166, 122, 140, 100, 109, 161, 137, 126, 92, 139, 148, 142, 104, 104, 152, 159, 86, 110, 150, 165, 112, 77, 155, 159, 142, 76, 108, 171, 135, 119, 123, 131, 126, 124, 145, 151, 64, 121, 192, 121, 83, 132, 151, 147, 117, 96, 135, 155, 122, 105, 128, 145, 142, 145, 65, 127, 167, 134, 111, 122, 136, 157, 105, 86, 159, 156, 131, 89, 114, 165, 126, 106, 156, 149, 81, 118, 153, 140, 110, 119, 141, 162, 108, 79, 155, 152, 133, 115, 96, 149, 140, 151, 108, 81, 144, 156, 129, 149, 85, 104, 169, 138, 130, 103, 118, 154, 133, 111, 126, 138, 130, 162, 90, 82, 161, 162, 117, 104, 128, 137, 132, 150, 129, 76, 133, 171, 129, 83, 139, 168, 104, 95, 156, 140, 129, 118, 114, 143, 153, 97, 102, 160, 149, 125, 88, 130, 144, 148, 136, 81, 122, 158, 142, 133, 87, 120, 177, 139, 73, 122, 160, 147, 114, 92, 153, 166, 92, 101, 143, 142, 130, 126, 140, 107, 121, 145, 135, 125, 105, 137, 142, 139, 101, 114, 149, 153, 140, 64, 120, 182, 129, 93, 126, 168, 129, 80, 135, 172, 121, 85, 140, 162, 131, 90, 120, 152, 141, 116, 120, 133, 130, 143, 146, 75, 113, 172, 142, 101, 111, 143, 145, 153, 82, 100, 172, 136, 138, 91, 118, 159, 141, 122, 91, 139, 155, 141, 98, 104, 153, 143, 109, 117, 140, 162, 110, 81, 157, 159, 110, 119, 125, 121, 142, 151, 104, 101, 147, 150, 149, 77, 108, 171, 135, 145, 73, 121, 168, 139, 112, 100, 147, 159, 133, 57, 140, 173, 149, 76, 106, 165, 147, 139, 69, 130, 164, 144, 123, 66, 156, 155, 137, 104, 102, 150, 152, 145, 68, 114, 172, 134, 118, 130, 122, 129, 139, 160, 73, 94, 179, 150, 127, 86, 132, 152, 119, 115, 141, 154, 106, 97, 143, 146, 138, 124, 103, 128, 151, 123, 117, 122, 135, 144, 150, 87, 104, 156, 142, 125, 148, 97, 101, 159, 149, 106, 115, 139, 132, 113, 145, 156, 80, 114, 163, 132, 126, 116, 121, 147, 132, 108, 123, 166, 132, 57, 142, 173, 119, 116, 127, 147, 142, 81, 118, 156, 130, 134, 138, 96, 123, 143, 148, 119, 108, 128, 134, 142, 144, 91, 120, 165, 130, 93, 143, 162, 93, 107, 141, 142, 128, 131, 128, 114, 134, 134, 132, 139, 96, 121, 156, 146, 109, 88, 143, 170, 136, 70, 125, 163, 133, 123, 125, 114, 157, 127, 79, 141, 158, 142, 106, 99, 146, 152, 116, 111, 127, 136, 138, 136, 129, 96, 123, 160, 135, 101, 148, 121, 109, 131, 139, 134, 125, 128, 137, 126, 110, 130, 147, 127, 103, 132, 138, 122, 131, 142, 133, 102, 120, 142, 142, 146, 89, 111, 146, 145, 139, 98, 116, 158, 159, 85, 89, 173, 136, 147, 101, 87, 165, 146, 115, 123, 135, 137, 121, 125, 130, 110, 133, 131, 135, 129, 142, 139, 79, 123, 173, 136, 91, 121, 153, 132, 116, 122, 128, 137, 139, 149, 76, 116, 172, 154, 86, 94, 164, 147, 137, 92, 107, 167, 157, 91, 96, 152, 146, 127, 123, 116, 136, 134, 130, 119, 122, 136, 144, 156, 49, 118, 184, 155, 82, 99, 166, 151, 130, 67, 141, 158, 144, 123, 72, 146, 159, 139, 113, 89, 146, 156, 135, 100, 121, 140, 124, 120, 135, 146, 146, 82, 107, 165, 136, 130, 116, 111, 142, 146, 145, 78, 104, 173, 136, 140, 98, 102, 163, 164, 89, 85, 170, 142, 133, 109, 108, 150, 135, 133, 121, 112, 163, 101, 102, 150, 145, 121, 147, 112, 98, 141, 138, 146, 128, 95, 132, 138, 131, 129, 133, 133, 122, 117, 133, 129, 126, 129, 131, 128, 127, 127, 129, 129, 128, 127, 122, 140, 131, 111, 121, 142, 135, 128, 125, 116, 137, 133, 133, 112, 124, 139, 141, 119, 110, 122, 164, 137, 64, 141, 171, 129, 87, 135, 163, 134, 88, 116, 154, 137, 120, 121, 134, 124, 127, 149, 112, 106, 142, 144, 139, 116, 97, 144, 157, 123, 92, 135, 147, 127, 108, 135, 138, 154, 110, 80, 150, 154, 126, 147, 85, 110, 169, 135, 128, 99, 134, 159, 105, 103, 152, 131, 139, 133, 90, 126, 151, 145, 106, 112, 164, 123, 101, 129, 144, 143, 115, 108, 134, 132, 148, 141, 87, 114, 154, 138, 126, 140, 104, 109, 154, 140, 130, 103, 121, 149, 147, 105, 106, 141, 135, 127, 150, 118, 99, 136, 151, 127, 109, 127, 131, 133, 153, 110, 100, 134, 145, 134, 149, 87, 107, 166, 134, 116, 121, 132, 151, 137, 70, 127, 169, 139, 98, 119, 144, 141, 114, 115, 133, 142, 141, 127, 85, 137, 155, 151, 92, 101, 145, 145, 130, 133, 107, 123, 167, 134, 59, 141, 165, 138, 94, 127, 147, 152, 105, 83, 156, 166, 118, 87, 133, 158, 129, 103, 122, 148, 130, 146, 126, 70, 149, 155, 140, 126, 74, 146, 164, 144, 69, 121, 166, 151, 113, 71, 163, 147, 149, 88, 96, 171, 136, 126, 110, 124, 142, 136, 126, 105, 134, 154, 137, 96, 102, 148, 146, 146, 112, 92, 143, 150, 142, 106, 103, 145, 151, 113, 106, 155, 146, 96, 117, 142, 148, 128, 103, 121, 137, 152, 134, 80, 136, 154, 153, 93, 93, 161, 153, 119, 95, 139, 149, 123, 115, 138, 152, 113, 88, 143, 151, 118, 122, 154, 110, 106, 157, 141, 99, 125, 134, 132, 134, 139, 120, 111, 134, 148, 119, 109, 135, 132, 128, 152, 114, 99, 137, 145, 150, 114, 79, 160, 143, 138, 110, 100, 151, 161, 119, 69, 148, 157, 130, 138, 95, 112, 154, 149, 113, 107, 132, 135, 148, 138, 77, 131, 160, 135, 124, 94, 138, 170, 99, 93, 157, 164, 101, 91, 157, 143, 145, 103, 91, 156, 154, 133, 92, 118, 147, 139, 145, 99, 106, 147, 149, 136, 100, 114, 149, 142, 111, 114, 140, 151, 123, 97, 133, 149, 127, 107, 130, 140, 145, 135, 74, 133, 162, 126, 118, 136, 135, 110, 111, 166, 116, 97, 148, 161, 120, 82, 143, 162, 113, 102, 143, 146, 139, 104, 109, 136, 142, 129, 133, 125, 116, 134, 128, 126, 134, 133, 121, 120, 125, 132, 159, 107, 86, 167, 158, 87, 108, 156, 143, 143, 85, 108, 165, 139, 135, 97, 125, 149, 117, 121, 144, 138, 108, 114, 140, 139, 145, 124, 81, 141, 154, 134, 134, 96, 110, 152, 140, 121, 128, 123, 130, 131, 139, 110, 118, 143, 147, 137, 58, 145, 168, 145, 88, 100, 162, 143, 112, 137, 113, 131, 163, 86, 110, 153, 156, 126, 75, 141, 157, 132, 122, 98, 140, 149, 139, 101, 107, 145, 153, 138, 81, 118, 175, 139, 80, 125, 157, 135, 140, 93, 105, 161, 140, 133, 108, 109, 153, 156, 90, 103, 158, 142, 121, 120, 129, 132, 134, 162, 61, 110, 182, 135, 127, 89, 136, 147, 148, 123, 68, 151, 173, 122, 77, 136, 156, 145, 102, 102, 155, 161, 98, 104, 148, 136, 119, 140, 125, 112, 126, 137, 137, 133, 124, 106, 149, 150, 83, 118, 159, 132, 128, 145, 90, 111, 161, 142, 141, 82, 115, 158, 142, 139, 97, 101, 160, 138, 134, 113, 108, 143, 140, 125, 149, 105, 98, 140, 148, 127, 132, 125, 113, 138, 157, 96, 98, 160, 153, 120, 88, 136, 148, 120, 136, 156, 84, 107, 158, 153, 126, 75, 144, 159, 133, 94, 129, 144, 154, 115, 71, 152, 174, 119, 79, 139, 155, 126, 127, 118, 126, 138, 133, 126, 112, 134, 140, 135, 111, 111, 142, 141, 154, 91, 88, 161, 147, 128, 129, 103, 131, 146, 126, 140, 129, 91, 132, 154, 123, 118, 126, 131, 138, 125, 124, 129, 130, 127, 151, 130, 70, 137, 161, 141, 121, 92, 132, 157, 147, 93, 110, 160, 128, 114, 124, 138, 138, 118, 119, 134, 134, 126, 124, 126, 122, 136, 158, 103, 91, 164, 157, 83, 115, 162, 130, 118, 125, 134, 131, 130, 119, 126, 128, 126, 147, 131, 86, 143, 168, 103, 98, 144, 144, 143, 115, 102, 131, 145, 135, 137, 112, 106, 147, 157, 103, 101, 148, 153, 110, 105, 142, 142, 136, 126, 92, 134, 160, 130, 94, 124, 144, 152, 128, 83, 131, 154, 140, 137, 79, 128, 160, 138, 125, 89, 135, 149, 149, 116, 83, 145, 150, 127, 122, 130, 121, 154, 120, 80, 146, 165, 129, 91, 119, 151, 137, 127, 113, 128, 147, 146, 86, 110, 150, 137, 128, 145, 103, 109, 167, 144, 80, 118, 157, 148, 116, 102, 132, 139, 145, 129, 99, 126, 150, 136, 100, 127, 145, 151, 117, 82, 148, 156, 123, 107, 137, 157, 110, 92, 147, 148, 122, 118, 127, 124, 148, 137, 99, 121, 138, 135, 136, 145, 96, 106, 153, 141, 126, 128, 112, 132, 143, 156, 73, 104, 174, 140, 130, 95, 119, 154, 131, 124, 129, 131, 114, 134, 144, 100, 122, 140, 154, 128, 90, 127, 152, 143, 124, 93, 139, 148, 121, 116, 127, 138, 137, 132, 114, 113, 154, 138, 95, 124, 146, 138, 116, 127, 127, 128, 149, 127, 94, 131, 151, 128, 116, 126, 127, 134, 152, 109, 102, 139, 148, 127, 110, 152, 123, 93, 141, 146, 148, 108, 87, 157, 144, 127, 141, 98, 105, 155, 143, 135, 103, 112, 163, 147, 83, 115, 155, 149, 122, 95, 128, 148, 132, 122, 139, 119, 128, 132, 102, 136, 156, 116, 103, 140, 144, 138, 116, 108, 134, 132, 128, 127, 146, 139, 81, 124, 159, 129, 124, 155, 88, 102, 166, 141, 141, 84, 115, 162, 143, 126, 87, 133, 171, 129, 79, 131, 157, 147, 108, 97, 143, 146, 134, 126, 99, 131, 155, 136, 97, 117, 151, 133, 120, 115, 135, 137, 147, 119, 80, 155, 148, 119, 120, 150, 139, 77, 121, 168, 125, 119, 140, 114, 123, 135, 127, 126, 135, 130, 122, 130, 152, 117, 85, 146, 154, 121, 114, 133, 133, 125, 116, 138, 137, 151, 88, 105, 164, 144, 129, 89, 126, 154, 135, 140, 98, 111, 144, 147, 141, 95, 112, 147, 141, 124, 131, 117, 129, 135, 134, 122, 115, 135, 141, 131, 110, 119, 153, 123, 102, 144, 145, 116, 118, 131, 128, 150, 128, 94, 126, 148, 133, 125, 128, 115, 137, 127, 158, 116, 61, 165, 156, 123, 110, 131, 138, 147, 108, 95, 152, 151, 106, 127, 154, 102, 119, 143, 124, 125, 147, 138, 92, 120, 155, 141, 106, 118, 139, 139, 122, 120, 130, 132, 121, 145, 130, 100, 130, 149, 137, 103, 124, 147, 156, 93, 92, 161, 152, 128, 92, 129, 154, 123, 110, 138, 134, 124, 129, 135, 125, 113, 126, 162, 120, 93, 134, 148, 142, 114, 106, 138, 146, 122, 108, 134, 141, 137, 125, 100, 134, 148, 120, 127, 151, 104, 105, 148, 142, 115, 116, 144, 154, 104, 91, 158, 143, 137, 96, 124, 151, 153, 101, 89, 156, 159, 115, 98, 138, 146, 114, 120, 146, 153, 93, 100, 158, 160, 102, 95, 153, 145, 136, 106, 105, 151, 135, 134, 133, 94, 125, 149, 134, 122, 127, 129, 128, 140, 129, 89, 134, 151, 149, 110, 94, 145, 148, 122, 121, 131, 138, 136, 100, 119, 145, 154, 122, 83, 136, 154, 133, 110, 132, 133, 146, 114, 100, 141, 148, 125, 109, 130, 142, 140, 125, 99, 130, 157, 127, 102, 130, 142, 129, 119, 123, 139, 127, 147, 132, 71, 144, 157, 128, 125, 106, 134, 143, 137, 112, 107, 143, 156, 132, 70, 135, 162, 147, 94, 107, 149, 143, 117, 157, 104, 85, 165, 143, 134, 105, 115, 150, 127, 120, 131, 125, 139, 147, 91, 114, 150, 147, 117, 112, 135, 134, 121, 125, 151, 137, 84, 130, 156, 126, 117, 145, 119, 104, 138, 145, 129, 131, 111, 126, 143, 136, 128, 114, 107, 137, 144, 126, 131, 125, 133, 131, 101, 127, 160, 131, 98, 126, 143, 140, 114, 124, 132, 142, 147, 82, 112, 157, 148, 129, 92, 127, 147, 150, 123, 82, 143, 153, 130, 136, 94, 115, 157, 154, 102, 94, 156, 140, 133, 136, 81, 133, 160, 142, 102, 101, 148, 144, 143, 103, 106, 143, 148, 134, 104, 120, 145, 137, 110, 119, 149, 152, 89, 108, 159, 138, 142, 89, 110, 163, 134, 130, 110, 125, 138, 125, 128, 145, 145, 71, 124, 165, 146, 99, 105, 166, 140, 93, 121, 154, 130, 107, 129, 144, 144, 111, 98, 145, 152, 136, 90, 120, 151, 147, 118, 101, 132, 147, 138, 110, 118, 139, 126, 124, 137, 136, 143, 96, 107, 157, 132, 128, 136, 106, 119, 142, 138, 134, 126, 101, 137, 148, 139, 100, 109, 144, 141, 135, 131, 106, 121, 135, 147, 130, 106, 126, 134, 138, 141, 110, 107, 150, 149, 103, 113, 143, 140, 119, 130, 146, 105, 109, 146, 139, 122, 121, 131, 133, 128, 124, 124, 137, 134, 111, 123, 139, 155, 107, 93, 154, 143, 131, 116, 109, 144, 143, 132, 98, 119, 148, 157, 107, 95, 142, 146, 132, 144, 88, 116, 155, 148, 127, 86, 131, 156, 125, 130, 133, 100, 143, 149, 95, 124, 158, 119, 106, 137, 143, 138, 118, 99, 148, 148, 101, 117, 146, 136, 119, 143, 142, 72, 133, 174, 133, 80, 126, 155, 142, 124, 99, 129, 144, 134, 113, 124, 136, 152, 125, 84, 138, 153, 135, 111, 115, 143, 136, 137, 118, 94, 136, 153, 139, 115, 102, 136, 145, 148, 99, 111, 147, 153, 113, 102, 132, 145, 130, 135, 117, 112, 143, 142, 128, 97, 128, 159, 147, 81, 111, 158, 138, 123, 129, 116, 130, 136, 127, 136, 125, 106, 136, 149, 129, 90, 134, 169, 111, 100, 136, 146, 141, 114, 105, 143, 142, 117, 114, 139, 139, 139, 110, 110, 154, 126, 115, 125, 133, 137, 129, 131, 113, 129, 139, 157, 76, 110, 171, 152, 98, 92, 159, 141, 126, 146, 88, 113, 165, 151, 101, 94, 155, 144, 139, 103, 107, 149, 151, 111, 109, 136, 143, 124, 116, 122, 140, 133, 130, 123, 115, 147, 153, 79, 112, 162, 135, 119, 126, 133, 126, 126, 135, 158, 86, 95, 165, 153, 110, 108, 136, 142, 132, 112, 126, 134, 127, 122, 145, 143, 90, 116, 157, 137, 121, 113, 133, 140, 136, 115, 113, 141, 137, 115, 126, 134, 127, 123, 148, 125, 108, 130, 139, 129, 120, 124, 144, 132, 115, 117, 134, 137, 140, 125, 107, 127, 141, 122, 123, 136, 154, 104, 95, 158, 145, 123, 102, 136, 156, 131, 76, 136, 156, 126, 114, 161, 114, 84, 149, 163, 125, 86, 130, 154, 132, 115, 131, 141, 107, 136, 147, 102, 120, 144, 125, 124, 134, 149, 123, 78, 151, 149, 131, 122, 111, 123, 142, 137, 132, 110, 114, 156, 148, 90, 112, 151, 140, 144, 100, 104, 154, 138, 123, 125, 126, 128, 135, 130, 121, 120, 141, 125, 116, 132, 136, 127, 124, 121, 129, 138, 130, 133, 119, 115, 136, 138, 125, 123, 132, 130, 128, 144, 115, 89, 161, 155, 96, 114, 142, 150, 127, 96, 130, 148, 132, 120, 137, 135, 98, 125, 157, 134, 101, 123, 143, 126, 122, 137, 130, 120, 143, 138, 90, 121, 166, 126, 99, 144, 148, 108, 113, 138, 155, 116, 99, 140, 144, 139, 120, 97, 137, 157, 122, 102, 127, 140, 135, 136, 124, 102, 139, 158, 106, 98, 151, 145, 144, 87, 113, 160, 132, 124, 131, 110, 136, 133, 152, 111, 75, 161, 152, 141, 87, 112, 161, 139, 132, 98, 118, 167, 126, 90, 137, 149, 135, 122, 101, 139, 155, 107, 109, 139, 142, 127, 131, 110, 130, 136, 144, 134, 72, 136, 166, 137, 88, 122, 161, 133, 117, 102, 148, 139, 117, 116, 135, 137, 151, 97, 104, 159, 145, 131, 78, 140, 154, 139, 115, 103, 134, 138, 133, 134, 107, 124, 142, 148, 125, 83, 144, 156, 140, 85, 117, 159, 133, 118, 128, 138, 129, 115, 122, 132, 133, 126, 119, 136, 138, 148, 85, 114, 164, 129, 127, 114, 128, 142, 150, 87, 112, 158, 131, 126, 149, 100, 103, 157, 149, 110, 110, 139, 142, 121, 110, 138, 147, 141, 81, 127, 154, 150, 109, 90, 153, 145, 120, 133, 120, 118, 141, 130, 124, 133, 144, 107, 96, 155, 144, 120, 130, 118, 128, 131, 136, 129, 117, 127, 135, 129, 120, 124, 139, 129, 140, 131, 93, 126, 152, 137, 107, 127, 150, 119, 107, 138, 141, 139, 117, 102, 140, 153, 116, 110, 131, 133, 132, 143, 121, 99, 160, 119, 107, 156, 141, 88, 131, 164, 121, 96, 133, 141, 148, 123, 98, 132, 139, 131, 133, 131, 114, 124, 141, 125, 122, 129, 133, 128, 126, 127, 131, 128, 128, 122, 126, 138, 130, 129, 122, 124, 135, 129, 125, 126, 138, 136, 106, 115, 147, 131, 148, 108, 100, 140, 147, 124, 138, 119, 109, 145, 157, 102, 90, 156, 159, 120, 88, 138, 146, 144, 122, 91, 138, 150, 139, 116, 98, 141, 153, 122, 105, 134, 136, 123, 123, 143, 122, 131, 142, 95, 121, 151, 133, 123, 128, 125, 127, 153, 122, 73, 153, 157, 137, 91, 117, 152, 151, 118, 88, 139, 151, 126, 128, 114, 132, 137, 150, 98, 100, 161, 148, 124, 86, 137, 153, 140, 98, 117, 152, 151, 102, 108, 138, 140, 135, 141, 87, 125, 154, 141, 123, 93, 132, 166, 128, 89, 127, 152, 129, 126, 125, 122, 134, 130, 126, 128, 131, 127, 125, 129, 135, 148, 85, 110, 167, 136, 136, 96, 116, 155, 137, 139, 92, 115, 155, 147, 118, 100, 133, 145, 148, 103, 106, 148, 141, 120, 127, 128, 129, 127, 129, 125, 129, 130, 137, 112, 123, 140, 161, 94, 84, 163, 148, 119, 125, 128, 127, 134, 131, 120, 123, 135, 125, 124, 132, 125, 131, 149, 113, 106, 140, 150, 111, 113, 144, 145, 134, 85, 128, 155, 149, 96, 107, 152, 145, 136, 87, 122, 160, 125, 140, 116, 95, 152, 149, 132, 92, 120, 160, 138, 104, 117, 138, 136, 148, 113, 99, 138, 151, 139, 94, 120, 151, 136, 133, 105, 118, 150, 145, 111, 104, 143, 138, 118, 125, 141, 125, 128, 126, 141, 132, 87, 136, 166, 131, 79, 130, 158, 132, 112, 142, 122, 104, 139, 144, 140, 110, 112, 135, 135, 133, 136, 112, 118, 158, 136, 87, 124, 160, 132, 102, 127, 152, 121, 113, 142, 155, 98, 93, 161, 137, 138, 123, 91, 139, 151, 122, 140, 121, 102, 134, 139, 129, 138, 132, 104, 119, 143, 135, 145, 111, 96, 151, 145, 137, 104, 109, 142, 142, 133, 129, 101, 128, 153, 147, 87, 112, 159, 133, 124, 124, 120, 137, 129, 128, 126, 126, 129, 152, 102, 98, 157, 159, 104, 93, 149, 145, 132, 131, 100, 121, 149, 151, 101, 107, 152, 148, 127, 83, 140, 150, 132, 136, 91, 125, 169, 131, 88, 125, 153, 135, 136, 97, 123, 149, 148, 107, 
   106, 139, 145, 138, 107, 112, 143, 138, 134, 122, 103, 153, 138, 92, 135, 145, 142, 126, 83, 145, 149, 126, 132, 102, 130, 146, 138, 116, 104, 140, 152, 138, 80, 126, 156, 144, 118, 101, 134, 151, 130, 106, 125, 145, 138, 116, 114, 130, 139, 144, 107, 114, 145, 145, 122, 103, 133, 144, 126, 112, 141, 143, 108, 117, 137, 135, 129, 143, 111, 106, 146, 141, 119, 116, 131, 137, 150, 104, 102, 153, 155, 105, 98, 152, 150, 130, 86, 133, 149, 141, 129, 88, 134, 155, 122, 133, 121, 112, 139, 151, 133, 72, 138, 156, 146, 104, 100, 154, 154, 117, 89, 142, 150, 138, 104, 114, 145, 143, 112, 116, 137, 153, 114, 99, 143, 143, 131, 124, 111, 142, 125, 119, 136, 141, 108, 124, 148, 120, 114, 133, 154, 124, 89, 142, 145, 143, 116, 90, 151, 145, 134, 112, 105, 149, 135, 145, 107, 96, 150, 156, 119, 96, 139, 150, 133, 102, 120, 146, 135, 117, 125, 132, 126, 122, 147, 132, 99, 134, 143, 136, 110, 122, 132, 138, 137, 112, 113, 141, 137, 137, 121, 105, 135, 153, 134, 93, 121, 146, 135, 131, 128, 107, 132, 149, 138, 92, 118, 152, 137, 128, 108, 131, 140, 150, 106, 90, 153, 151, 131, 100, 126, 136, 134, 131, 138, 115, 118, 128, 134, 127, 144, 127, 104, 122, 147, 129, 142, 120, 91, 150, 156, 125, 78, 149, 147, 144, 100, 101, 159, 134, 130, 141, 82, 131, 156, 141, 115, 96, 142, 154, 125, 102, 129, 143, 133, 114, 121, 142, 147, 107, 109, 141, 142, 122, 127, 127, 129, 128, 129, 127, 128, 127, 129, 127, 129, 125, 131, 125, 141, 128, 95, 141, 142, 131, 142, 88, 124, 157, 115, 121, 149, 142, 94, 117, 154, 146, 104, 114, 137, 139, 129, 132, 118, 122, 139, 140, 125, 101, 131, 144, 126, 120, 132, 132, 146, 117, 95, 145, 144, 121, 120, 130, 136, 127, 119, 124, 137, 136, 136, 108, 115, 146, 148, 112, 104, 143, 136, 122, 125, 143, 130, 111, 123, 140, 124, 125, 134, 143, 111, 110, 152, 153, 82, 119, 161, 148, 96, 102, 157, 146, 121, 97, 142, 143, 138, 105, 112, 143, 147, 120, 108, 128, 146, 139, 104, 118, 145, 137, 136, 107, 113, 145, 142, 137, 94, 117, 151, 152, 109, 97, 148, 139, 136, 129, 87, 143, 153, 141, 91, 112, 156, 135, 124, 126, 120, 136, 139, 113, 128, 131, 124, 142, 111, 119, 141, 144, 124, 101, 141, 156, 105, 106, 141, 141, 133, 135, 101, 122, 141, 138, 138, 109, 119, 139, 132, 124, 125, 135, 128, 117, 132, 150, 112, 108, 138, 141, 131, 129, 106, 140, 138, 125, 119, 118, 141, 139, 111, 130, 135, 116, 134, 150, 112, 105, 139, 144, 120, 123, 146, 113, 116, 135, 140, 128, 117, 127, 135, 131, 124, 121, 126, 135, 143, 134, 83, 136, 152, 147, 96, 105, 158, 134, 123, 124, 125, 133, 128, 132, 126, 116, 135, 134, 133, 113, 124, 136, 157, 114, 74, 155, 154, 140, 92, 119, 153, 151, 101, 99, 154, 139, 123, 125, 121, 133, 136, 151, 77, 120, 166, 127, 117, 131, 132, 134, 129, 107, 123, 157, 140, 87, 121, 153, 132, 129, 138, 97, 123, 164, 127, 97, 127, 152, 136, 100, 126, 143, 149, 111, 97, 147, 143, 132, 131, 100, 123, 150, 147, 108, 101, 149, 142, 142, 95, 112, 155, 138, 132, 105, 124, 134, 129, 148, 122, 101, 134, 146, 139, 111, 116, 138, 129, 128, 130, 141, 135, 92, 126, 153, 139, 107, 120, 138, 129, 122, 136, 129, 140, 118, 103, 139, 139, 142, 123, 97, 134, 146, 141, 111, 104, 148, 142, 133, 108, 114, 138, 141, 135, 111, 121, 138, 142, 137, 90, 123, 151, 144, 115, 107, 139, 139, 119, 121, 135, 141, 140, 92, 118, 154, 131, 128, 136, 96, 134, 148, 140, 112, 99, 143, 155, 125, 101, 132, 142, 124, 119, 136, 142, 125, 107, 131, 134, 129, 133, 135, 109, 130, 158, 108, 96, 150, 142, 142, 105, 102, 155, 138, 133, 107, 116, 148, 143, 124, 96, 133, 143, 142, 122, 105, 134, 139, 123, 125, 139, 126, 113, 152, 120, 105, 135, 153, 124, 99, 141, 156, 120, 86, 144, 147, 141, 112, 98, 149, 145, 135, 101, 116, 151, 141, 104, 128, 152, 112, 110, 147, 148, 103, 112, 145, 138, 122, 130, 126, 125, 132, 131, 129, 120, 130, 133, 134, 120, 119, 133, 156, 112, 93, 142, 142, 136, 133, 96, 131, 151, 141, 101, 110, 149, 147, 118, 106, 132, 154, 128, 99, 127, 144, 132, 123, 127, 128, 130, 132, 122, 121, 135, 136, 127, 113, 123, 140, 153, 96, 110, 152, 137, 123, 127, 118, 136, 131, 132, 116, 130, 131, 160, 98, 82, 169, 141, 138, 104, 104, 157, 136, 132, 104, 126, 146, 151, 96, 100, 159, 144, 131, 96, 124, 148, 139, 134, 99, 117, 150, 135, 135, 115, 106, 147, 152, 105, 105, 147, 139, 134, 120, 105, 148, 142, 107, 118, 149, 134, 108, 124, 145, 145, 101, 111, 150, 136, 134, 112, 112, 144, 140, 141, 98, 115, 144, 137, 140, 115, 106, 140, 150, 132, 94, 127, 145, 140, 133, 97, 121, 160, 127, 101, 139, 157, 111, 98, 141, 148, 127, 105, 141, 145, 106, 120, 138, 137, 120, 137, 133, 107, 125, 137, 135, 126, 128, 128, 128, 127, 128, 129, 129, 127, 128, 130, 129, 140, 111, 105, 147, 138, 139, 127, 96, 133, 148, 132, 139, 93, 121, 152, 147, 116, 92, 145, 147, 141, 100, 111, 146, 147, 127, 96, 135, 146, 139, 115, 105, 141, 147, 118, 115, 131, 133, 133, 126, 133, 111, 124, 146, 145, 104, 106, 151, 149, 105, 111, 146, 139, 133, 104, 121, 158, 137, 85, 132, 164, 121, 101, 131, 137, 133, 129, 147, 94, 116, 153, 144, 121, 102, 134, 140, 122, 124, 135, 136, 126, 125, 123, 121, 133, 134, 121, 126, 136, 140, 119, 103, 143, 157, 109, 101, 146, 140, 116, 127, 139, 119, 119, 136, 139, 137, 111, 108, 147, 152, 114, 102, 141, 134, 124, 130, 135, 124, 125, 130, 142, 114, 110, 151, 152, 92, 107, 155, 135, 136, 123, 103, 133, 147, 136, 104, 121, 141, 149, 119, 95, 145, 142, 134, 132, 91, 132, 162, 129, 90, 133, 149, 145, 101, 107, 153, 134, 130, 132, 98, 136, 149, 139, 99, 111, 150, 151, 117, 99, 137, 144, 140, 118, 105, 137, 149, 123, 106, 132, 142, 132, 134, 102, 126, 167, 110, 93, 153, 140, 128, 120, 116, 139, 132, 125, 130, 130, 119, 128, 137, 132, 103, 139, 149, 107, 117, 143, 136, 144, 101, 105, 158, 131, 134, 127, 93, 145, 144, 129, 118, 118, 143, 139, 103, 122, 148, 140, 118, 103, 139, 141, 120, 122, 147, 120, 115, 129, 138, 126, 136, 134, 104, 122, 141, 135, 125, 128, 132, 125, 122, 130, 140, 115, 113, 136, 140, 126, 137, 135, 91, 131, 148, 139, 124, 105, 126, 140, 134, 133, 115, 121, 143, 150, 97, 104, 152, 144, 135, 95, 122, 149, 138, 132, 105, 116, 144, 137, 134, 123, 104, 142, 149, 110, 118, 137, 130, 121, 134, 134, 133, 112, 123, 141, 140, 122, 105, 127, 142, 139, 137, 99, 119, 146, 145, 128, 93, 133, 148, 137, 125, 103, 127, 140, 135, 135, 123, 108, 139, 135, 121, 119, 147, 135, 104, 120, 148, 129, 144, 111, 98, 153, 140, 133, 111, 110, 149, 131, 146, 104, 100, 157, 152, 108, 102, 143, 140, 127, 139, 113, 110, 141, 143, 124, 114, 131, 136, 128, 122, 128, 133, 129, 116, 132, 137, 138, 115, 115, 133, 133, 129, 138, 131, 109, 121, 143, 129, 131, 137, 109, 120, 141, 135, 121, 123, 132, 132, 127, 124, 127, 124, 141, 138, 109, 121, 139, 125, 125, 134, 139, 128, 98, 138, 147, 138, 105, 110, 150, 142, 112, 120, 134, 129, 133, 146, 108, 105, 145, 139, 141, 110, 102, 152, 151, 104, 108, 147, 136, 125, 125, 126, 126, 155, 116, 80, 159, 143, 126, 121, 120, 134, 135, 131, 118, 119, 141, 127, 140, 115, 110, 143, 158, 110, 85, 152, 145, 138, 115, 98, 149, 140, 135, 113, 109, 145, 154, 106, 102, 146, 151, 126, 96, 132, 147, 128, 123, 129, 127, 135, 144, 92, 117, 156, 141, 123, 98, 135, 146, 140, 115, 103, 138, 141, 135, 126, 105, 135, 157, 120, 92, 140, 148, 137, 108, 111, 149, 146, 99, 121, 149, 143, 108, 109, 146, 145, 115, 114, 136, 131, 130, 142, 115, 112, 135, 140, 132, 120, 122, 141, 137, 103, 121, 144, 133, 122, 125, 127, 127, 133, 138, 129, 109, 129, 133, 126, 127, 150, 119, 97, 142, 143, 130, 128, 113, 125, 139, 146, 106, 108, 149, 135, 135, 132, 92, 134, 153, 141, 98, 114, 148, 142, 132, 99, 122, 149, 132, 133, 114, 118, 155, 118, 107, 139, 139, 141, 109, 107, 146, 138, 133, 129, 106, 123, 143, 132, 125, 129, 141, 110, 115, 159, 120, 102, 146, 146, 109, 119, 134, 141, 130, 112, 125, 138, 132, 121, 125, 127, 128, 147, 121, 106, 142, 135, 117, 122, 139, 134, 133, 109, 122, 145, 139, 105, 120, 159, 123, 103, 132, 142, 131, 117, 140, 130, 106, 126, 152, 136, 101, 120, 147, 130, 139, 118, 96, 150, 140, 131, 117, 115, 139, 154, 104, 99, 153, 140, 135, 113, 107, 145, 137, 140, 114, 101, 147, 141, 141, 100, 113, 150, 142, 132, 94, 128, 147, 130, 125, 128, 123, 131, 133, 126, 118, 128, 131, 131, 143, 116, 116, 137, 133, 121, 126, 143, 126, 107, 131, 139, 139, 132, 94, 130, 151, 126, 140, 115, 101, 146, 152, 124, 95, 137, 144, 126, 120, 138, 130, 114, 123, 140, 132, 143, 113, 101, 146, 145, 134, 105, 119, 137, 136, 128, 131, 120, 125, 137, 152, 97, 100, 158, 138, 126, 125, 115, 136, 133, 139, 131, 85, 142, 160, 111, 108, 146, 139, 114, 122, 140, 134, 116, 119, 137, 129, 122, 134, 147, 100, 117, 150, 134, 117, 125, 143, 142, 85, 123, 155, 146, 109, 105, 142, 143, 124, 121, 127, 149, 128, 88, 134, 159, 129, 100, 130, 143, 136, 129, 103, 127, 152, 133, 106, 125, 139, 131, 118, 129, 138, 124, 124, 140, 135, 100, 122, 146, 135, 135, 112, 112, 151, 129, 109, 132, 145, 140, 99, 115, 158, 138, 99, 123, 146, 129, 124, 135, 132, 117, 118, 131, 136, 129, 125, 128, 125, 125, 133, 144, 125, 94, 140, 145, 139, 113, 106, 142, 148, 121, 109, 133, 132, 138, 134, 108, 128, 137, 126, 124, 144, 116, 115, 138, 143, 123, 109, 131, 140, 127, 122, 127, 132, 128, 120, 129, 137, 128, 135, 121, 110, 131, 144, 139, 108, 118, 137, 141, 133, 105, 124, 153, 138, 99, 120, 142, 135, 129, 133, 111, 127, 142, 143, 110, 104, 141, 142, 126, 130, 120, 122, 144, 146, 85, 121, 159, 131, 130, 105, 128, 144, 141, 116, 108, 138, 135, 120, 132, 134, 140, 119, 103, 135, 142, 133, 134, 106, 119, 150, 145, 106, 108, 145, 141, 134, 102, 127, 147, 142, 110, 105, 142, 140, 137, 114, 114, 142, 145, 121, 102, 136, 144, 125, 118, 130, 131, 128, 135, 121, 117, 136, 135, 132, 127, 112, 134, 135, 134, 139, 90, 124, 159, 137, 102, 117, 149, 145, 107, 112, 138, 138, 127, 128, 124, 127, 133, 130, 126, 122, 131, 134, 132, 120, 116, 130, 137, 131, 140, 124, 99, 140, 149, 130, 103, 125, 144, 134, 113, 122, 145, 138, 102, 132, 143, 122, 116, 132, 137, 135, 132, 98, 136, 145, 138, 111, 107, 144, 150, 125, 95, 137, 147, 119, 120, 151, 126, 101, 130, 146, 125, 131, 134, 110, 124, 134, 134, 129, 127, 126, 128, 130, 132, 128, 123, 117, 133, 140, 134, 115, 114, 139, 136, 126, 123, 128, 125, 143, 130, 106, 125, 143, 130, 125, 130, 147, 99, 110, 154, 144, 120, 103, 134, 147, 128, 108, 132, 151, 118, 110, 132, 145, 128, 109, 126, 139, 132, 125, 135, 117, 125, 136, 137, 122, 116, 139, 118, 126, 139, 121, 125, 146, 128, 104, 130, 139, 131, 127, 141, 118, 109, 136, 133, 138, 132, 106, 129, 140, 126, 125, 129, 124, 127, 134, 140, 120, 110, 132, 140, 142, 112, 115, 138, 131, 121, 132, 133, 125, 127, 134, 134, 113, 117, 147, 147, 100, 113, 145, 138, 122, 137, 127, 106, 133, 139, 130, 121, 128, 129, 126, 128, 141, 135, 100, 123, 148, 133, 135, 114, 112, 136, 140, 139, 114, 107, 143, 138, 142, 107, 108, 147, 145, 130, 95, 129, 150, 125, 137, 122, 99, 147, 139, 122, 126, 140, 120, 108, 132, 140, 135, 138, 99, 121, 150, 131, 133, 116, 114, 143, 140, 130, 102, 126, 142, 144, 121, 105, 132, 141, 139, 119, 111, 131, 142, 141, 107, 119, 137, 137, 128, 115, 131, 141, 119, 119, 129, 136, 133, 132, 111, 122, 151, 128, 104, 130, 144, 143, 102, 115, 147, 134, 122, 129, 128, 124, 129, 138, 146, 85, 117, 162, 143, 105, 108, 146, 138, 137, 108, 115, 143, 145, 116, 114, 131, 139, 131, 137, 109, 124, 142, 122, 125, 129, 126, 139, 129, 111, 129, 140, 128, 144, 109, 104, 150, 138, 122, 125, 130, 129, 130, 127, 122, 131, 131, 126, 129, 148, 109, 101, 146, 139, 122, 135, 127, 117, 131, 132, 124, 128, 136, 125, 124, 145, 123, 103, 136, 138, 127, 138, 120, 116, 133, 129, 129, 141, 132, 101, 127, 139, 135, 138, 112, 108, 148, 135, 135, 117, 119, 132, 128, 129, 138, 121, 116, 131, 150, 125, 99, 136, 144, 134, 125, 102, 138, 141, 125, 122, 147, 123, 93, 143, 157, 114, 108, 135, 141, 137, 114, 112, 141, 149, 114, 106, 143, 136, 136, 127, 96, 138, 156, 122, 97, 140, 145, 135, 109, 118, 139, 130, 124, 134, 138, 110, 118, 154, 136, 95, 126, 153, 135, 104, 123, 139, 141, 121, 116, 131, 137, 128, 123, 125, 128, 130, 145, 126, 100, 132, 144, 129, 123, 136, 116, 121, 141, 138, 125, 107, 131, 140, 127, 118, 130, 137, 139, 117, 111, 135, 137, 129, 116, 140, 132, 113, 126, 134, 141, 126, 111, 129, 139, 131, 119, 126, 127, 132, 132, 132, 125, 115, 136, 134, 147, 102, 104, 154, 146, 123, 100, 133, 146, 142, 104, 112, 146, 140, 128, 107, 131, 141, 135, 121, 110, 138, 145, 128, 103, 130, 142, 130, 121, 123, 130, 137, 125, 137, 115, 120, 138, 150, 114, 91, 153, 142, 122, 123, 133, 123, 142, 141, 82, 129, 157, 132, 130, 101, 129, 148, 139, 109, 116, 137, 132, 129, 132, 120, 143, 124, 105, 132, 141, 130, 133, 120, 116, 139, 139, 129, 110, 124, 135, 130, 127, 131, 129, 138, 126, 109, 127, 140, 127, 122, 144, 125, 111, 133, 135, 125, 123, 136, 136, 116, 121, 136, 130, 123, 138, 126, 111, 140, 148, 108, 112, 144, 138, 135, 109, 114, 147, 137, 112, 124, 153, 124, 100, 137, 140, 126, 121, 129, 133, 128, 118, 132, 145, 118, 114, 133, 143, 130, 108, 129, 137, 144, 122, 97, 143, 142, 124, 126, 124, 131, 132, 128, 121, 131, 129, 129, 129, 152, 92, 106, 161, 147, 115, 97, 145, 140, 137, 116, 107, 141, 140, 120, 137, 128, 107, 130, 138, 141, 125, 104, 136, 151, 124, 103, 131, 140, 139, 116, 118, 133, 137, 120, 131, 139, 116, 121, 133, 131, 136, 135, 105, 123, 140, 141, 123, 113, 131, 130, 130, 130, 136, 137, 92, 134, 147, 132, 123, 112, 139, 133, 119, 130, 138, 126, 114, 129, 137, 129, 120, 127, 135, 136, 137, 100, 121, 143, 140, 134, 102, 120, 148, 131, 135, 110, 119, 144, 143, 122, 101, 133, 143, 132, 133, 111, 118, 153, 128, 107, 129, 142, 130, 140, 99, 121, 152, 126, 133, 122, 109, 141, 140, 136, 99, 120, 154, 143, 102, 113, 147, 134, 133, 131, 100, 131, 152, 121, 109, 136, 142, 139, 101, 118, 147, 145, 115, 103, 142, 140, 128, 119, 126, 134, 134, 142, 94, 121, 155, 125, 115, 131, 139, 121, 131, 140, 110, 118, 142, 134, 122, 118, 135, 135, 132, 113, 127, 137, 134, 124, 115, 131, 146, 137, 87, 126, 154, 131, 120, 122, 133, 132, 147, 100, 107, 153, 146, 123, 98, 135, 144, 127, 129, 136, 107, 123, 145, 129, 119, 127, 131, 131, 128, 130, 143, 107, 109, 160, 137, 101, 119, 152, 133, 110, 122, 150, 127, 107, 139, 147, 109, 118, 152, 121, 115, 130, 138, 133, 116, 120, 144, 138, 108, 121, 137, 143, 125, 108, 130, 140, 136, 124, 109, 136, 144, 132, 105, 125, 138, 135, 124, 120, 126, 138, 129, 143, 107, 109, 150, 141, 129, 101, 128, 148, 135, 109, 121, 135, 144, 125, 102, 151, 135, 106, 124, 143, 130, 130, 122, 121, 136, 133, 130, 114, 128, 138, 140, 118, 104, 136, 141, 133, 133, 107, 126, 153, 122, 108, 131, 143, 134, 113, 123, 136, 135, 121, 124, 132, 132, 125, 126, 124, 132, 134, 137, 115, 112, 143, 142, 110, 122, 151, 120, 115, 131, 142, 122, 121, 134, 130, 125, 128, 128, 128, 122, 136, 140, 112, 119, 135, 143, 124, 108, 135, 139, 141, 112, 106, 144, 139, 124, 127, 125, 130, 129, 138, 118, 113, 143, 133, 132, 111, 128, 138, 140, 120, 104, 137, 149, 120, 114, 132, 136, 129, 122, 127, 131, 130, 126, 126, 125, 128, 144, 122, 109, 132, 140, 130, 132, 109, 126, 142, 139, 118, 107, 142, 138, 117, 122, 137, 136, 139, 99, 120, 149, 131, 130, 117, 121, 138, 138, 136, 88, 133, 150, 139, 114, 108, 138, 143, 138, 105, 115, 147, 133, 134, 116, 113, 142, 141, 129, 105, 127, 141, 130, 119, 131, 131, 143, 119, 102, 138, 142, 125, 129, 125, 122, 134, 130, 129, 125, 126, 129, 133, 129, 122, 127, 128, 131, 137, 114, 121, 134, 132, 131, 136, 117, 117, 131, 139, 139, 112, 115, 138, 135, 141, 116, 107, 138, 140, 127, 130, 120, 125, 136, 135, 125, 112, 132, 144, 127, 108, 131, 138, 128, 125, 126, 130, 128, 123, 130, 136, 132, 114, 123, 137, 131, 124, 126, 128, 125, 139, 133, 109, 126, 141, 127, 117, 130, 142, 133, 106, 127, 136, 129, 125, 134, 122, 137, 134, 108, 122, 141, 131, 137, 126, 98, 141, 142, 137, 113, 110, 143, 146, 120, 109, 132, 138, 134, 137, 104, 121, 145, 141, 114, 112, 142, 138, 133, 108, 122, 145, 130, 113, 129, 139, 144, 104, 114, 149, 132, 124, 129, 125, 127, 133, 126, 123, 146, 127, 98, 134, 145, 127, 120, 140, 121, 121, 129, 136, 131, 120, 122, 139, 132, 116, 124, 137, 136, 133, 107, 123, 149, 132, 108, 126, 138, 145, 110, 112, 146, 145, 118, 101, 139, 141, 126, 124, 131, 127, 127, 126, 143, 131, 93, 134, 150, 122, 117, 137, 136, 114, 125, 137, 144, 115, 108, 137, 142, 134, 111, 119, 136, 142, 133, 101, 129, 143, 139, 123, 98, 141, 141, 135, 111, 120, 141, 138, 134, 96, 125, 148, 140, 114, 112, 137, 136, 137, 126, 99, 140, 141, 136, 118, 107, 140, 150, 115, 108, 138, 139, 133, 127, 105, 135, 142, 141, 105, 112, 146, 148, 113, 106, 142, 138, 124, 130, 121, 126, 134, 135, 124, 122, 134, 116, 130, 131, 129, 131, 137, 118, 117, 136, 134, 124, 121, 132, 137, 141, 105, 114, 150, 131, 128, 127, 115, 133, 138, 135, 112, 115, 143, 147, 115, 102, 142, 141, 137, 111, 118, 137, 142, 120, 118, 126, 138, 130, 143, 104, 115, 149, 133, 121, 122, 132, 139, 123, 110, 138, 136, 124, 124, 135, 138, 112, 108, 144, 144, 130, 107, 126, 137, 136, 127, 117, 129, 130, 127, 131, 139, 126, 110, 127, 138, 131, 130, 141, 107, 114, 145, 135, 135, 122, 108, 132, 139, 130, 127, 123, 127, 133, 129, 138, 110, 114, 153, 142, 99, 119, 144, 140, 127, 110, 127, 139, 128, 134, 130, 110, 131, 131, 131, 128, 144, 116, 103, 147, 137, 130, 119, 116, 145, 137, 105, 124, 145, 125, 138, 131, 98, 130, 148, 140, 108, 113, 146, 133, 131, 116, 124, 138, 146, 110, 102, 150, 142, 129, 108, 124, 142, 133, 116, 123, 135, 133, 125, 132, 130, 117, 125, 139, 124, 121, 130, 128, 139, 132, 107, 128, 149, 129, 106, 129, 143, 126, 114, 133, 138, 135, 108, 123, 150, 136, 95, 129, 149, 135, 114, 113, 138, 137, 135, 121, 110, 137, 142, 121, 117, 132, 134, 129, 120, 126, 134, 136, 138, 105, 117, 144, 136, 134, 110, 118, 143, 141, 115, 111, 146, 142, 110, 117, 139, 143, 119, 113, 132, 138, 129, 130, 119, 124, 147, 132, 98, 128, 145, 135, 132, 105, 123, 145, 130, 139, 110, 109, 150, 134, 134, 111, 119, 143, 141, 122, 103, 135, 152, 128, 103, 127, 146, 140, 106, 116, 146, 132, 133, 111, 125, 140, 137, 128, 96, 143, 140, 132, 115, 118, 141, 129, 142, 123, 93, 142, 144, 128, 127, 117, 126, 146, 137, 95, 125, 150, 131, 131, 105, 130, 150, 118, 112, 135, 139, 139, 102, 125, 146, 129, 121, 126, 133, 134, 123, 117, 127, 133, 133, 141, 118, 110, 135, 137, 138, 119, 114, 134, 141, 125, 117, 129, 135, 128, 120, 128, 145, 127, 103, 135, 141, 128, 123, 128, 128, 132, 128, 132, 117, 117, 137, 137, 135, 115, 117, 145, 127, 135, 125, 107, 133, 140, 133, 132, 107, 125, 146, 136, 112, 121, 134, 130, 130, 138, 121, 112, 139, 136, 118, 122, 134, 137, 135, 107, 118, 145, 133, 134, 116, 115, 140, 139, 136, 102, 121, 145, 142, 124, 101, 138, 140, 139, 117, 106, 141, 139, 123, 132, 137, 110, 121, 137, 131, 130, 134, 119, 121, 131, 134, 134, 132, 108, 126, 146, 131, 112, 125, 134, 141, 128, 111, 129, 136, 130, 123, 125, 132, 138, 129, 110, 128, 141, 128, 121, 128, 132, 129, 125, 126, 125, 131, 132, 137, 122, 105, 138, 139, 140, 112, 111, 143, 137, 119, 125, 133, 147, 109, 104, 147, 139, 123, 122, 131, 139, 124, 108, 133, 139, 128, 123, 128, 131, 128, 126, 123, 133, 131, 141, 119, 102, 144, 144, 132, 97, 132, 143, 136, 127, 106, 126, 144, 130, 139, 106, 118, 145, 141, 126, 98, 138, 144, 138, 103, 118, 146, 143, 120, 103, 139, 142, 138, 102, 121, 146, 133, 130, 112, 124, 146, 141, 100, 117, 150, 130, 125, 126, 129, 125, 144, 131, 87, 140, 147, 136, 120, 102, 145, 136, 138, 116, 105, 145, 139, 129, 111, 128, 154, 117, 100, 144, 139, 137, 118, 105, 143, 137, 137, 120, 103, 143, 138, 138, 114, 107, 147, 137, 137, 101, 123, 147, 134, 129, 108, 127, 142, 130, 138, 107, 118, 142, 142, 114, 123, 142, 121, 119, 134, 134, 130, 138, 106, 119, 147, 132, 122, 129, 120, 127, 133, 134, 124, 130, 139, 113, 118, 139, 134, 124, 124, 130, 130, 128, 122, 133, 139, 117, 122, 133, 132, 128, 125, 123, 130, 134, 129, 129, 121, 128, 133, 132, 125, 116, 141, 140, 100, 124, 146, 130, 136, 119, 108, 140, 138, 123, 125, 141, 129, 108, 126, 141, 126, 129, 138, 117, 120, 135, 139, 120, 117, 134, 136, 126, 124, 134, 137, 112, 118, 140, 133, 125, 124, 129, 124, 133, 131, 140, 110, 116, 144, 141, 125, 101, 132, 143, 132, 132, 111, 123, 142, 135, 134, 104, 124, 142, 141, 115, 117, 134, 137, 123, 134, 132, 113, 127, 136, 134, 123, 123, 132, 129, 123, 129, 141, 131, 103, 129, 143, 138, 119, 113, 134, 132, 127, 132, 135, 114, 120, 144, 140, 110, 120, 133, 136, 127, 131, 124, 123, 132, 132, 129, 120, 127, 134, 129, 147, 106, 103, 152, 137, 133, 119, 111, 139, 143, 131, 99, 132, 151, 131, 103, 127, 141, 139, 118, 111, 142, 145, 109, 117, 140, 137, 124, 123, 128, 133, 126, 142, 121, 101, 
   140, 148, 119, 117, 127, 142, 133, 110, 124, 141, 130, 130, 122, 124, 132, 141, 130, 91, 142, 146, 136, 109, 114, 140, 142, 132, 103, 129, 142, 138, 124, 101, 138, 140, 138, 117, 105, 146, 136, 138, 107, 115, 145, 144, 120, 101, 142, 139, 128, 126, 118, 133, 133, 132, 120, 121, 136, 136, 128, 108, 130, 152, 125, 99, 136, 150, 128, 104, 130, 139, 139, 123, 111, 131, 142, 129, 116, 125, 131, 141, 128, 111, 128, 133, 132, 132, 132, 110, 126, 151, 126, 102, 135, 140, 140, 112, 111, 144, 136, 122, 126, 131, 132, 126, 120, 131, 136, 131, 116, 120, 137, 134, 124, 123, 133, 134, 138, 111, 120, 138, 131, 121, 131, 133, 126, 127, 136, 127, 113, 129, 136, 128, 126, 128, 130, 126, 124, 129, 141, 132, 102, 128, 144, 128, 124, 128, 129, 129, 129, 126, 126, 129, 130, 134, 121, 124, 145, 116, 114, 136, 133, 129, 127, 132, 131, 113, 128, 140, 136, 113, 117, 139, 132, 122, 130, 135, 127, 126, 125, 125, 130, 131, 128, 127, 128, 128, 128, 126, 124, 142, 129, 110, 129, 137, 139, 123, 110, 130, 139, 129, 124, 131, 142, 106, 115, 145, 139, 130, 108, 124, 140, 132, 124, 129, 131, 131, 122, 123, 135, 129, 120, 130, 132, 129, 121, 128, 135, 141, 112, 112, 145, 142, 111, 122, 135, 128, 127, 136, 125, 117, 129, 135, 134, 133, 110, 123, 145, 132, 114, 126, 132, 130, 130, 137, 119, 114, 132, 142, 133, 110, 123, 137, 135, 137, 111, 114, 145, 133, 135, 116, 113, 150, 133, 107, 129, 141, 137, 118, 114, 137, 139, 123, 118, 129, 133, 137, 132, 108, 123, 140, 132, 130, 135, 101, 132, 143, 129, 125, 121, 131, 138, 139, 94, 127, 150, 138, 114, 112, 141, 141, 114, 121, 138, 141, 124, 102, 137, 141, 139, 109, 115, 144, 134, 130, 121, 116, 141, 129, 137, 126, 101, 135, 150, 125, 107, 128, 148, 133, 105, 124, 144, 130, 138, 107, 118, 147, 132, 136, 99, 129, 144, 139, 117, 104, 145, 138, 128, 113, 132, 134, 128, 126, 132, 122, 126, 129, 145, 124, 95, 146, 150, 110, 114, 146, 140, 111, 119, 136, 139, 129, 112, 125, 146, 134, 109, 124, 138, 135, 125, 124, 128, 144, 124, 98, 142, 142, 135, 114, 118, 135, 132, 126, 129, 128, 141, 118, 114, 134, 135, 125, 137, 130, 107, 128, 139, 139, 118, 114, 136, 135, 133, 127, 110, 133, 135, 125, 133, 140, 109, 117, 141, 134, 132, 128, 110, 134, 149, 115, 111, 139, 137, 125, 138, 118, 110, 139, 140, 135, 107, 119, 143, 133, 135, 115, 119, 138, 128, 127, 130, 123, 137, 132, 110, 128, 139, 142, 113, 113, 143, 135, 133, 113, 117, 149, 132, 109, 128, 139, 130, 123, 136, 128, 106, 141, 146, 110, 118, 135, 133, 130, 136, 121, 113, 139, 139, 119, 120, 133, 133, 126, 123, 128, 135, 127, 123, 131, 134, 127, 115, 128, 147, 128, 108, 129, 140, 129, 123, 128, 130, 131, 131, 120, 121, 131, 133, 129, 126, 128, 129, 128, 128, 128, 129, 128, 128, 128, 129, 128, 128, 124, 129, 133, 134, 129, 116, 123, 133, 131, 134, 127, 117, 129, 135, 127, 122, 128, 143, 127, 106, 132, 145, 133, 108, 123, 146, 129, 117, 126, 131, 132, 135, 127, 113, 128, 143, 130, 112, 127, 139, 130, 132, 116, 124, 138, 141, 123, 100, 140, 140, 133, 125, 109, 132, 146, 134, 102, 124, 146, 129, 130, 118, 124, 137, 132, 128, 114, 132, 133, 140, 129, 95, 136, 152, 127, 105, 134, 138, 135, 124, 111, 132, 147, 124, 110, 129, 139, 132, 133, 108, 128, 141, 140, 116, 107, 142, 143, 117, 116, 136, 135, 138, 110, 116, 141, 139, 130, 111, 122, 144, 136, 113, 123, 133, 132, 139, 122, 108, 138, 136, 136, 124, 104, 138, 140, 130, 116, 127, 138, 128, 125, 135, 120, 119, 136, 131, 124, 129, 140, 125, 108, 132, 138, 133, 131, 114, 121, 135, 131, 136, 131, 104, 131, 142, 131, 128, 110, 134, 135, 137, 128, 103, 131, 144, 126, 138, 120, 107, 141, 144, 128, 103, 131, 140, 134, 130, 108, 127, 144, 135, 114, 119, 140, 130, 122, 125, 139, 135, 112, 119, 141, 132, 135, 117, 118, 140, 125, 122, 134, 131, 125, 128, 131, 127, 122, 127, 148, 117, 102, 143, 139, 135, 116, 115, 138, 141, 123, 111, 134, 146, 113, 118, 139, 142, 123, 110, 132, 135, 129, 135, 132, 105, 131, 140, 138, 114, 115, 142, 143, 113, 115, 137, 135, 127, 136, 113, 118, 139, 134, 127, 139, 113, 115, 139, 137, 136, 115, 113, 142, 133, 133, 121, 119, 137, 124, 122, 134, 132, 130, 137, 108, 121, 143, 132, 135, 115, 116, 138, 143, 126, 107, 131, 141, 139, 112, 114, 141, 137, 134, 111, 120, 140, 139, 122, 114, 131, 134, 139, 121, 112, 138, 145, 116, 112, 139, 136, 136, 118, 110, 139, 136, 137, 119, 108, 141, 137, 126, 121, 132, 128, 139, 128, 102, 132, 146, 128, 117, 127, 132, 131, 126, 125, 130, 129, 140, 121, 109, 136, 137, 135, 121, 116, 132, 142, 125, 113, 132, 138, 139, 111, 115, 142, 137, 132, 111, 121, 142, 130, 138, 118, 110, 137, 142, 133, 107, 124, 142, 129, 130, 128, 113, 133, 139, 134, 110, 121, 142, 132, 119, 124, 133, 134, 126, 123, 130, 142, 119, 110, 135, 135, 136, 129, 110, 128, 139, 129, 126, 135, 115, 126, 137, 140, 122, 102, 138, 140, 133, 126, 111, 131, 144, 129, 113, 126, 138, 130, 121, 126, 140, 128, 113, 129, 144, 130, 109, 128, 137, 138, 123, 111, 134, 147, 121, 108, 140, 143, 117, 117, 137, 135, 122, 121, 138, 136, 110, 128, 141, 138, 109, 118, 141, 138, 128, 112, 127, 135, 132, 127, 135, 122, 116, 135, 135, 122, 125, 126, 134, 138, 118, 117, 135, 133, 139, 120, 114, 137, 133, 123, 125, 131, 131, 130, 128, 122, 127, 127, 139, 132, 108, 126, 141, 135, 116, 121, 137, 133, 136, 113, 117, 143, 132, 123, 135, 127, 112, 133, 136, 128, 121, 128, 141, 125, 116, 129, 132, 131, 131, 137, 104, 126, 142, 137, 122, 112, 132, 142, 127, 118, 129, 133, 129, 125, 125, 127, 132, 135, 131, 110, 127, 143, 131, 115, 127, 131, 129, 130, 130, 124, 139, 126, 107, 136, 142, 123, 119, 130, 129, 133, 136, 115, 120, 134, 137, 130, 113, 126, 142, 136, 109, 120, 140, 133, 126, 128, 122, 132, 130, 131, 123, 125, 131, 133, 128, 122, 125, 137, 130, 113, 128, 135, 133, 137, 114, 114, 144, 132, 133, 118, 119, 138, 139, 127, 106, 131, 150, 124, 107, 132, 140, 128, 125, 127, 130, 128, 128, 131, 142, 105, 113, 151, 136, 115, 123, 133, 134, 129, 120, 127, 132, 130, 125, 126, 129, 129, 128, 127, 128, 128, 129, 123, 134, 134, 118, 126, 129, 133, 128, 134, 131, 104, 133, 141, 132, 124, 114, 134, 140, 131, 111, 126, 134, 132, 129, 132, 120, 126, 135, 135, 112, 123, 149, 131, 102, 129, 143, 135, 115, 123, 139, 138, 111, 121, 134, 133, 129, 136, 119, 116, 139, 140, 119, 116, 132, 134, 132, 135, 113, 120, 139, 137, 131, 108, 131, 146, 129, 105, 129, 141, 136, 117, 121, 134, 134, 119, 129, 142, 120, 115, 135, 137, 122, 120, 133, 135, 125, 124, 141, 122, 114, 133, 137, 127, 123, 127, 127, 129, 131, 129, 138, 115, 118, 135, 132, 130, 139, 115, 116, 137, 142, 124, 108, 135, 141, 133, 111, 123, 136, 134, 122, 124, 132, 136, 121, 117, 143, 134, 113, 124, 137, 137, 118, 120, 135, 133, 127, 125, 139, 125, 106, 135, 138, 131, 134, 111, 121, 142, 130, 126, 136, 120, 115, 134, 133, 137, 126, 110, 129, 140, 129, 132, 118, 122, 138, 136, 126, 112, 130, 134, 133, 123, 125, 128, 127, 129, 140, 125, 107, 136, 138, 133, 126, 108, 136, 137, 132, 131, 108, 126, 142, 135, 117, 122, 135, 131, 123, 125, 132, 134, 136, 111, 120, 136, 134, 128, 126, 123, 132, 129, 131, 121, 127, 130, 145, 118, 100, 143, 145, 128, 110, 126, 137, 134, 131, 120, 119, 134, 132, 127, 122, 128, 133, 136, 124, 114, 133, 138, 123, 122, 131, 132, 126, 123, 129, 136, 137, 109, 121, 141, 134, 134, 109, 122, 141, 133, 135, 110, 120, 142, 138, 127, 105, 134, 139, 135, 124, 114, 130, 134, 133, 126, 118, 131, 133, 138, 124, 109, 136, 140, 122, 121, 133, 133, 122, 125, 129, 130, 130, 135, 133, 109, 128, 136, 129, 125, 131, 129, 137, 119, 115, 135, 132, 127, 133, 133, 113, 126, 140, 125, 120, 131, 140, 131, 109, 128, 135, 130, 130, 130, 120, 126, 132, 126, 133, 132, 115, 131, 134, 125, 125, 130, 130, 127, 122, 134, 135, 118, 123, 132, 137, 125, 117, 131, 134, 136, 127, 110, 130, 140, 138, 115, 116, 136, 135, 128, 129, 118, 129, 136, 132, 116, 127, 139, 129, 124, 118, 138, 133, 116, 129, 133, 127, 123, 138, 131, 114, 126, 134, 137, 124, 117, 131, 133, 128, 124, 127, 135, 138, 114, 118, 140, 133, 134, 117, 118, 145, 125, 119, 131, 138, 124, 121, 131, 137, 122, 118, 137, 143, 111, 112, 142, 139, 122, 119, 131, 133, 129, 123, 128, 130, 129, 123, 135, 133, 117, 126, 138, 127, 122, 127, 131, 133, 123, 124, 131, 131, 127, 126, 126, 128, 137, 129, 117, 127, 134, 129, 126, 128, 128, 127, 125, 134, 137, 112, 123, 138, 136, 128, 113, 129, 135, 126, 125, 133, 130, 129, 120, 128, 133, 133, 121, 119, 149, 124, 105, 137, 139, 126, 125, 143, 114, 110, 142, 139, 131, 112, 123, 139, 132, 120, 136, 128, 116, 129, 134, 131, 123, 127, 128, 126, 132, 130, 129, 126, 125, 131, 128, 137, 120, 112, 142, 133, 132, 115, 126, 135, 144, 116, 104, 144, 138, 124, 132, 122, 119, 136, 131, 129, 125, 124, 130, 135, 125, 117, 144, 124, 113, 134, 137, 129, 130, 114, 130, 136, 135, 120, 116, 140, 129, 121, 129, 133, 129, 125, 138, 130, 105, 131, 140, 134, 117, 125, 133, 131, 123, 125, 132, 132, 132, 118, 120, 147, 131, 108, 124, 140, 130, 133, 121, 115, 136, 141, 123, 114, 132, 137, 127, 124, 127, 128, 130, 137, 125, 114, 130, 135, 136, 121, 119, 132, 134, 133, 129, 109, 132, 138, 137, 120, 111, 135, 137, 137, 116, 114, 142, 133, 131, 116, 125, 139, 140, 108, 117, 145, 131, 127, 134, 114, 120, 140, 140, 118, 116, 134, 136, 134, 117, 120, 135, 136, 123, 122, 130, 132, 127, 121, 133, 139, 118, 122, 130, 133, 137, 118, 116, 137, 133, 129, 127, 120, 132, 132, 129, 135, 111, 123, 141, 132, 134, 106, 126, 150, 125, 112, 130, 140, 128, 116, 129, 135, 139, 113, 117, 140, 138, 129, 109, 130, 137, 129, 128, 129, 123, 127, 128, 129, 132, 123, 123, 136, 137, 114, 124, 141, 122, 126, 133, 126, 126, 128, 132, 130, 122, 128, 130, 131, 125, 128, 124, 131, 130, 139, 120, 110, 140, 144, 120, 107, 141, 136, 134, 118, 116, 133, 135, 129, 137, 113, 119, 139, 138, 125, 109, 140, 139, 114, 122, 136, 135, 133, 111, 123, 141, 138, 117, 115, 137, 134, 131, 133, 108, 126, 146, 133, 108, 126, 140, 131, 124, 122, 133, 129, 136, 127, 108, 132, 140, 128, 123, 126, 130, 136, 122, 121, 130, 133, 129, 137, 114, 119, 137, 139, 125, 113, 134, 144, 117, 117, 136, 137, 134, 114, 118, 140, 132, 134, 120, 115, 137, 141, 124, 108, 137, 137, 134, 116, 120, 134, 131, 134, 134, 111, 125, 139, 133, 132, 114, 125, 135, 128, 128, 132, 125, 123, 131, 128, 125, 131, 139, 119, 115, 136, 136, 135, 114, 120, 134, 133, 129, 132, 124, 120, 134, 138, 125, 113, 130, 142, 132, 113, 126, 134, 137, 127, 116, 126, 135, 131, 127, 127, 132, 131, 118, 123, 133, 130, 137, 121, 120, 130, 134, 128, 136, 124, 113, 132, 139, 129, 118, 127, 133, 131, 124, 126, 130, 130, 126, 127, 129, 129, 127, 125, 127, 133, 131, 131, 117, 126, 139, 138, 106, 122, 142, 135, 131, 111, 123, 141, 130, 137, 113, 116, 143, 133, 134, 108, 125, 142, 135, 124, 108, 137, 135, 134, 125, 112, 131, 142, 121, 119, 135, 141, 120, 115, 134, 132, 128, 132, 129, 120, 129, 132, 129, 124, 125, 133, 140, 115, 118, 139, 135, 132, 113, 123, 141, 135, 114, 123, 147, 127, 108, 131, 144, 130, 111, 125, 138, 131, 127, 128, 122, 132, 129, 141, 111, 114, 146, 137, 127, 107, 134, 137, 132, 124, 117, 129, 135, 132, 133, 114, 123, 141, 134, 114, 128, 142, 119, 120, 130, 140, 130, 114, 124, 137, 130, 134, 118, 120, 139, 133, 129, 111, 134, 136, 135, 118, 116, 136, 142, 125, 109, 132, 137, 135, 126, 112, 131, 140, 135, 112, 122, 137, 138, 129, 108, 131, 138, 137, 121, 109, 140, 134, 129, 124, 120, 133, 132, 126, 126, 129, 134, 125, 118, 131, 132, 128, 139, 118, 112, 138, 135, 135, 119, 116, 136, 139, 126, 115, 129, 136, 130, 122, 127, 130, 132, 126, 125, 128, 131, 128, 125, 128, 130, 128, 128, 128, 127, 128, 129, 129, 126, 126, 136, 124, 123, 129, 130, 128, 129, 130, 128, 124, 128, 133, 126, 117, 136, 138, 118, 121, 135, 131, 121, 135, 127, 120, 129, 134, 136, 121, 116, 134, 133, 136, 121, 116, 132, 135, 128, 135, 120, 118, 135, 130, 124, 129, 133, 127, 123, 128, 139, 133, 100, 132, 142, 135, 121, 116, 132, 132, 128, 136, 129, 110, 130, 137, 138, 118, 114, 137, 135, 130, 128, 114, 135, 133, 138, 119, 108, 145, 138, 114, 123, 138, 131, 132, 115, 124, 138, 137, 121, 116, 134, 134, 129, 124, 126, 129, 131, 137, 121, 114, 135, 136, 129, 117, 137, 131, 118, 126, 134, 127, 134, 130, 115, 127, 143, 129, 115, 125, 135, 131, 133, 127, 113, 133, 140, 129, 113, 127, 138, 128, 120, 128, 134, 130, 128, 119, 133, 130, 140, 120, 105, 140, 138, 129, 127, 114, 132, 139, 136, 107, 123, 141, 136, 126, 114, 127, 135, 130, 127, 125, 137, 131, 103, 134, 148, 125, 110, 130, 138, 130, 131, 117, 124, 140, 138, 109, 119, 142, 136, 126, 112, 131, 134, 131, 133, 116, 121, 136, 137, 131, 108, 131, 137, 137, 117, 115, 142, 131, 129, 121, 127, 132, 142, 114, 108, 146, 134, 133, 116, 118, 140, 133, 131, 121, 115, 137, 142, 122, 115, 132, 134, 138, 117, 116, 139, 141, 115, 116, 142, 138, 115, 118, 137, 133, 131, 128, 113, 134, 144, 118, 112, 138, 134, 128, 129, 121, 125, 135, 127, 136, 127, 106, 136, 143, 129, 111, 127, 144, 128, 113, 130, 135, 133, 132, 109, 128, 140, 137, 119, 113, 137, 134, 133, 127, 109, 138, 141, 115, 124, 137, 134, 128, 113, 131, 139, 125, 121, 140, 130, 112, 128, 137, 130, 126, 129, 130, 127, 126, 129, 126, 126, 131, 128, 125, 129, 139, 124, 113, 133, 136, 128, 125, 138, 123, 110, 137, 137, 126, 125, 137, 122, 118, 131, 132, 127, 137, 125, 111, 137, 136, 128, 126, 119, 129, 134, 129, 126, 127, 128, 126, 129, 134, 133, 117, 123, 133, 129, 132, 132, 119, 121, 133, 132, 137, 120, 114, 137, 142, 122, 111, 137, 133, 135, 125, 109, 134, 138, 126, 129, 126, 123, 132, 136, 124, 117, 132, 133, 128, 125, 128, 129, 129, 126, 125, 132, 138, 118, 118, 133, 135, 126, 128, 126, 128, 129, 129, 127, 127, 127, 130, 127, 133, 123, 124, 132, 144, 115, 105, 146, 136, 132, 120, 118, 134, 131, 124, 127, 140, 126, 113, 130, 133, 135, 126, 116, 130, 135, 135, 123, 115, 133, 139, 126, 118, 130, 133, 129, 123, 126, 131, 135, 132, 111, 125, 137, 135, 129, 114, 126, 141, 131, 115, 125, 135, 133, 133, 115, 122, 135, 132, 127, 129, 129, 126, 126, 132, 127, 122, 129, 132, 127, 125, 130, 136, 127, 113, 132, 142, 128, 107, 131, 140, 136, 114, 119, 138, 140, 120, 115, 136, 134, 134, 120, 115, 136, 141, 125, 110, 134, 135, 134, 127, 109, 136, 136, 131, 124, 118, 136, 131, 130, 134, 110, 123, 150, 128, 108, 129, 140, 128, 131, 117, 129, 133, 137, 126, 105, 136, 139, 131, 126, 112, 137, 137, 117, 124, 136, 131, 126, 126, 129, 130, 130, 124, 123, 138, 138, 105, 123, 142, 132, 122, 139, 123, 109, 139, 138, 131, 109, 128, 144, 132, 110, 126, 137, 136, 125, 116, 131, 137, 124, 124, 128, 130, 131, 133, 125, 120, 131, 131, 127, 127, 128, 127, 132, 131, 118, 126, 136, 128, 136, 125, 111, 134, 136, 135, 120, 118, 133, 138, 126, 119, 128, 134, 129, 125, 125, 128, 130, 137, 128, 110, 132, 137, 129, 130, 116, 129, 136, 133, 124, 114, 136, 133, 135, 124, 111, 134, 141, 131, 112, 126, 136, 136, 127, 116, 128, 136, 125, 124, 131, 135, 131, 112, 125, 138, 131, 135, 115, 119, 142, 130, 130, 120, 125, 134, 132, 123, 122, 133, 134, 136, 102, 129, 143, 134, 122, 116, 132, 135, 129, 123, 125, 130, 138, 122, 118, 130, 135, 134, 119, 122, 133, 133, 124, 125, 126, 131, 130, 131, 127, 119, 132, 143, 116, 113, 140, 135, 133, 112, 123, 139, 131, 125, 131, 129, 121, 128, 133, 125, 128, 129, 130, 126, 128, 128, 129, 125, 128, 131, 138, 121, 114, 137, 137, 121, 124, 134, 126, 123, 129, 134, 128, 125, 135, 118, 122, 134, 137, 130, 111, 129, 140, 135, 114, 120, 138, 135, 130, 114, 125, 134, 138, 125, 113, 132, 137, 126, 133, 127, 115, 135, 131, 125, 127, 136, 131, 118, 126, 131, 132, 136, 118, 118, 137, 132, 133, 125, 110, 139, 135, 135, 108, 125, 141, 130, 123, 126, 133, 138, 109, 122, 141, 136, 126, 115, 128, 139, 130, 119, 124, 132, 132, 136, 123, 114, 134, 135, 135, 122, 112, 138, 133, 132, 123, 117, 135, 137, 134, 107, 126, 142, 130, 131, 116, 124, 144, 125, 113, 134, 134, 129, 134, 117, 122, 134, 138, 127, 113, 132, 135, 131, 124, 123, 131, 140, 125, 107, 136, 141, 129, 115, 127, 135, 129, 125, 132, 135, 117, 122, 133, 139, 125, 117, 129, 136, 127, 136, 121, 113, 140, 135, 132, 111, 128, 142, 123, 119, 133, 132, 130, 133, 116, 123, 134, 131, 128, 129, 136, 118, 118, 136, 131, 129, 131, 119, 126, 132, 134, 125, 123, 127, 132, 130, 130, 124, 124, 136, 139, 108, 121, 142, 135, 129, 109, 132, 137, 136, 122, 111, 138, 134, 130, 124, 118, 135, 133, 132, 116, 124, 136, 136, 130, 108, 129, 139, 133, 127, 112, 135, 135, 130, 120, 127, 134, 139, 112, 116, 142, 138, 122, 117, 131, 131, 135, 126, 120, 129, 132, 128, 126, 128, 128, 128, 128, 128, 125, 129, 130, 131, 134, 115, 124, 136, 128, 126, 130, 134, 126, 115, 132, 141, 123, 113, 133, 135, 133, 128, 115, 129, 134, 135, 124, 117, 130, 138, 133, 114, 123, 138, 137, 118, 119, 135, 132, 126, 126, 136, 129, 114, 128, 135, 130, 133, 125, 114, 134, 138, 128, 116, 129, 134, 130, 123, 128, 127, 131, 132, 122, 125, 129, 131, 131, 128, 123, 129, 131, 130, 126, 122, 131, 130, 130, 136, 111, 130, 142, 116, 124, 133, 136, 129, 115, 125, 136, 131, 135, 112, 123, 137, 137, 126, 111, 132, 142, 131, 110, 128, 139, 129, 130, 118, 128, 134, 132, 125, 117, 132, 137, 131, 114, 125, 135, 130, 130, 125, 123, 129, 134, 135, 116, 121, 136, 139, 122, 113, 137, 134, 132, 116, 124, 141, 134, 108, 127, 139, 135, 126, 111, 133, 136, 130, 133, 112, 125, 139, 135, 120, 120, 133, 128, 128, 129, 133, 128, 116, 129, 134, 130, 124, 127, 127, 128, 132, 137, 116, 120, 137, 139, 122, 116, 133, 130, 129, 129, 133, 123, 120, 134, 137, 125, 115, 131, 131, 134, 129, 119, 126, 132, 130, 133, 130, 110, 132, 138, 130, 119, 125, 140, 132, 110, 127, 138, 129, 132, 125, 118, 132, 135, 127, 123, 127, 131, 131, 128, 128, 122, 132, 129, 140, 111, 117, 147, 137, 110, 124, 139, 137, 121, 114, 137, 134, 127, 123, 128, 134, 134, 112, 124, 137, 131, 132, 120, 123, 131, 134, 129, 119, 126, 132, 134, 132, 113, 127, 143, 130, 111, 126, 140, 135, 116, 121, 137, 131, 126, 128, 128, 127, 129, 128, 128, 126, 129, 130, 130, 124, 125, 131, 142, 118, 112, 136, 138, 133, 117, 122, 134, 133, 129, 130, 117, 130, 134, 134, 121, 119, 137, 127, 124, 130, 138, 118, 122, 135, 138, 124, 113, 133, 135, 135, 120, 115, 136, 133, 129, 133, 114, 123, 139, 130, 132, 121, 123, 136, 125, 125, 134, 129, 122, 128, 131, 128, 127, 131, 125, 126, 128, 135, 130, 118, 126, 136, 130, 128, 127, 121, 130, 141, 121, 114, 134, 138, 132, 114, 125, 135, 135, 128, 117, 127, 134, 127, 125, 130, 130, 129, 135, 117, 122, 136, 131, 123, 126, 133, 136, 121, 118, 132, 133, 134, 122, 117, 134, 133, 136, 120, 116, 137, 137, 131, 113, 125, 137, 130, 134, 120, 117, 136, 139, 126, 112, 134, 135, 134, 123, 115, 139, 132, 121, 125, 130, 133, 135, 117, 120, 137, 132, 134, 120, 117, 135, 136, 133, 113, 125, 140, 135, 115, 121, 135, 135, 124, 124, 130, 138, 122, 116, 132, 133, 129, 133, 125, 118, 135, 129, 126, 125, 132, 132, 133, 117, 125, 132, 131, 128, 137, 122, 118, 135, 131, 123, 131, 138, 119, 119, 133, 136, 129, 118, 127, 133, 131, 123, 127, 129, 130, 124, 133, 130, 122, 126, 129, 130, 133, 129, 117, 128, 137, 127, 122, 129, 128, 130, 135, 121, 122, 131, 131, 135, 124, 116, 132, 135, 134, 120, 121, 136, 131, 125, 124, 130, 131, 136, 119, 116, 138, 137, 126, 109, 137, 134, 132, 124, 117, 133, 140, 128, 110, 130, 139, 127, 127, 129, 126, 128, 141, 116, 115, 136, 137, 132, 117, 122, 134, 134, 131, 117, 124, 136, 135, 120, 123, 130, 137, 129, 115, 129, 142, 124, 117, 131, 137, 132, 116, 122, 137, 131, 127, 126, 130, 126, 138, 127, 109, 131, 138, 128, 130, 124, 121, 134, 134, 134, 109, 127, 139, 135, 123, 116, 134, 137, 121, 123, 132, 136, 128, 117, 128, 136, 129, 122, 127, 128, 131, 135, 120, 122, 136, 129, 124, 127, 130, 130, 126, 124, 135, 131, 120, 127, 131, 127, 127, 133, 129, 120, 129, 131, 128, 123, 132, 129, 136, 121, 114, 138, 135, 131, 117, 122, 135, 132, 133, 124, 117, 135, 139, 125, 111, 133, 136, 130, 130, 116, 130, 135, 134, 123, 113, 135, 134, 132, 126, 118, 129, 132, 126, 129, 129, 131, 131, 115, 128, 138, 134, 119, 119, 134, 132, 130, 125, 128, 128, 139, 122, 111, 135, 137, 132, 119, 123, 133, 135, 125, 122, 129, 131, 128, 125, 128, 129, 129, 128, 128, 125, 129, 132, 136, 116, 119, 140, 130, 130, 122, 125, 133, 131, 126, 123, 132, 130, 132, 129, 116, 128, 137, 126, 125, 129, 128, 129, 135, 120, 123, 133, 137, 125, 118, 130, 131, 134, 130, 117, 128, 134, 134, 126, 116, 130, 138, 129, 119, 128, 133, 128, 124, 133, 127, 121, 135, 134, 117, 125, 132, 135, 128, 119, 128, 131, 127, 130, 134, 123, 122, 132, 130, 126, 129, 136, 119, 121, 135, 137, 121, 120, 132, 135, 127, 121, 126, 132, 130, 132, 131, 112, 130, 136, 131, 133, 114, 123, 139, 130, 132, 119, 120, 142, 132, 113, 128, 142, 127, 114, 131, 135, 135, 120, 117, 135, 133, 129, 129, 118, 130, 134, 134, 120, 117, 136, 135, 133, 116, 122, 135, 132, 129, 134, 112, 129, 137, 134, 125, 114, 137, 135, 118, 126,
   134, 136, 120, 118, 137, 134, 130, 116, 126, 133, 129, 127, 132, 128, 122, 131, 139, 115, 121, 144, 127, 117, 128, 137, 133, 116, 125, 139, 127, 122, 128, 129, 131, 134, 119, 123, 134, 134, 121, 124, 132, 137, 125, 114, 131, 140, 129, 114, 130, 137, 129, 121, 133, 125, 123, 133, 138, 122, 119, 131, 131, 130, 128, 124, 130, 137, 118, 121, 135, 133, 125, 125, 129, 130, 127, 125, 127, 132, 127, 132, 133, 110, 130, 144, 123, 116, 132, 137, 131, 113, 128, 136, 134, 128, 112, 132, 136, 132, 125, 114, 135, 133, 134, 123, 116, 132, 137, 131, 119, 124, 132, 131, 130, 133, 113, 129, 137, 131, 126, 117, 133, 140, 120, 117, 136, 133, 132, 118, 126, 136, 128, 126, 138, 117, 117, 141, 136, 118, 122, 132, 137, 129, 114, 129, 139, 131, 116, 125, 133, 130, 131, 130, 119, 126, 136, 129, 123, 128, 130, 128, 127, 126, 131, 129, 129, 125, 124, 130, 132, 128, 125, 128, 130, 129, 127, 127, 128, 130, 128, 124, 128, 131, 136, 124, 115, 133, 135, 129, 129, 119, 129, 135, 136, 112, 123, 139, 136, 125, 115, 131, 136, 127, 134, 122, 116, 137, 135, 131, 115, 126, 135, 134, 122, 123, 129, 131, 135, 123, 120, 132, 136, 125, 120, 131, 133, 134, 119, 122, 134, 131, 127, 133, 121, 124, 132, 132, 124, 125, 130, 137, 126, 117, 129, 133, 130, 127, 126, 129, 137, 122, 116, 135, 132, 128, 131, 123, 125, 131, 126, 129, 130, 133, 124, 119, 133, 135, 129, 116, 129, 133, 127, 125, 135, 132, 114, 127, 140, 132, 113, 128, 136, 135, 121, 116, 136, 133, 133, 119, 121, 136, 131, 126, 134, 122, 120, 131, 131, 131, 132, 119, 123, 135, 130, 133, 121, 121, 133, 129, 126, 130, 129, 127, 129, 130, 124, 125, 133, 130, 121, 127, 132, 129, 126, 127, 129, 129, 128, 128, 125, 130, 137, 121, 120, 131, 133, 127, 127, 129, 127, 127, 129, 130, 127, 124, 130, 133, 127, 116, 136, 136, 119, 124, 134, 132, 133, 120, 121, 133, 132, 134, 120, 119, 136, 131, 133, 122, 117, 137, 138, 120, 119, 133, 131, 131, 131, 121, 123, 135, 127, 130, 131, 121, 126, 131, 128, 134, 127, 119, 129, 130, 130, 129, 132, 123, 124, 133, 135, 125, 118, 130, 133, 132, 130, 120, 125, 133, 130, 129, 127, 127, 128, 129, 128, 126, 127, 136, 125, 122, 129, 132, 130, 124, 132, 128, 121, 130, 128, 128, 128, 135, 129, 115, 128, 138, 132, 118, 124, 134, 131, 133, 120, 121, 132, 134, 134, 118, 121, 136, 131, 134, 116, 121, 138, 130, 133, 118, 119, 139, 129, 134, 122, 116, 136, 137, 122, 122, 134, 136, 121, 118, 135, 138, 125, 118, 130, 133, 134, 122, 120, 133, 132, 131, 129, 117, 128, 134, 131, 123, 126, 130, 131, 126, 126, 134, 128, 122, 129, 130, 129, 127, 128, 127, 127, 129, 136, 125, 115, 134, 133, 133, 122, 118, 135, 138, 123, 118, 132, 133, 128, 127, 131, 124, 125, 133, 130, 120, 129, 132, 132, 130, 117, 125, 136, 135, 121, 121, 131, 134, 132, 119, 125, 131, 132, 128, 132, 122, 124, 133, 135, 124, 118, 131, 131, 129, 130, 123, 126, 131, 134, 128, 118, 128, 135, 127, 123, 128, 132, 129, 126, 129, 133, 121, 122, 133, 131, 127, 126, 129, 128, 128, 127, 127, 127, 136, 129, 117, 127, 136, 133, 118, 125, 134, 130, 127, 127, 130, 133, 117, 126, 134, 131, 125, 127, 129, 127, 126, 133, 133, 118, 124, 134, 135, 124, 120, 130, 134, 130, 122, 126, 132, 133, 122, 122, 132, 131, 126, 125, 134, 134, 117, 125, 134, 127, 128, 136, 122, 119, 132, 133, 134, 119, 121, 134, 137, 125, 116, 131, 134, 134, 122, 120, 133, 136, 123, 122, 131, 133, 127, 130, 126, 124, 133, 131, 120, 128, 133, 133, 123, 120, 130, 132, 130, 133, 121, 122, 134, 130, 130, 122, 128, 130, 129, 126, 129, 129, 128, 127, 129, 128, 128, 127, 129, 126, 128, 130, 133, 130, 115, 129, 135, 129, 130, 129, 119, 128, 133, 133, 127, 118, 133, 137, 120, 122, 132, 131, 129, 133, 121, 124, 132, 133, 127, 124, 129, 130, 126, 126, 135, 130, 117, 126, 134, 130, 132, 122, 119, 135, 132, 132, 125, 118, 132, 137, 126, 120, 129, 131, 134, 126, 118, 130, 135, 134, 118, 123, 134, 136, 126, 116, 132, 134, 133, 119, 121, 137, 136, 121, 118, 133, 132, 133, 126, 115, 132, 135, 126, 128, 128, 125, 130, 138, 114, 121, 138, 131, 125, 132, 127, 116, 136, 137, 118, 123, 132, 134, 128, 121, 128, 132, 130, 125, 127, 129, 127, 130, 127, 125, 136, 126, 119, 129, 136, 132, 116, 127, 135, 133, 128, 116, 130, 139, 121, 123, 134, 131, 125, 134, 129, 114, 129, 136, 131, 123, 126, 130, 131, 127, 125, 127, 130, 133, 129, 118, 127, 134, 130, 124, 127, 132, 127, 127, 134, 120, 124, 132, 134, 131, 117, 124, 137, 128, 127, 127, 133, 132, 113, 126, 139, 131, 122, 126, 131, 130, 126, 124, 133, 132, 122, 125, 132, 132, 124, 124, 130, 133, 133, 116, 126, 136, 131, 129, 117, 132, 132, 124, 128, 133, 125, 123, 137, 130, 117, 126, 132, 131, 128, 130, 124, 128, 131, 131, 127, 121, 131, 130, 134, 128, 114, 132, 133, 127, 125, 134, 126, 121, 136, 131, 119, 128, 132, 132, 124, 125, 129, 129, 126, 133, 132, 118, 125, 133, 133, 130, 118, 126, 134, 135, 120, 123, 131, 130, 129, 129, 126, 133, 129, 118, 128, 133, 131, 131, 123, 122, 133, 132, 124, 126, 130, 130, 127, 127, 126, 130, 129, 130, 134, 117, 122, 135, 132, 132, 119, 122, 136, 132, 132, 117, 126, 136, 134, 122, 121, 132, 131, 128, 125, 128, 131, 133, 124, 122, 130, 129, 133, 130, 119, 127, 134, 128, 131, 129, 114, 135, 139, 119, 120, 135, 132, 133, 119, 123, 135, 131, 124, 133, 127, 119, 130, 132, 126, 127, 136, 127, 117, 131, 133, 131, 130, 114, 131, 135, 130, 124, 124, 132, 129, 135, 118, 119, 137, 135, 123, 124, 130, 132, 127, 125, 128, 130, 128, 127, 126, 127, 132, 134, 119, 123, 134, 132, 132, 120, 121, 136, 130, 134, 120, 120, 136, 135, 122, 122, 131, 135, 129, 115, 128, 136, 128, 133, 123, 119, 135, 135, 127, 117, 130, 135, 129, 122, 128, 130, 129, 125, 129, 131, 131, 119, 129, 137, 123, 122, 131, 133, 132, 119, 125, 134, 126, 125, 132, 135, 118, 123, 136, 135, 117, 125, 141, 126, 117, 130, 134, 133, 124, 120, 131, 135, 128, 121, 127, 131, 131, 132, 120, 122, 138, 131, 120, 126, 135, 129, 123, 129, 132, 124, 126, 136, 125, 122, 129, 132, 130, 123, 125, 133, 134, 121, 123, 131, 133, 129, 118, 134, 134, 120, 125, 133, 131, 128, 128, 123, 131, 129, 136, 120, 115, 139, 132, 132, 120, 122, 135, 133, 131, 117, 126, 134, 131, 132, 121, 122, 133, 132, 133, 120, 122, 135, 132, 125, 126, 132, 126, 123, 129, 132, 129, 125, 131, 131, 119, 126, 133, 132, 124, 125, 129, 133, 130, 121, 127, 132, 130, 126, 127, 129, 127, 131, 132, 121, 124, 133, 135, 122, 121, 131, 133, 132, 121, 125, 129, 131, 129, 130, 125, 126, 131, 136, 120, 117, 140, 132, 119, 125, 135, 133, 119, 125, 136, 130, 121, 127, 129, 131, 133, 123, 123, 131, 130, 133, 127, 120, 129, 133, 133, 123, 123, 130, 132, 128, 130, 122, 129, 131, 131, 126, 121, 132, 138, 118, 119, 138, 130, 131, 127, 116, 135, 132, 128, 130, 118, 129, 138, 131, 113, 128, 135, 132, 128, 117, 129, 134, 134, 123, 120, 132, 133, 132, 121, 123, 133, 134, 125, 123, 131, 131, 127, 125, 128, 130, 134, 128, 115, 132, 134, 129, 128, 121, 129, 133, 126, 126, 128, 130, 126, 137, 123, 115, 135, 137, 124, 121, 131, 134, 125, 121, 132, 136, 125, 118, 131, 131, 133, 127, 120, 127, 133, 131, 132, 118, 125, 134, 133, 127, 118, 129, 135, 130, 121, 126, 132, 129, 125, 132, 127, 124, 129, 129, 127, 133, 128, 119, 130, 133, 133, 123, 121, 132, 135, 126, 123, 129, 131, 130, 124, 127, 129, 131, 127, 126, 127, 130, 132, 131, 120, 126, 131, 132, 126, 123, 130, 136, 123, 120, 131, 132, 129, 130, 118, 130, 133, 132, 123, 119, 134, 136, 123, 121, 130, 130, 133, 129, 118, 128, 134, 128, 128, 127, 127, 130, 130, 129, 122, 132, 132, 118, 128, 132, 133, 128, 118, 130, 137, 129, 118, 127, 133, 132, 122, 128, 134, 124, 126, 130, 131, 126, 126, 133, 126, 125, 128, 130, 130, 124, 128, 133, 125, 125, 128, 130, 130, 133, 120, 123, 136, 133, 120, 125, 135, 129, 123, 128, 131, 134, 125, 120, 130, 135, 127, 121, 129, 136, 125, 122, 132, 129, 127, 127, 128, 128, 129, 130, 130, 124, 123, 135, 132, 120, 125, 133, 130, 133, 122, 120, 134, 134, 131, 117, 127, 135, 129, 129, 123, 126, 132, 130, 129, 121, 131, 130, 135, 124, 115, 135, 138, 123, 120, 132, 131, 127, 127, 128, 127, 128, 129, 128, 126, 128, 130, 132, 123, 121, 133, 136, 124, 122, 129, 132, 132, 123, 123, 134, 134, 121, 123, 133, 130, 132, 124, 120, 134, 135, 127, 117, 131, 132, 132, 128, 119, 129, 136, 130, 121, 124, 133, 130, 125, 125, 130, 129, 133, 127, 116, 133, 133, 132, 122, 120, 133, 131, 129, 128, 122, 128, 137, 128, 117, 128, 134, 133, 123, 122, 131, 131, 132, 127, 118, 131, 134, 132, 120, 123, 137, 130, 121, 127, 135, 129, 120, 129, 135, 128, 121, 128, 132, 129, 125, 127, 128, 129, 132, 130, 118, 128, 133, 132, 130, 120, 125, 133, 130, 128, 129, 124, 128, 131, 127, 126, 136, 125, 117, 133, 133, 131, 128, 119, 129, 134, 133, 123, 121, 133, 130, 132, 127, 119, 129, 134, 133, 121, 124, 132, 133, 130, 120, 127, 133, 127, 125, 128, 134, 129, 118, 129, 133, 133, 125, 118, 132, 132, 130, 128, 119, 131, 131, 131, 129, 119, 128, 136, 130, 122, 126, 131, 134, 125, 121, 131, 131, 131, 126, 122, 132, 137, 122, 118, 134, 132, 127, 127, 128, 130, 135, 115, 123, 136, 131, 126, 126, 129, 133, 122, 123, 138, 126, 121, 129, 133, 130, 123, 127, 135, 127, 123, 129, 132, 127, 125, 129, 132, 124, 127, 130, 128, 127, 128, 127, 129, 132, 126, 123, 129, 130, 132, 128, 120, 128, 136, 127, 121, 130, 134, 132, 118, 125, 135, 129, 130, 128, 121, 129, 132, 128, 127, 128, 129, 128, 127, 128, 128, 128, 127, 127, 130, 133, 124, 123, 130, 130, 130, 131, 122, 124, 133, 129, 124, 126, 131, 130, 133, 118, 125, 136, 128, 130, 126, 122, 132, 132, 131, 119, 125, 136, 130, 122, 127, 129, 132, 129, 122, 127, 133, 133, 122, 121, 134, 130, 131, 125, 122, 132, 135, 128, 115, 132, 133, 130, 130, 118, 128, 134, 133, 125, 121, 130, 131, 129, 131, 125, 122, 131, 132, 127, 125, 130, 131, 124, 125, 129, 134, 127, 121, 129, 134, 131, 118, 128, 133, 133, 125, 119, 132, 132, 127, 128, 128, 126, 130, 136, 119, 120, 136, 133, 130, 120, 126, 133, 133, 124, 123, 129, 131, 133, 123, 123, 131, 132, 131, 119, 127, 133, 132, 126, 120, 131, 134, 127, 122, 128, 131, 130, 127, 128, 127, 130, 130, 123, 131, 128, 124, 130, 130, 129, 127, 128, 128, 129, 128, 128, 127, 127, 129, 133, 125, 122, 130, 132, 132, 124, 123, 130, 130, 133, 125, 122, 131, 131, 132, 122, 122, 134, 134, 124, 118, 133, 131, 133, 122, 122, 134, 135, 122, 122, 131, 130, 127, 130, 132, 121, 125, 131, 128, 128, 129, 133, 122, 123, 134, 133, 124, 122, 130, 133, 131, 121, 126, 131, 130, 130, 131, 118, 127, 136, 129, 121, 130, 131, 132, 126, 120, 131, 134, 129, 120, 126, 134, 129, 125, 126, 129, 130, 131, 128, 119, 131, 131, 132, 126, 121, 130, 130, 129, 127, 128, 129, 131, 126, 121, 129, 132, 128, 126, 128, 133, 129, 121, 127, 132, 130, 125, 127, 129, 129, 126, 127, 131, 133, 121, 123, 134, 130, 131, 119, 127, 134, 133, 123, 123, 130, 130, 128, 133, 124, 121, 133, 133, 129, 118, 128, 132, 132, 126, 121, 134, 133, 120, 125, 132, 132, 130, 119, 127, 133, 133, 125, 119, 133, 130, 132, 124, 120, 133, 133, 127, 123, 129, 130, 129, 133, 119, 124, 136, 133, 123, 121, 132, 131, 132, 123, 122, 132, 133, 128, 121, 128, 135, 129, 120, 128, 132, 133, 123, 122, 132, 131, 127, 128, 126, 129, 128, 135, 122, 118, 137, 131, 132, 118, 127, 135, 129, 132, 123, 121, 134, 130, 131, 124, 122, 132, 133, 126, 122, 135, 128, 120, 130, 131, 132, 128, 120, 128, 132, 129, 127, 129, 128, 128, 128, 129, 125, 128, 134, 124, 124, 130, 131, 128, 125, 131, 127, 126, 129, 130, 128, 127, 128, 128, 127, 127, 132, 130, 121, 127, 132, 129, 131, 121, 127, 133, 126, 126, 131, 128, 125, 128, 129, 127, 131, 129, 123, 129, 128, 128, 129, 129, 127, 133, 125, 121, 131, 132, 128, 126, 128, 129, 129, 127, 127, 128, 130, 132, 125, 123, 131, 132, 127, 124, 129, 130, 133, 126, 121, 130, 132, 129, 131, 121, 125, 134, 132, 122, 124, 132, 130, 132, 125, 120, 133, 131, 131, 125, 121, 133, 131, 130, 123, 125, 131, 129, 131, 125, 124, 131, 131, 126, 126, 128, 132, 128, 121, 131, 135, 125, 121, 131, 131, 132, 124, 122, 133, 130, 124, 131, 131, 123, 127, 130, 130, 127, 127, 127, 128, 130, 128, 128, 127, 128, 129, 130, 127, 127, 127, 125, 131, 133, 123, 125, 131, 133, 127, 120, 130, 132, 128, 126, 128, 132, 124, 122, 132, 134, 125, 124, 129, 131, 131, 123, 126, 129, 133, 127, 121, 130, 131, 128, 132, 121, 124, 133, 133, 123, 123, 131, 131, 131, 122, 124, 133, 129, 131, 123, 123, 133, 132, 129, 118, 129, 132, 132, 124, 122, 131, 134, 127, 121, 130, 131, 131, 126, 121, 131, 131, 132, 122, 123, 132, 133, 127, 121, 129, 131, 132, 126, 121, 131, 131, 130, 127, 121, 132, 131, 131, 121, 125, 132, 131, 130, 121, 126, 135, 129, 121, 129, 131, 132, 125, 121, 133, 131, 131, 121, 125, 133, 132, 125, 123, 129, 130, 132, 127, 122, 129, 132, 128, 127, 128, 128, 132, 124, 123, 131, 130, 130, 130, 121, 128, 134, 127, 125, 129, 132, 127, 125, 129, 130, 128, 127, 128, 128, 128, 127, 127, 131, 129, 124, 128, 130, 128, 126, 128, 131, 129, 123, 130, 133, 125, 125, 129, 131, 129, 124, 130, 130, 125, 126, 130, 129, 132, 122, 123, 133, 129, 127, 128, 128, 127, 129, 129, 128, 123, 131, 133, 121, 126, 131, 131, 129, 122, 127, 131, 130, 128, 132, 125, 123, 132, 132, 125, 125, 132, 128, 126, 128, 128, 127, 130, 131, 123, 125, 130, 132, 128, 124, 128, 130, 129, 124, 131, 130, 124, 126, 131, 129, 131, 125, 123, 132, 129, 127, 128, 130, 126, 126, 129, 128, 127, 128, 128, 129, 128, 126, 130, 130, 125, 127, 129, 130, 128, 126, 128, 129, 128, 127, 127, 129, 131, 131, 122, 126, 131, 130, 128, 128, 126, 128, 130, 132, 123, 123, 131, 131, 130, 125, 124, 129, 130, 132, 126, 122, 130, 131, 128, 131, 123, 124, 135, 129, 123, 127, 130, 129, 131, 126, 122, 130, 131, 131, 124, 124, 130, 132, 128, 123, 128, 131, 129, 126, 127, 129, 129, 127, 127, 128, 132, 129, 122, 127, 131, 129, 127, 128, 127, 128, 128, 129, 127, 127, 128, 133, 129, 117, 130, 135, 127, 123, 129, 130, 132, 125, 123, 131, 133, 126, 122, 129, 130, 131, 127, 121, 130, 131, 129, 130, 120, 129, 132, 130, 127, 122, 131, 132, 129, 122, 127, 132, 131, 123, 125, 130, 131, 130, 123, 125, 132, 128, 129, 126, 127, 129, 132, 127, 119, 131, 133, 128, 121, 130, 131, 128, 126, 130, 132, 121, 125, 133, 129, 128, 129, 125, 127, 129, 131, 128, 124, 128, 130, 131, 127, 125, 128, 129, 131, 128, 123, 128, 132, 128, 125, 128, 132, 129, 123, 128, 130, 131, 126, 123, 130, 131, 127, 126, 128, 129, 128, 127, 127, 129, 129, 128, 131, 125, 125, 130, 129, 127, 127, 128, 129, 128, 127, 129, 127, 128, 131, 125, 126, 130, 129, 127, 128, 130, 128, 126, 127, 129, 131, 126, 126, 129, 130, 130, 125, 124, 131, 129, 131, 127, 123, 129, 131, 128, 126, 128, 128, 129, 128, 127, 128, 128, 131, 128, 123, 129, 131, 128, 126, 128, 131, 129, 125, 128, 129, 129, 130, 126, 125, 129, 129, 131, 126, 125, 129, 132, 128, 123, 128, 129, 129, 130, 127, 125, 130, 130, 127, 127, 128, 129, 130, 129, 124, 127, 129, 128, 129, 128, 126, 128, 128, 129, 130, 125, 127, 129, 129, 128, 128, 128, 128, 130, 127, 126, 128, 129, 129, 126, 127, 129, 129, 128, 127, 128, 128, 128, 128, 131, 127, 124, 129, 130, 129, 126, 127, 129, 128, 127, 127, 129, 129, 126, 129, 128, 125, 128, 128, 129, 130, 125, 126, 130, 131, 126, 125, 129, 131, 128, 124, 128, 130, 131, 125, 125, 130, 130, 130, 125, 124, 131, 130, 130, 124, 125, 131, 131, 127, 124, 128, 130, 129, 131, 124, 125, 132, 131, 125, 123, 131, 129, 131, 124, 126, 131, 131, 127, 124, 128, 131, 128, 126, 127, 129, 130, 125, 126, 129, 131, 128, 124, 128, 130, 129, 126, 127, 128, 129, 129, 130, 123, 127, 133, 130, 123, 127, 131, 131, 127, 124, 130, 130, 130, 127, 123, 130, 130, 130, 125, 125, 130, 131, 127, 123, 130, 130, 130, 125, 125, 130, 129, 129, 129, 124, 128, 129, 129, 130, 126, 126, 129, 128, 128, 128, 128, 128, 128, 127, 130, 129, 126, 127, 129, 129, 130, 126, 125, 129, 128, 127, 128, 129, 130, 124, 127, 131, 130, 125, 125, 130, 130, 127, 127, 128, 129, 129, 130, 126, 124, 130, 129, 130, 128, 123, 129, 130, 130, 126, 125, 130, 130, 127, 129, 128, 126, 128, 129, 129, 129, 129, 123, 130, 130, 130, 125, 126, 131, 128, 126, 129, 129, 128, 127, 131, 127, 123, 129, 131, 130, 125, 127, 129, 130, 127, 127, 128, 129, 128, 128, 127, 129, 129, 126, 128, 128, 130, 129, 126, 127, 130, 129, 126, 127, 129, 129, 128, 127, 128, 128, 129, 129, 125, 127, 129, 129, 128, 127, 128, 128, 128, 130, 127, 126, 128, 129, 129, 129, 126, 127, 129, 130, 128, 126, 129, 129, 126, 127, 129, 129, 127, 128, 128, 127, 129, 127, 128, 128, 127, 129, 130, 126, 127, 128, 130, 129, 126, 127, 129, 129, 127, 127, 128, 128, 128, 128, 128, 128, 128, 129, 128, 127, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 130, 128, 125, 128, 130, 130, 125, 126, 131, 128, 126, 128, 129, 128, 127, 128, 129, 128, 128, 128, 128, 128, 129, 129, 126, 127, 129, 129, 130, 126, 126, 130, 130, 128, 125, 128, 129, 130, 128, 125, 129, 129, 129, 128, 124, 128, 129, 130, 127, 125, 129, 130, 129, 125, 127, 130, 128, 128, 128, 128, 128, 130, 127, 124, 130, 130, 129, 126, 127, 129, 129, 127, 127, 129, 129, 127, 127, 128, 129, 129, 128, 126, 128, 129, 129, 127, 127, 129, 129, 127, 127, 128, 128, 128, 128, 129, 129, 127, 128, 129, 128, 128, 128, 129, 127, 126, 128, 130, 127, 126, 128, 130, 129, 125, 127, 129, 129, 128, 128, 128, 128, 127, 128, 129, 128, 128, 128, 128, 128, 128, 128, 128, 129, 127, 127, 129, 130, 127, 127, 128, 129, 129, 129, 126, 127, 129, 128, 129, 127, 126, 129, 129, 128, 127, 128, 128, 129, 129, 126, 127, 129, 129, 128, 126, 128, 129, 128, 128, 129, 129, 127, 127, 129, 128, 127, 128, 128, 128, 128, 128, 129, 127, 127, 128, 129, 128, 128, 128, 128, 128, 128, 128, 128, 127, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, 127, 127, 129, 128, 128, 128, 128, 128, 128, 128, 129, 128, 127, 128, 128, 128, 128, 129, 128, 127, 128, 128, 128, 128, 128, 129, 128, 127, 128, 129, 129, 127, 127, 128, 129, 128, 127, 128, 128, 129, 128, 127, 128, 129, 129, 127, 127, 128, 128, 129, 128, 126, 128, 129, 129, 127, 127, 128, 129, 128, 127, 128, 128, 129, 128, 127, 128, 128, 128, 128, 128, 128, 129, 128, 127, 128, 128, 129, 128, 127, 128, 129, 128, 127, 128, 128, 129, 129, 127, 128, 129, 129, 128, 127, 128, 129, 128, 128, 127, 127, 128, 129, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, 128, 127, 128, 128, 128, 129, 127, 127, 129, 128, 129, 128, 127, 128, 128, 129, 128, 127, 128, 128, 128, 128, 127, 128, 129, 128, 127, 128, 129, 128, 128, 128, 128, 128, 128, 128, 128, 129, 128, 127, 128, 128, 128, 129, 127, 127, 129, 129, 128, 127, 128, 128, 128, 129, 128, 127, 128, 128, 129, 127, 127, 128, 129, 128, 127, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 127, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 127, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128
};

//array of intervals for the tempo (20 - 275 bpm)
uint16_t intervalBPM[] = {
  47059, 44818, 42781, 40921, 39216, 37647, 36199, 34858, 33613, 32454, 31373, 30361, 29412, 28520, 27682, 26891, 26144, 25437, 24768, 24133, 23529, 22956, 22409, 21888, 21390, 20915, 20460, 20025, 19608, 19208, 18824, 18454, 18100, 17758, 17429, 17112, 16807, 16512, 16227, 15952, 15686, 15429, 15180, 14939, 14706, 14480, 14260, 14047, 13841, 13640, 13445, 13256, 13072, 12893, 12719, 12549, 12384, 12223, 12066, 11914, 11765, 11619, 11478, 11339, 11204, 11073, 10944, 10818, 10695, 10575, 10458, 10343, 10230, 10120, 10013, 9907, 9804, 9703, 9604, 9507, 9412, 9319, 9227, 9138, 9050, 8964, 8879, 8796, 8715, 8635, 8556, 8479, 8403, 8329, 8256, 8184, 8114, 8044, 7976, 7909, 7843, 7778, 7715, 7652, 7590, 7529, 7470, 7411, 7353, 7296, 7240, 7185, 7130, 7077, 7024, 6972, 6920, 6870, 6820, 6771, 6723, 6675, 6628, 6582, 6536, 6491, 6446, 6403, 6359, 6317, 6275, 6233, 6192, 6151, 6112, 6072, 6033, 5995, 5957, 5919, 5882, 5846, 5810, 5774, 5739, 5704, 5670, 5636, 5602, 5569, 5536, 5504, 5472, 5440, 5409, 5378, 5348, 5317, 5288, 5258, 5229, 5200, 5171, 5143, 5115, 5087, 5060, 5033, 5006, 4980, 4954, 4928, 4902, 4877, 4851, 4827, 4802, 4778, 4753, 4730, 4706, 4682, 4659, 4636, 4614, 4591, 4569, 4547, 4525, 4503, 4482, 4461, 4440, 4419, 4398, 4378, 4357, 4337, 4317, 4298, 4278, 4259, 4240, 4221, 4202, 4183, 4164, 4146, 4128, 4110, 4092, 4074, 4057, 4039, 4022, 4005, 3988, 3971, 3955, 3938, 3922, 3905, 3889, 3873, 3857, 3842, 3826, 3810, 3795, 3780, 3765, 3750, 3735, 3720, 3705, 3691, 3676, 3662, 3648, 3634, 3620, 3606, 3592, 3579, 3565, 3552, 3538, 3525, 3512, 3499, 3486, 3473, 3460, 3448, 3435, 3422
};

uint16_t antilogTable[] = {
  64830,64132,63441,62757,62081,61413,60751,60097,59449,58809,58176,57549,56929,56316,55709,55109,
  54515,53928,53347,52773,52204,51642,51085,50535,49991,49452,48920,48393,47871,47356,46846,46341,
  45842,45348,44859,44376,43898,43425,42958,42495,42037,41584,41136,40693,40255,39821,39392,38968,
  38548,38133,37722,37316,36914,36516,36123,35734,35349,34968,34591,34219,33850,33486,33125,32768
};
uint16_t mapPhaseInc(uint16_t input) {
  return (antilogTable[input & 0x3f]) >> (input >> 6);
}

// kromaticna tabela
//
uint16_t midiTable[] = {
  17,18,19,20,22,23,24,26,27,29,31,32,34,36,38,41,43,46,48,51,54,58,61,65,69,73,
  77,82,86,92,97,103,109,115,122,129,137,145,154,163,173,183,194,206,218,231,
  244,259,274,291,308,326,346,366,388,411,435,461,489,518,549,581,616,652,691,
  732,776,822,871,923,978,1036,1097,1163,1232,1305,1383,1465,1552,1644,1742,
  1845,1955,2071,2195,2325,2463,2610,2765,2930,3104,3288,3484,3691,3910,4143,
  4389,4650,4927,5220,5530,5859,6207,6577,6968,7382,7821,8286,8779,9301,9854,
  10440,11060,11718,12415,13153,13935,14764,15642,16572,17557,18601,19708,20879,
  22121,23436,24830,26306
};

uint16_t pentatonicTable[54] = {
  0,19,22,26,29,32,38,43,51,58,65,77,86,103,115,129,154,173,206,231,259,308,346,
  411,461,518,616,691,822,923,1036,1232,1383,1644,1845,2071,2463,2765,3288,
  3691,4143,4927,5530,6577,7382,8286,9854,11060,13153,14764,16572,19708,22121,26306
};

uint16_t mapMidi(uint16_t input) {
  return (midiTable[(1023-input) >> 3]);
}

uint16_t mapPentatonic(uint16_t input) {
  uint8_t value = (1023-input) / (1024/53);
  return (pentatonicTable[value]);
}

uint8_t cosinusTable[] = {
 128, 131, 134, 137, 140, 143, 146, 149, 152, 155, 158, 162, 165, 167, 170, 173, 176, 179, 182, 185, 188, 190, 193, 196, 198, 201, 203, 206, 208, 211, 213, 215, 218, 220, 222, 224, 226, 228, 230, 232, 234, 235, 237, 238, 240, 241, 243, 244, 245, 246, 248, 249, 250, 250, 251, 252, 253, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 253, 252, 251, 250, 250, 249, 248, 246, 245, 244, 243, 241, 240, 238, 237, 235, 234, 232, 230, 228, 226, 224, 222, 220, 218, 215, 213, 211, 208, 206, 203, 201, 198, 196, 193, 190, 188, 185, 182, 179, 176, 173, 170, 167, 165, 162, 158, 155, 152, 149, 146, 143, 140, 137, 134, 131, 128, 124, 121, 118, 115, 112, 109, 106, 103, 100, 97, 93, 90, 88, 85, 82, 79, 76, 73, 70, 67, 65, 62, 59, 57, 54, 52, 49, 47, 44, 42, 40, 37, 35, 33, 31, 29, 27, 25, 23, 21, 20, 18, 17, 15, 14, 12, 11, 10, 9, 7, 6, 5, 5, 4, 3, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 4, 5, 5, 6, 7, 9, 10, 11, 12, 14, 15, 17, 18, 20, 21, 23, 25, 27, 29, 31, 33, 35, 37, 40, 42, 44, 47, 49, 52, 54, 57, 59, 62, 65, 67, 70, 73, 76, 79, 82, 85, 88, 90, 93, 97, 100, 103, 106, 109, 112, 115, 118, 121, 124 
};

uint8_t randomTable[] = {
  210, 231, 60, 244, 12, 92, 243, 126, 86, 108, 37, 147, 13, 110, 45, 250, 207, 19, 227, 78, 117, 62, 235, 124, 165, 177, 166, 118, 80, 237, 35, 140, 28, 101, 179, 162, 12, 65, 198, 232, 129, 17, 105, 205, 90, 46, 51, 179, 90, 207, 152, 30, 128, 80, 17, 6, 190, 98, 224, 163, 220, 195, 101, 12, 236, 207, 43, 219, 106, 254, 178, 99, 109, 155, 160, 53, 148, 119, 18, 121, 9, 116, 111, 234, 92, 153, 212, 194, 127, 223, 87, 101, 186, 194, 255, 29, 16, 62, 181, 247, 93, 236, 200, 122, 183, 118, 29, 8, 222, 59, 49, 153, 67, 150, 159, 217, 202, 81, 12, 66, 84, 29, 174, 100, 86, 65, 43, 65, 242, 4, 225, 207, 117, 151, 241, 253, 134, 8, 42, 147, 60, 104, 56, 15, 10, 21, 198, 135, 96, 133, 41, 113, 73, 183, 124, 6, 200, 190, 133, 100, 173, 105, 40, 78, 10, 61, 104, 139, 225, 218, 233, 152, 141, 248, 176, 127, 244, 201, 84, 124, 214, 26, 127, 216, 1, 181, 138, 232, 71, 203, 86, 161, 203, 227, 106, 38, 76, 178, 129, 186, 232, 81, 151, 105, 209, 97, 219, 5, 81, 242, 117, 197, 130, 195, 123, 57, 241, 87, 219, 23, 105, 153, 172, 164, 89, 227, 212, 127, 84, 170, 11, 164, 201, 139, 12, 92, 146, 244, 166, 165, 223, 176, 214, 240, 201, 162, 123, 95, 65, 160, 43, 133, 182, 168, 173, 175, 116, 46, 26, 253, 198, 57, 99, 26, 214, 26, 129, 58, 188, 191, 54, 200, 198, 10, 81, 87, 249, 182, 101, 74, 198, 219, 121, 94, 162, 187, 214, 170, 236, 95, 160, 91, 2, 105, 142, 99, 193, 67, 64, 99, 30, 86, 40, 163, 70, 203, 175, 202, 249, 6, 250, 65, 174, 152, 139, 99, 12, 87, 35, 105, 83, 208, 39, 7, 45, 249, 233, 45, 181, 64, 236, 52, 188, 82, 194, 20, 52, 219, 252, 235, 141, 32, 201, 104, 8, 57, 38, 153, 236, 70, 158, 161, 113, 35, 216, 101, 36, 76, 197, 2, 17, 57, 76, 228, 156, 38, 64, 93, 63, 98, 109, 255, 254, 75, 253, 102, 85, 205, 243, 26, 74, 241, 91, 154, 200, 145, 97, 140, 182, 155, 255, 227, 235, 87, 227, 73, 37, 146, 21, 205, 129, 132, 29, 61, 29, 149, 8, 23, 131, 177, 159, 126, 55, 216, 122, 142, 229, 253, 239, 81, 201, 55, 185, 47, 216, 160, 95, 89, 5, 97, 83, 11, 12, 26, 163, 213, 128, 83, 56, 141, 137, 93, 199, 201, 169, 80, 252, 159, 145, 204, 164, 95, 16, 123, 221, 162, 229, 250, 227, 157, 28, 29, 245, 35, 116, 7, 143, 62, 102, 20, 233, 184, 158, 32, 94, 215, 221, 124, 129, 203, 59, 111, 32, 231, 209, 146, 209, 79, 248, 7, 80, 163, 38, 109, 3, 156, 117, 250, 179, 49, 80, 128, 229, 251, 161, 219, 195, 187, 221, 168, 237, 167, 150, 169, 69, 100, 12, 30, 166, 63, 159, 249, 106, 86, 164, 77, 20, 62, 74, 31, 29, 158, 175, 76, 252, 222, 204, 145, 177, 66, 239, 145, 235, 141, 73, 193, 116, 223, 253, 144, 110, 141, 23, 173, 23, 232, 15, 232, 18, 97, 189, 246, 212, 65, 220, 192, 36, 254, 204, 101, 222, 211, 61, 73, 109, 103, 71, 50, 240, 95, 147, 5, 190, 12, 38, 87, 228, 13, 111, 242, 11, 112, 217, 72, 65, 217, 15, 73, 213, 91, 33, 166, 246, 218, 177, 0, 101, 10, 20, 71, 89, 227, 85, 211, 70, 115, 21, 109, 33, 225, 42, 178, 43, 30, 133, 34, 231, 252, 109, 22, 134, 138, 35, 210, 193, 196, 6, 33, 59, 37, 251, 179, 29, 148, 67, 66, 186, 39, 243, 193, 47, 71, 133, 187, 255, 200, 23, 112, 31, 197, 122, 171, 201, 93, 174, 139, 62, 186, 22, 247, 56, 1, 50, 217, 144, 196, 134, 43, 80, 142, 195, 78, 144, 40, 31, 176, 238, 242, 210, 124, 208, 93, 174, 239, 135, 61, 143, 60, 181, 189, 37, 67, 108, 5, 235, 77, 50, 172, 129, 123, 9, 250, 111, 245, 42, 28, 197, 242, 102, 166, 159, 84, 208, 241, 83, 57, 207, 178, 125, 122, 10, 25, 253, 101, 50, 227, 120, 91, 238, 66, 4, 213, 103, 246, 238, 87, 212, 8, 7, 153, 63, 20, 106, 11, 80, 182, 155, 231, 252, 42, 164, 193, 182, 143, 2, 40, 215, 53, 216, 183, 188, 255, 213, 98, 18, 82, 130, 58, 22, 236, 56, 204, 217, 212, 119, 218, 251, 209, 212, 193, 241, 249, 85, 79, 165, 96, 202, 198, 62, 114, 156, 179, 27, 47, 71, 137, 148, 161, 121, 59, 209, 251, 98, 80, 81, 99, 255, 205, 123, 86, 142, 170, 148, 89, 62, 52, 52, 179, 82, 153, 112, 80, 201, 106, 15, 38, 216, 240, 155, 34, 48, 65, 18, 171, 144, 224, 125, 215, 13, 70, 213, 106, 214, 32, 42, 138, 181, 11, 130, 16, 155, 19, 207, 90, 114, 63, 143, 116, 209, 168, 51, 13, 91, 139, 199, 53, 98, 240, 202, 179, 179, 126, 116, 107, 86, 122, 56, 245, 28, 164, 159, 173, 17, 149, 230, 219, 211, 217, 255, 70, 242, 73, 190, 169, 85, 237, 181, 134, 17, 152, 142, 170, 53, 96, 115, 136, 45, 235, 94, 194, 249, 211, 123, 42, 130, 65, 219, 76, 45, 1, 225, 156, 1, 98, 54, 113, 166, 82, 50, 252, 50, 38, 27, 72, 11, 86, 55, 104, 79, 19, 45, 173, 97, 47, 60, 65, 15, 40, 117, 101, 176, 239, 119, 244, 55, 210, 97, 215, 195, 100, 67, 221, 76, 17, 195, 116, 173, 217, 19, 159, 249, 143, 134, 226, 175, 220, 43, 32, 65, 247, 47, 115, 82, 179, 204, 222, 122, 107, 57, 220, 224, 11, 17, 86, 202, 98, 216, 179, 8, 67, 83, 85, 68, 60, 104, 203, 149, 50, 53, 116, 211, 76, 143, 255
};

uint8_t sinrandTable[] = {
  145, 120, 107, 129, 76, 164, 91, 106, 94, 111, 136, 153, 83, 95, 118, 129, 166, 147, 212, 188, 157, 125, 103, 116, 127, 159, 205, 222, 188, 130, 124, 157, 187, 206, 218, 223, 224, 198, 165, 223, 174, 123, 223, 134, 201, 187, 122, 202, 208, 240, 200, 220, 155, 170, 177, 149, 224, 231, 139, 237, 140, 175, 224, 212, 145, 236, 152, 208, 132, 210, 145, 167, 217, 140, 134, 146, 158, 149, 146, 231, 173, 153, 239, 225, 242, 224, 120, 230, 192, 177, 204, 191, 206, 157, 126, 170, 231, 212, 138, 163, 107, 229, 220, 196, 201, 181, 138, 159, 171, 145, 201, 145, 164, 184, 208, 95, 183, 204, 157, 127, 76, 156, 134, 105, 193, 125, 96, 136, 191, 122, 76, 104, 176, 126, 124, 86, 113, 52, 109, 51, 126, 123, 169, 91, 141, 119, 115, 113, 78, 82, 40, 65, 86, 68, 103, 63, 103, 47, 67, 53, 29, 89, 89, 63, 52, 71, 32, 46, 126, 137, 30, 20, 134, 75, 12, 23, 90, 119, 20, 32, 128, 88, 20, 122, 110, 47, 111, 78, 46, 115, 24, 33, 5, 21, 47, 123, 1, 50, 10, 76, 105, 77, 86, 48, 99, 112, 57, 84, 61, 123, 98, 39, 44, 72, 75, 132, 105, 109, 105, 74, 52, 74, 63, 40, 38, 89, 82, 29, 70, 62, 140, 88, 58, 110, 145, 122, 100, 40, 60, 132, 74, 102, 122, 61, 73, 73, 87, 60, 167, 82, 76, 133, 81, 98, 171, 132
};


void audioOn() {
  // Set up PWM to 31372.549 (16000000/510), phase correct
  // 8 bit timer (0->255->0 => phase correct PWM)
  TCCR3A = _BV(COM3C1) | _BV(WGM30);
  TCCR3B = _BV(CS30);
  TIMSK3 = _BV(TOIE3);
}

void setup() {
  Serial.begin(115200);
  pinMode(PWM_PIN,OUTPUT);
  pinMode(LED_PIN,OUTPUT);
  
  //INPUT for KICK, SNARE, HIHAT
  DDRB &= B10001111;  //pin 10-12 set as input  
  PORTB |= B01110000;  //pin 10-12 set as HIGH (turn on pull up resistors)

  //INPUT for rhythm 
  DDRA = B00000000;  //pin 22-29 set as input
  DDRC = B00000000;  //pin 38-30 set as input
  
  PORTA = B11111111;  //pin 22-29 set as HIGH (turn on pull up resistors)
  PORTC = B11111111;  //pin 37-30 set as HIGH (turn on pull up resistors)
  
  //OUTPUT for LED 
  DDRL = B11111111;  //pin 49-42 set as output
  DDRK = B11111111;  //pin 62-69 (analog 8-15) set as output
    
  //OUTPUT for LED 
  for(int i=0; i<8; i++){
    PORTL ^= (1 << i);     // PINL is the register which handles digital pins 49-42
    delay(30);
  }

  for(int i=0; i<8; i++){
    PORTK ^= 1 << i;     // PINK is the register which handles pins 62-69 (which are actually analog pins 8-16)
    delay(30);
  }
  PORTL = B00000001;
  PORTK = B00000000;
     
  //clean up rhythm table
  for(int i=0; i<3; i++){
    for(int j=0; j<16; j++){
      rhythm [i][j]=0;
    }
  }
  
  tempoInc=0;
  
  grainDecay     = 518>>6;
  syncPhaseInc   = mapMidi(0);
  toneDecay      = 1023>>1;
  grain_freq_ctrl= 500;
  grainPhaseInc  = mapPhaseInc(grain_freq_ctrl) >>1;
  
  grainDecayHH = 512<<2;
  
  grain2DecaySN    = 525>>6;
  grainDecaySN     = 1023>>6;
  toneDecaySN      = 475>>1;
  grain_freq_ctrlSN= 378;
  grainPhaseIncSN  = mapPhaseInc(grain_freq_ctrlSN) >>1;
  grain2_freq_ctrlSN = 0;
  grain2PhaseIncSN = mapPhaseInc(grain2_freq_ctrlSN);
  
  interval = 4000;
  
  
  audioOn();
}

//here we update the parameters from the pots
void loop() {
  //length of a sixteenth
  interval = intervalBPM[analogRead(4)>>2]>>2;
  
  //KICK
  if(digitalRead(10)){
    instrument = 0;  
    if(((PINA)||(PINC))&&((millis()-PrevTimer) > momentarySwitchTime)){
      
      pin22_29ki ^= PINA;
      pin30_37ki ^= PINC;
      
      for(int i=0; i<8; i++){
        rhythm [0][i] = (pin22_29ki & (1<<i))>>i;
      }
      for(int i=8; i<16; i++){
        rhythm [0][i]=(pin30_37ki & (1<<(i-8)))>>(i-8);
      }
      PrevTimer = millis();
    }
    
    grainDecay_tmp     = analogRead(Decay1)>>6;
    toneDecay_tmp      = (analogRead(Decay2))>>1;
    grain_freq_ctrl_tmp = analogRead(Frequency0)>>2;
    
    delay(20);
    
    if(grainDecay_tmp != analogRead(Decay1)>>6)
      {grainDecay     = 5 + (analogRead(Decay1)>>6);}
    if(toneDecay_tmp != (analogRead(Decay2))>>2)
      {toneDecay      = (analogRead(Decay2))>>2;}
    if(grain_freq_ctrl_tmp != analogRead(Frequency0)>>2)
      {
        //grain_freq_ctrl= 572 + analogRead(Frequency0)>>1;
        //grainPhaseInc  = mapPhaseInc(grain_freq_ctrl) >>1;
        grain_freq_ctrl= 450 + (analogRead(Frequency0)>>1);
        grainPhaseInc  = mapPhaseInc(grain_freq_ctrl) >>1;
   }
  }
  
  //SNARE  
  if(digitalRead(11)){
    instrument=1;
    if(((PINA)||(PINC))&&((millis()-PrevTimer) > momentarySwitchTime)){
      
      pin22_29sn ^= PINA;
      pin30_37sn ^= PINC;
      
      for(int i=0; i<8; i++){
        rhythm [1][i] = (pin22_29sn & (1<<i))>>i;
      }
      for(int i=8; i<16; i++){
        rhythm [1][i]=(pin30_37sn & (1<<(i-8)))>>(i-8);
      }
      PrevTimer = millis();
    }
         
    grain2DecaySN_tmp     = analogRead(Attack3)>>3;
    grainDecaySN_tmp      = analogRead(Decay1)>>3;
    toneDecaySN_tmp       = analogRead(Decay2)>>2;
    grain_freq_ctrlSN_tmp = analogRead(Frequency0)>>3;
    
    delay(20);
    
    if(grain2DecaySN_tmp != analogRead(Attack3)>>3)
      {grain2DecaySN    = 3 + (analogRead(Attack3)>>6);}
    if(grainDecaySN_tmp != analogRead(Decay1)>>3)
      {grainDecaySN     = 3 + (analogRead(Decay1));}
    if(toneDecaySN_tmp != (analogRead(Decay2))>>2)
      {toneDecaySN      = (analogRead(Decay2))>>2;}  
    if(grain_freq_ctrlSN_tmp != analogRead(Frequency0)>>3)
      {
       grain_freq_ctrlSN = 370 + (analogRead(Frequency0)>>3);
       grainPhaseIncSN  = mapPhaseInc(grain_freq_ctrlSN) >>1;
     
      }
    grain2_freq_ctrlSN = 0;
    grain2PhaseIncSN = mapPhaseInc(grain2_freq_ctrlSN);   
  }
  
  //HIHAT
  if(digitalRead(12)){
    instrument=2;
    if(((PINA)||(PINC))&&((millis()-PrevTimer) > momentarySwitchTime)){
      
      pin22_29hh ^= PINA;
      pin30_37hh ^= PINC;
      
      for(int i=0; i<8; i++){
        rhythm [2][i] = (pin22_29hh & (1<<i))>>i;
      }
      for(int i=8; i<16; i++){
        rhythm [2][i]=(pin30_37hh & (1<<(i-8)))>>(i-8);
      }
      PrevTimer = millis();
    }
    
    grainDecayHH_tmp   = analogRead(Decay1)>>2;
    grain_freq_ctrlHH_tmp = analogRead(Frequency0)>>3;
    
    delay(20);

    if(grainDecayHH_tmp   != analogRead(Decay1)>>2)
      {grainDecayHH   = analogRead(Decay1)<<2;
    } 
    if(grain_freq_ctrlHH_tmp != analogRead(Frequency0)>>3){
        grainPhaseIncHH = 1 + (analogRead(Frequency0)>>3);
      }
  }
}

SIGNAL(PWM_INTERRUPT)
{
  if(tempoInc&0x10){
    led = tempoInc&0x07;
    PORTL = (rhythm [instrument][led] << (led));
    PORTK = (rhythm [instrument][led+8] << (led));
    if(sixteenth < 8){
      PORTL = (rhythm [instrument][led] << (led)) ^ (1<<sixteenth);
    }
    else{
      PORTK = (rhythm [instrument][led+8] << (led)) ^ (1<<(sixteenth-8));
    }
  }
  
  uint16_t value;
  uint16_t value2 = 0;
  uint16_t output;
  
  
  tempoInc++;
  kickStart = 0;  //kickStart is the flag that marks the start of the kick drum
  snareStart = 0; //when kickStart equals 1, it starts the kick sound
  hihatStart = 0; //same for snareStart and hihatStart

    
  if(tempoInc > interval){                 //if it's time for the next sixteenth
    tempoInc=0;                            //reset the counter
    sixteenth++;
    if(sixteenth == 16){
      sixteenth = 0;
    }
    kickStart = rhythm [0][sixteenth];  //check the array rhythm[instrument][hit] if there's a kick to be hit
    snareStart = rhythm [1][sixteenth]; //or a snare
    hihatStart = rhythm [2][sixteenth]; //or a hihat
  }
  
  
  if (kickStart == 1) {
    // Time to start the next kick
    grainAmp = 0xffff;
    attack = 0;
    sustain = 4095;
    release = 440001;
  }
  
  if (snareStart == 1) {
    // Time to start the next snare
    grainAmpSN = 0xffff;
    grain2AmpSN = 0xffff;
    attackSN = 0;
    sustainSN = 65535;
    releaseSN = 65535;
  }
  
  if(hihatStart == 1){
    // Time to start the next hihat
    hihatInc = 0;
    releaseHH = 1023;
  }
  

  //ATTACK KICK
  if(attack<4){
    if(attack == 0){
      grainAmp = 0;
    }
    grainAmp =+ 21845; 
    grainPhaseInc = grainPhaseInc*4;
    attack++;
    if(attack == 4){
      sustain = 0;
    }
  }
  
  //ATTACK SNARE
  if(attackSN<8){
    if(attackSN == 0){
      grainAmpSN = 0;
      grain2AmpSN = 0;
      grain2PhaseIncSNtmp = grain2PhaseIncSN;
      grain2PhaseIncSN = 0;
      grainPhaseIncSNtmp = grainPhaseIncSN*4;
    }
    grainAmpSN += 9362;
    grain2AmpSN += 4681;
    grain2PhaseIncSN += grain2PhaseIncSNtmp;
    grainPhaseIncSN = grainPhaseIncSNtmp;
    attackSN++;
    if(attackSN == 8){
      sustainSN=0;
    }
  }
  
  //SUSTAIN KICK
  if(sustain<1023){
    if((toneDecay + sustain) < grain_freq_ctrl){
      grainPhaseInc = mapPhaseInc(toneDecay + sustain) >>1;
    }
    grainAmp = 65535;
    sustain++;
    if(sustain == 1023){release = 0;}
  }
  
  //SUSTAIN SNARE
  if(sustainSN < 1536){
    if((toneDecaySN + (sustainSN >> 2)) < grain_freq_ctrlSN){
      grainPhaseIncSN = mapPhaseInc(toneDecaySN + (sustainSN >> 2)) >>1;
    }
    grain2PhaseIncSN += sustainSN;
    if(grain2AmpSN > grain2DecaySN){
      grain2AmpSN -= grain2DecaySN;
    }
    grainAmpSN = 0xffff;
    sustainSN++;
    if(sustainSN == 1536){
      releaseSN = 0;
    }
  }
  
  //RELEASE KICK
  if(release < 33363){
    if(grainAmp > grainDecay){
    grainAmp -= grainDecay;
    }
    release++;
  }
  if(grainAmp < grainDecay){
    grainAmp = 0;
  }
  
  //RELEASE SNARE
  if(releaseSN < 33363){
    if(grainAmpSN > grainDecaySN){
      grainAmpSN -= grainDecaySN;
    }
    grain2PhaseIncSN = grain2PhaseIncSN+releaseSN;
    if(grain2AmpSN > grain2DecaySN){
      grain2AmpSN -= grain2DecaySN;
    }
    releaseSN++;
  }
  if(grainAmpSN < grainDecaySN){
    grainAmpSN = 0;
  }
  if(grain2AmpSN < grain2DecaySN){
    grain2AmpSN = 0;
  }
  
  // Increment the phase of the grain oscillators
  grainPhaseAcc += grainPhaseInc;
  
  grainPhaseAccSN += grainPhaseIncSN;
  grain2PhaseAccSN += grain2PhaseIncSN;
     
  output = 16128; //it's the "DC bias" which allows us a simmetric signal

  //create the KICK signal
  value = pgm_read_byte(&waveTable[(grainPhaseAcc >> 8)]);

  // Multiply by current grain amplitude to get sample KICK
  output += value * (grainAmp >> 10) - 127*(grainAmp >> 10);

  
  //create the SNARE signal
  value = pgm_read_byte(&waveTable[(grainPhaseAccSN >> 8)]);

  // Multiply by current grain amplitude to get sample SNARE
  output += value * (grainAmpSN >> 10);
  if(output > 127*(grainAmpSN >> 10)){output -= 127*(grainAmpSN >> 10);}
  else{output = 0;}
  
  // Repeat for second grain SNARE (noise)
  value = pgm_read_byte(&waveTable[256 + (grain2PhaseAccSN >> 6)]);
  
  // Multiply by current grain amplitude to get sample SNARE
  output += value * (grain2AmpSN >> 9) ;
  if(output > 127*(grain2AmpSN >> 9)){
    output -= 127*(grain2AmpSN>>9);
  }
  else{
    output = 0;
  }
  
  //SUSTAIN HIHAT
  if(hihatInc < grainDecayHH){
    // Repeat for HIHAT  
    value2 = pgm_read_byte(&waveTable[1280 + (hihatInc & 0x0fff)]);
    output += value2 * 127;
    if(output > 16128){
      output -= 16128;
    }
    else{
      output = 0;
    }
    hihatInc += grainPhaseIncHH;
  }
  if(hihatInc == grainDecayHH){
      releaseHH = 0;
  }
  if(releaseHH < 1023){
    value2 = pgm_read_byte(&waveTable[1280 + (hihatInc & 0x3fff)]);
    // Multiply by current grain amplitude to get sample HH
    output += value2 * ((0xffff >> 9)-(releaseHH >> 3)) + (127*(releaseHH >> 3));
    if(output > 16128){
      output -= 16128;
    }
    else{
      output = 0;
    }
    hihatInc++;
    releaseHH++;
  }
  
  
  // Scale output to the available range
  output >>= 9;

  if (output > 255) output = 255;

  // Output to PWM  
  PWM_VALUE = output;
}