Forum Rule: Always post complete source code & details to reproduce any issue!
Page 2 of 6 FirstFirst 1 2 3 4 ... LastLast
Results 26 to 50 of 128

Thread: Sound for model railroading scale 1/32

  1. #26
    I believe it is possible to output sound via the DAC, if you look at the audio design tool there is an option in there for output via the teensy 3.2 DAC, along with a wiring diagram of how to set it up. Though TBH you would be better off with the audio board - you will get stereo outputs at 16bit 44.1khz (cd quality). I use the audio board extensively with my synthesiser projects, and it is very easy to use, and the audio library is very powerful!

    I'm not sure about the deisel/electric engines, but the sound generating options in the audio library could very easily mimic the steam engines to a very high quality, and with a much greater degree of control over the sounds than a recording could. If you were any good at sound design you could probably do the deisel sounds too, but not being a rail enthusiast I'm not sure of the sound of a deisel.

  2. #27
    Senior Member
    Join Date
    Apr 2014
    Posts
    322
    Yes output to DAC should definitely work. How are you getting output now...is it to LINEOUT ????. You only show connection from playFlashRaw1 to dac1.
    If you still have the SGTL5000 Audio adaptor board connected see can you output a file from the SD card or play a tone or waveform from within teensy memory. And put these through a mixer with the mixer output connected to DAC. You can connect each in turn to mixer and see what gives output. also when I did a project like this some time ago I had the play commands and functions in the loop part and only setup the connections etc in setup. There are alot on examples in the Audio folders in the libraries and on the PJRC web pages

    Regards the physical pin connections to the adaptor board. I2C,SDA and SCL control the audio card. TX and RX are the I2S data to/from teensy to audio card, I2S also uses LRCLK, BCLK and MCLK and works as teensy master and audio card is slave. The SPI is for audio data to/from the SD card to Teensy along with CS card select.


    Edit...sorry.... I think I may have misread you question in your last post.....what you are asking is not same as said I did some time ago....But should not be any different than reading from the W25Q128FV optional chip (space for it on board) and it shares the same SPI lines, you would just need the right commands etc. How are you reading your winbond chip now...??
    Last edited by Teenfor3; 04-05-2018 at 01:28 AM. Reason: Re-Thinking ??

  3. #28
    I have no Audio Adaptator (only a Teensy 3.2)
    I just want to output the soundfile "AR2BR99.TRW" (loaded in SPI Flash which is connected directly on the Teensy)
    From :
    - the SPI Flash (Winbond 25Q64BVSIG) (CS 10, Dout 11, Din 12, SCK 14)
    To :
    - DAC (pin A14) of the Teensy.

  4. #29
    Senior Member
    Join Date
    Apr 2014
    Posts
    322
    I dont actually have any SPI Flash to try except an old Atmel Dataflash.....and cannot see how to send a file to it as a named file, I can send audio data bytes to it and play back the bytes to dac but just using analogwrite(). I have tried PlaySDWav and PlaySDRaw with SD card and played samples from data arrays in teensy memory and all play good quality via dac Pin A14. So dont see why SPI flash would not work....I will get some soon and try. Regards the sounds of trains etc I googled some samples and most are while they may be continuous recordings are actually engines puffing, whistles blowing and general clatter and banging, all this could be broken down into sohrt samples of each sound and controlled by the signals from the tracks as the train passes the objects. that way you only would need the sample player for short sounds. The sounds should loop seamlessly if required. ............are you able to get any sound from any source to dac......or is it just the SPI flash that is causing the problem..??

  5. #30
    Senior Member
    Join Date
    Apr 2014
    Posts
    322
    Are you sure you have wav2trw working...????
    See the link below......Frank B says itis outdated....????

    https://forum.pjrc.com/threads/40599...wav2trw-sketch

    ....................................

  6. #31
    Yes, It's a soundfile done with "wav2trw _16"

    I have already write a programm based on : analogwrite() + IntervalTimer (sample reading synchronization) + EncodeAudio.
    There is no problem, but the size of soundfiles are very small (-> PROGMEM).

    For my application (locomotive sound), there is two ways to play sounds :
    SoundType 1 : Automatic way : Engine noise linked to speed, acceleration and deceleration (brake).
    SoundType 2 : Manual way : trigger by manual commands on the "Mobile station" Märklin (with DCC protocol)-> Whistle, horn, ...

    I would like to mix both SoundType 1 and 2 without silence when switching soundfile.

    I think now that I need an audio adaptator ?

  7. #32
    Senior Member
    Join Date
    Apr 2014
    Posts
    322
    I said I would get some spiflash to try this out, I have a project that I need more memory for as well.....so it arrived today and tried it out...
    ...and yes a RAW wav file....that is a ordinary WAV file with no header....16bit, 44100 plays out via DAC pin A14 no problem. and no Audio adaptor board and no converting using Wav2Sketch etc etc.
    Code:
    // This example is based on the following....
    //
    // Simple MP3 file player example
    //
    // https://forum.pjrc.com/threads/27059-MP3-Player-Lib-with-example?p=101537&viewfull=1#post101537
    //
    // Forum example says Requires the prop-shield and Teensy 3.2 or 3.1  ....but not needed here...
    // This example code is in the public domain.
    
    //....below is a quick modify to see if plays WAV .RAW files from SpiFlash memory
    // ....pins used are as per the Audio Adaptor board sharing SPI with SD card but Adaptor Board not enabled or used here
    
    #include <Audio.h>
    #include <Wire.h>
    #include <SPI.h>
    #include <SD.h>
    #include <SerialFlash.h>
    
    // GUItool: begin automatically generated code
    
    AudioPlaySerialflashRaw  playFlashRaw1;  //xy=269,424
    AudioOutputAnalog        dac1;           //xy=502,412
    AudioConnection          patchCord4(playFlashRaw1, 0, dac1, 0);
    
    // GUItool: end automatically generated code
    
    #define FLASH_CHIP_SELECT  6
    
    void setup() {
      Serial.begin(9600);
      AudioMemory(20); //4
    
        // using Teensy audio shield because SpiFlash chip is on it
      SPI.setSCK(14);  // Audio shield has SCK on pin 14
      SPI.setMOSI(7);  // Audio shield has MOSI on pin 7
      SPI.setMISO(12);  // Audio shield has MISO on pin 12
       
      delay(2000);
    
      // Start SerialFlash
      if (!SerialFlash.begin(FLASH_CHIP_SELECT)) {
        while (1) {
          Serial.println ("Cannot access SPI Flash chip");
          delay (1000);
        }
      }
    
      //Set Volume
    //  mixer1.gain(0, 0.5);
    //  mixer1.gain(1, 0.5);
     
    }
    
    void playFile(const char *filename)
    {
      SerialFlashFile ff = SerialFlash.open(filename);
      Serial.print("Playing file: ");
      Serial.println(ff);
    
      uint32_t sz = ff.size();
      uint32_t pos = ff.getFlashAddress();
    Serial.println(sz);
    Serial.println(pos);
    
       playFlashRaw1.play(filename);
     
      // Simply wait for the file to finish playing.
      while (playFlashRaw1.isPlaying()) {
       // yield();
      }
    }
    
    void loop() {
      
      playFile("FLTEST1.RAW");
      //delay(1000);
    }
    The memory I am using is same chip as your own, I soldered it on to the adaptor board, so I can play from SD, SPI, or Teensy memory or synth and all play out to DAC A14
    I can enable the board and use its extras as well

  8. #33
    Thanks for the example .
    1) The raw file has the following form (with a light header):
    "['(~)', 'A', 'R','2', 'B', 'R', '9', '9', '.', 'T', 'R', 'W', '|', '\\x00', '\\\\', 'û', '\\x04', '|', 125, 125, 46, 129, 255, 255, 2, 0, 254, 255, 3, 0, 253, 255, 2, 0, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 2, 0, 254, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 254, 255, 0, 0, 2, 0, 252, 255, 5, 0, 253, 255, 1, 0, 2, 0, 253, 255, 3, 0, 253, 255, 0, 0, 0, 0, 254, 255, 255, 255, 1, 0, 251, 255, 5, 0, 251, 255, 4, 0, 253, 255, 3, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 0, 0, 255, 255, 1, 0, 254, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, 3, 0, 254, 255, 1, 0, 0, 0, 255, 255, 2, 0, 253, 255, .................................................. .......
    255, 255, 253, 255, 4, 0, 251, 255, 3, 0, 253, 255, 0, 0, 0, 0, 0, 0, '(~)']"

    2) I have ordered an audio adaptor (SGTL500), a new teensy 3.2 and a SPI Flash 128M
    I am very interested in the mixer fonction (For instance : Engine noise + Horn + brake : all together)

    3) I think I can use :
    #define FLASH_CHIP_SELECT 10 (as described on the Teensy 3.2 pinout datasheet)

  9. #34
    Senior Member
    Join Date
    Apr 2014
    Posts
    322
    I don't recognise the format of your raw file, is this your trw file..??... looking at the values mix of 255 and near zeros, looks like a square wave train of pulses....seems odd..? not like anything produced by Wav2Sketch.
    The teensy you have along with the 64 Mbit memory you have will allow you to save several sound files engine noise, brakes, horn, trains arriving, trains departing etc. And just create a new instance of playFlashRaw1. PlayFlashRaw2 etc for each sound in the sketch, get them all playing through faders to mixer inputs, fadeIn and fadeOut each sound as you want it. OR adjust the gain of the mixers to switch on/ off or change loudness. OR simply say play file when you want it played. You don't need the Audio board for this bit as long as you have a way of getting the Audio files on to the spiFlash. Thats where the Audio board is handy.....it has SDcard onboard and a place for the spiFlash and both share the same SPI lines. MISO(12), MOSI(7), SCLK(14), SDCS(10), MEMCS(6). as per the schematic. I used the examples in the serialflash library, Eraseallfiles to erase everything from spiflash, Copy from SD to copy the files from SDcard to spiflash, Listfiles.. to make sure they were there. I first copied the files as 16bit, 44100, mono,.RAW files exported from Audacity headerless to SDcard using PC, then put it in the SD socket on the adaptor board and ran the sketches from the Arduino IDE. I didn't use Wav2sketch to convert to array. The sketch posted in my last post plays ordinary RAW binary files...and if I had put on several files I could have connected them via mixer etc without the Audio board function to get started.....

  10. #35
    Yes, it's my A2RBR99.TRW file (with a simplified file system: the filename is described in the header?).
    You are right : the signal seems to be a square one. In another hand, it's not a symphony of Beethoven. I will check the sound generated by my soundfile.
    I will try on your example on my configuration with 64M SPI Flash with one soundfile then two with mixer, then three ...........with the help of GUI Tools.

    Question :
    What is the difference between XXX.RAW and XXX.TRW file (given with wav2trw-16)?

  11. #36
    Senior Member
    Join Date
    Apr 2014
    Posts
    322
    I dont have a working version of wav2trw exe file. I downloaded from a link given in one of the earlier post on this thread, but when I run it in dos window or batchfile it tells me its not a valid windows32 program...????. If you have a windows version, post it and I will see what it does. Your file looks like it is converted to text type file representing 8 bit bytes.....I plotted the values looks more like PWM......but dont know...
    It probably does something the wav2sketch......you can see examples of it in the teensy audio library player examples, and it works well, it converts the wav file to text type data array of 32 bits or 4 byte words.....the first word has info on size an type of the file......and you can look at it in a text editor.....its all in hex values of each byte.
    Attached is a jpg I put together some time ago .... shows the relation between "WAV files with header" and "RAW headerless files" ..... these are binary files.....and also the same files converted with a program called wavtoCode which is a windows program that converts a WAV binary file to a 16 bit data array that can be read in a sketch.
    Attached Files Attached Files
    Last edited by Teenfor3; 04-11-2018 at 12:45 PM.

  12. #37
    In order to get a 16 bits file.trw, you have to add parameter : wav2trw -16.
    see :https://forum.pjrc.com/threads/27409...m-Serial-Flash.

    I have a PC Windows 10 and I use the wav2trw.exe given on this link :
    the https://github.com/FrankBoesing/Teen...ty/wav2trw.zip

    " wavtoCode which is a windows program that converts a WAV binary file to a 16 bit data array that can be read in a sketch"
    Ok, but it's available for small files (256 Ko max in Teensy).

  13. #38
    Senior Member
    Join Date
    Apr 2014
    Posts
    322
    Yes, OK, I had been using the -16 option, but the problem was the exe file would not run.....it told me not a windows 32 program.

    I downloaded again from the link you gave above and same thing......I am using an "antique" windows XP machine......so I tried in on another Windows 10 laptop and it ran OK and I converted 2 files OK.......but totally different format to the ones you posted earlier.....the .trw file is a binary file of the RAW data with I think 6 bytes of a header....I have no info on the structure as I dont use trw files so cannot decode it except I look it up somewhere, the 3rd and 4th byte in both is 0x00 and 0x81 so I assume little endian so that would read 0x8100. The data bytes following the header match the data byte in the actual orig WAV file........there is a log string of Zero bytes at the end of the trw file.....beyond the end of the data....???

    I have attached them to let you see and compare them with the WAV, one of the files is a small sawtooth WAV file it is done with both audacity and the Wav2Trw

    Audacity and SOX dont have any header or trailing zeros in the RAW files and both are binary

    It looks like the trw file is just a RAW binary file with a small header and trailer...???....I only took a quick look at it.....I didnt try to play it.

    I think you would be better using ordinary RAW binary files copied to spiflash and use the audio library play flash etc etc.

    Regards the WavToCode, I wasn't advocating using it in preference, it was just because it was in the pdf I posted earlier and it converts a 16 bit wav file into actual "16bit" decimal numbers in an array rather than looking at hex bytes wher it takes 2 bytes to make a 16 bit number..??
    Attached Files Attached Files
    Last edited by Teenfor3; 04-12-2018 at 01:29 AM.

  14. #39
    The common header for your files seems to be : 50 4B 03 04 14 00 00 00 08 00 ?
    I don't know the header and end structure for TRW files.
    I thought that the filename was included in the header in order to be called by the program
    or there is a light systemfile somewhere in the SPIFlash in order to find the soundfile ?

    https://forum.pjrc.com/threads/27409...m-Serial-Flash
    From Franck B
    The header is:
    - 3 Byte Length Information (24 Bit)
    - 1 Byte Format Information:
    0x01: u-law encoded, 44100 Hz
    0x02: u-law encoded, 22050 Hz
    0x03: u-law encoded, 11025 Hz
    0x81: 16 Bit PCM, 44100 Hz
    0x82: 16 Bit PCM, 22050 Hz
    0x83: 16 Bit PCM, 11025 Hz
    All Mono.
    This is the same as Pauls format (used by wav2sketch), and his invention.
    Wav2raw (as wav2sketch) converts stereo to mono.

    Last edited by Frank B; 01-10-2015 at 10:47 PM.

  15. #40
    Senior Member
    Join Date
    Apr 2014
    Posts
    322
    Yes, OK, Thanks, I can now understand the small header in the trw files now......

    The filesaw1.trw is a small sawtooth waveform of 441 samples at 16 bit 44.1k I created in Audaticy just a tone.
    So the header first 4 bytes are ( B9 01 00 81 ) corresponding to hex 0x01B9 or dec 441 and the file is actually 882 bytes long or 441 16bit samples.
    the 0x81 for the 4th byte corresponds to 44.1k 16bit PCM.

    The Whistm1.trw file has header ( 8F 1C 00 81 ) corresponding to hex 0x1C8F or dec 7311 and file length is 14622 bytes or 7311 16bit samples.
    and again 0x81 indicates play at 44.1k 16bit PCM.

    There are some Zero after the byte that is last of data....I dont know if that will cause gaps between files played tight after one another..??.

    "The common header for your files seems to be : 50 4B 03 04 14 00 00 00 08 00 ? " don't know what this is , what files is it in ??.

    The info pasted in from FrankB seems to match whats in the trw files. The other raw files are data only with no headers

    Can you reproduce the trw files to match mine by running your wav2Trw.exe etc. Did you get them playing yet...? from playflashRaw etc..?

    What I play in playflashRaw etc is just ordinary RAW binary files......just WAV files with no header and no converting..??

  16. #41
    "The common header for your files seems to be : 50 4B 03 04 14 00 00 00 08 00 ? " don't know what this is , what files is it in ??.
    50 4B 03 04 14 00 00 00 08 00 : This pattern is common at the beginning of your 3 files :Wavtrw1, AudRaw1, File1

    There are some Zero after the byte that is last of data....I dont know if that will cause gaps between files played tight after one another..??.
    I think, it's better to cut a soundfile at Zero (with the help of Audacity).

    File1.raw (beginning) :
    (no header)00 00 0C 02 19 04 24 06 33 08 3B 0A 4C 0C 55 0E
    File1.wav (beginning):
    (wav header)52 49 46 46 D2 03 00 00 57 41 56 45 66 6D 74 20 10 00 00 00 01 00 01 00 44 AC 00 00 88 58 01 00 02 00 10 00 64 61 74 61 72 03 00 00 00 00
    0C 02 19 04 24 06 33 08 3B 0A 4C 0C 55 0E

    File.trw (with wav2trw -16)
    B9 01 00 81 00 00 0C 02 19 04 24 06 33 08 3B 0A 4C 0C 55 0E

    Attached : File.txt (Change txt in trw)
    Attached Files Attached Files

  17. #42
    Senior Member
    Join Date
    Apr 2014
    Posts
    322
    I am a wee bit confused about the header info....50 4B 03 04 14 00 00 00 08 00....etc

    "The common header for your files seems to be : 50 4B 03 04 14 00 00 00 08 00 ? " don't know what this is , what files is it in ??.
    50 4B 03 04 14 00 00 00 08 00 : This pattern is common at the beginning of your 3 files :Wavtrw1, AudRaw1, File1
    But is the headers below here not the headers in the same files...and 50 4B 03 04 14 00 00 00 08 00 is not in them........????

    .................................................. .................................................. ...........................
    There are some Zero after the byte that is last of data....I dont know if that will cause gaps between files played tight after one another..??.
    I think, it's better to cut a soundfile at Zero (with the help of Audacity)..... Yes normally cut at Zero.......but if continuous clean sounds are joined even the slightest Zero or change in joined amplitude will be heard as a faint click so a string of Zeros would just be a big gap. Would be OK for sounds of people talking are train engines etc where there are gaps in the actual sound anyway.


    .................................................. .........................................

    Yes I agree these below are the headers or first few bytes I am getting in the files I create here........

    File1.raw (beginning) :
    (no header)00 00 0C 02 19 04 24 06 33 08 3B 0A 4C 0C 55 0E
    File1.wav (beginning):
    (wav header)52 49 46 46 D2 03 00 00 57 41 56 45 66 6D 74 20 10 00 00 00 01 00 01 00 44 AC 00 00 88 58 01 00 02 00 10 00 64 61 74 61 72 03 00 00 00 00
    0C 02 19 04 24 06 33 08 3B 0A 4C 0C 55 0E

    File.trw (with wav2trw -16)
    B9 01 00 81 00 00 0C 02 19 04 24 06 33 08 3B 0A 4C 0C 55 0E

    .................................................. .................................................. .......................

    .................................................. ...................................

    I have viewed this file( File.txt) in a hex editor and it reads the same header and data as mine and the ones I sent you earlier post....
    Is this my file back again or is it one you generated from the File1.wav file with Wav2Trw.
    Why did you change its extension to .txt and not keep it .trw or .raw.......It is a binary file not a text file...???
    Attached : File.txt (Change txt in trw)

    .................................................. ..............................................
    When I sent you the files in the earlier post, I sent them Zipped........They need to be unzipped and maybe Unblocked................
    Maybe thats why the header info reads different........................
    But I think we are reading the same types of files anyway........did you get them to work and play sounds...?????
    I can play them OK on my spiFlash 64Mbit with teensy SPI and DAC out...no audio adaptor.....

  18. #43
    "I am a wee bit confused about the header info....50 4B 03 04 14 00 00 00 08 00....etc"
    You are right :I think I did a mistake because I read the zip file!!!

    I have encoded your file in "trw" but it was not possible to upload with this extension, so I send it with "txt" extension.

    My code don't work (compilation ok, but no sound after I download in the Teensy). I don't understand because I only did an adaptation from your code :
    Code:
    #include <Audio.h>
    #include <Wire.h>
    #include <SPI.h>
    #include <SD.h>
    #include <SerialFlash.h>
    
    #define FLASH_CHIP_SELECT 6
      
    // GUItool: begin automatically generated code
    AudioPlaySerialflashRaw  playFlashRaw1;  //xy=228,273
    AudioOutputAnalog        dac1;           //xy=751,337
    AudioConnection          patchCord1(playFlashRaw1, 0, dac1, 0);
    // GUItool: end automatically generated code
    
    void setup() {
        Serial.begin(9600);
        while (!Serial) ;
        AudioMemory(20);
    //  analogReference(EXTERNAL);
    //************************************
    //  Set up SPI Teensy without audio Card
      SPI.setMOSI(7); //11
      SPI.setMISO(12);
      SPI.setSCK(14);
    //************************************
        delay(2000);
        
        if (!SerialFlash.begin(FLASH_CHIP_SELECT)) {
            while (1){
                Serial.println ("Cannot access SPI Flash chip");
                delay (1000);
                }
       }
    }
    void playFile(const char *filename)
    {
      SerialFlashFile ff = SerialFlash.open(filename);
      Serial.print("Playing file: ");
      Serial.println(ff);
    
      uint32_t sz = ff.size();
      uint32_t pos = ff.getFlashAddress();
      Serial.println(sz);
      Serial.println(pos);
    
      playFlashRaw1.play(filename);
      // Simply wait for the file to finish playing.
      while (playFlashRaw1.isPlaying()) {
       } 
           }    
    void loop() {
      playFile("AR2BR99.TRW");
    }

  19. #44
    Senior Member
    Join Date
    Apr 2014
    Posts
    322
    Yes all files playing...... files .RAW and files.TRW
    Are you sure your files are on spiflash......can you list them and see them

    When playing this sketch below open the terminal teensymonitor and you should see the list coming up as they are being played, The chainsaw is a fairly long sound so you have time to read it, the other sounds are very short so go up quickly. I see its always playing file 1 but you can see the size of each file, if you know other commands you can get it to print what you want. I have also attached a Zipped WAV recording of teensy playing the 4 sounds listed and the 4 sounds themselves. I am copying them to spiflash with the sketches in the serial flash library,.....Copy-from-SD, and the LIstfiles one and the Erase-all-files
    dont remember the exact names but they are in the examples folder. I copy the files first to the SDcard using windows normal from PC. Then put SD in slot in Audio board and my spiflash is on the space on the audio board.....and both share the same SPI pins...so open the Copy from SD sketch compile and upload, open the terminal while its doing it and you will see the files name and sizes and tells you it is copying or has a problem. If no errors they should be on the flash but you can run the List files sketch to check. If problems it might be better to erase all files of flash to start with....do this with the erase all sketch.
    Hopefully it will all work this time........

    Playing file: 1
    773866
    6720512
    Playing file: 1
    14852
    8364288
    Playing file: 1
    1028
    8379392
    Playing file: 1
    1028
    8380672
    Playing file: 1
    773866
    6720512
    Playing file: 1
    14852
    8364288
    Playing file: 1
    1028
    8379392
    Playing file: 1
    1028
    8380672
    Playing file: 1
    773866
    6720512

    Code:
    #include <Audio.h>
    #include <Wire.h>
    #include <SPI.h>
    #include <SD.h>
    #include <SerialFlash.h>
    
    #define FLASH_CHIP_SELECT 6
      
    // GUItool: begin automatically generated code
    AudioPlaySerialflashRaw  playFlashRaw1;  //xy=228,273
    AudioOutputAnalog        dac1;           //xy=751,337
    AudioConnection          patchCord1(playFlashRaw1, 0, dac1, 0);
    // GUItool: end automatically generated code
    
    void setup() {
        Serial.begin(9600);
        while (!Serial) ;
        AudioMemory(20);
    //  analogReference(EXTERNAL);
    //************************************
    //  Set up SPI Teensy without audio Card
      SPI.setMOSI(7); //11
      SPI.setMISO(12);
      SPI.setSCK(14);
    //************************************
        delay(2000);
        
        if (!SerialFlash.begin(FLASH_CHIP_SELECT)) {
            while (1){
                Serial.println ("Cannot access SPI Flash chip");
                delay (1000);
                }
       }
    }
    void playFile(const char *filename)
    {
      SerialFlashFile ff = SerialFlash.open(filename);
      Serial.print("Playing file: ");
      Serial.println(ff);
    
      uint32_t sz = ff.size();
      uint32_t pos = ff.getFlashAddress();
      Serial.println(sz);
      Serial.println(pos);
    
      playFlashRaw1.play(filename);
      // Simply wait for the file to finish playing.
      while (playFlashRaw1.isPlaying()) {
       } 
           }    
    void loop() {
      //playFile("AR2BR99.TRW");
    
       playFile("CHAIN01.RAW");
    
       playFile("WHISTM1.TRW");
    
       playFile("FILESAW1.TRW");
    
       playFile("FILETRW.TRW");
    }
    Attached Files Attached Files

  20. #45
    I have loaded "WHISTM1.TRW" from PC to SPI Flash with CopyFromSerial and the command : Python "rawfile-uploader.py" "COM4" "WHISTM1.TRW"(I have no SDCard reader)
    --> "WHISTM1.TRW" is in the SPI Flash :

    ReadBenchmark gives :
    All Files on SPI Flash chip:
    WHISTM1.TRW = 14852 bytes
    Read in = 7814
    usbegin = 2150147
    usend = 2157961
    us, speed = 1900.69 kbytes/sec


    But, when I lauch --> no sound :
    Code:
    #include <Audio.h>
    #include <Wire.h>
    #include <SPI.h>
    #include <SD.h>
    #include <SerialFlash.h>
    
    #define FLASH_CHIP_SELECT 10
      
    // GUItool: begin automatically generated code
    AudioPlaySerialflashRaw  playFlashRaw1;  //xy=228,273
    AudioOutputAnalog        dac1;           //xy=751,337
    AudioConnection          patchCord1(playFlashRaw1, 0, dac1, 0);
    // GUItool: end automatically generated code
    
    void setup() {
        Serial.begin(9600);
        while (!Serial) ;
        AudioMemory(20);
    //  analogReference(EXTERNAL);
    //************************************
    //  Set up SPI Teensy without audio Card
      SPI.setMOSI(11); //11
      SPI.setMISO(12);
      SPI.setSCK(14);
    //************************************
        delay(2000);
        
        if (!SerialFlash.begin(FLASH_CHIP_SELECT)) {
            while (1){
                Serial.println ("Cannot access SPI Flash chip");
                delay (1000);
                }
       }
    }
    void playFile(const char *filename)
    {
      SerialFlashFile ff = SerialFlash.open(filename);
      Serial.print("Playing file: ");
      Serial.println(ff);
    
      uint32_t sz = ff.size();
      uint32_t pos = ff.getFlashAddress();
      Serial.println(sz);
      Serial.println(pos);
    
      playFlashRaw1.play(filename);
      // Simply wait for the file to finish playing.
      while (playFlashRaw1.isPlaying()) {
       } 
           }    
    void loop() {
      playFile("WHISTM1.TRW");
    }

  21. #46
    Senior Member
    Join Date
    Apr 2014
    Posts
    322
    Still problems...???....When you attempt to play it with the above sketch does it list the file in the monitor terminal as......
    Playing file: 1
    773866
    6720512

    OR does it say "Cannot access SPI Flash chip"

    To be sure it is on the spiflash did you run ListFiles sketch.....??

    edited.................

    Just noticed.......

    are you sure you are using thes pins..???

    #define FLASH_CHIP_SELECT 10 ......I use pin6

    SPI.setMOSI(11); //11 .......I use pin7
    SPI.setMISO(12);
    SPI.setSCK(14);

  22. #47
    With "WHISTM1.TRW", the result on the monitor terminal is :
    Playing file: 1
    14852
    32768
    Playing file: 1
    14852
    32768
    .......

    I have tried with both configurations
    1)
    Code:
    #define FLASH_CHIP_SELECT 6
    SPI.setMOSI(7); 
    SPI.setMISO(12);
    SPI.setSCK(14);
    2) and (same pins as pinout done on the pinout datasheet of Teensy 3.2)
    Code:
    #define FLASH_CHIP_SELECT 10 
    SPI.setMOSI(11); 
    SPI.setMISO(12);
    SPI.setSCK(14);
    No sound !

  23. #48
    Senior Member
    Join Date
    Apr 2014
    Posts
    322
    Some one of the config should tell you Cannot access SPI flash chip.......they both cant work....????
    the 14852 is size of file same as mine.....
    are you getting sound from DAC with another sketch..?????

    This sketch is a simple Sawtooth using analogWrite only......It .will check if DAC is working

    Code:
    // Simple DAC Sawtooth wave test on Teensy 3.2
    // Change the saw1 and saw2 and DCbias values and see what happens + and - values
    // keep within 12 bit values going out to DAC
    // No timing involved, just runs at the speed of loop
    // So the larger the number in the count in the for next loop 
    // the lower the frequency
    // Also at higher frequency you can see the effect on amplitude output
    // and effect of low pass filters for change in freq.
    //
    // Note the final calculation to DAC must be always positive
    // so...... ( i + DCbias ) must be GT Zero......0 to 4095 max
    
    
       int i = 0;
       int saw1 = 0;
       int saw2 = 1000;
       int DCbias = 0;
    
    void setup() {
      analogWriteResolution(12);
    }
    
    void loop() {
       for (i=saw1; i< saw2; i++) {
       analogWrite(A14, i + DCbias);
      }
    }

  24. #49
    This sketch works :

    Code:
    IntervalTimer myTimer;
    
    const int StandbyLokBR99[] PROGMEM = { // from EncodeAudio
    130, 134, 135, 131, 124, 121, 122, 125, 129, 131, 132, 133, 130, 123, 123, 128, 126, 129, 134, 129, 121, 124, 130, 124, 120, 128, 141, 141, 129, 123, 129, 133, 132, 128, 124, 123, 125, 122, 118, 118, 121, 121, 119, 124, 135, 138, 131, 128, 132, 131, 123, 120, 125, 131, 134, 136, 132, 131, 141, 143, 131, 128, 130, 125, 126, 129, 125, 128, 134, 129, 125, 128, 126, 125, 125, 124, 124, 125, 120, 119, 118, 113, 117, 122, 120, 122, 128, 122, 117, 120, 120, 118, 118, 114, 114, 129, 142, 133, 116, 118, 132, 138, 137, 134, 133, 136, 136, 134, 143, 151, 137, 120, 122, 132, 129, 117, 113, 133, 152, 139, 118, 118, 125, 128, 125, 113, 101, 110, 126, 129, 122, 123, 133, 141, 134, 121, 121, 131, 134, 129, 123, 122, 132, 139, 135, 130, 132, 132, 132, 133, 130, 125, 122, 121, 120, 122, 129, 131, 128, 121, 122, 132, 135, 130, 124, 122, 124, 131, 133, 124, 122, 135, 142, 133, 123, 122, 124, 129, 128, 120, 118, 123, 125, 121, 116, 114, 124, 131, 129, 129, 136, 132, 119, 117, 123, 128, 132, 135, 130, 128, 137, 136, 122, 118, 126, 131, 133, 135, 133, 130, 130, 129, 121, 117, 121, 131, 137, 132, 125, 122, 122, 123, 122, 120, 124, 131, 129, 124, 126, 126, 125, 130, 129, 125, 133, 137, 128, 118, 119, 122, 124, 128, 130, 129, 128, 126, 125, 125, 124, 126, 129, 130, 128, 119, 111, 122, 143, 141, 123, 123, 139, 147, 141, 124, 114, 122, 131, 124, 120, 129, 141, 143, 131, 120, 125, 131, 123, 118, 119, 119, 120, 121, 121, 126, 128, 123, 129, 138, 136, 128, 120, 117, 118, 120, 123, 125, 121, 118, 126, 132, 131, 135, 141, 138, 134, 126, 120, 121, 128, 132, 138, 136, 128, 129, 133, 122, 113, 116, 114, 112, 118, 124, 128, 132, 135, 136, 137, 132, 123, 126, 132, 128, 128, 137, 141, 132, 120, 111, 111, 120, 133, 138, 134, 132, 135, 131, 122, 117, 117, 122, 134, 135, 125, 123, 126, 120, 118, 125, 128, 122, 123, 125, 122, 119, 119, 121, 124, 130, 139, 144, 139, 135, 137, 136, 133, 133, 132, 126, 126, 130, 131, 131, 129, 128, 130, 128, 121, 121, 118, 111, 114, 119, 113, 113, 121, 128, 138, 142, 129, 119, 123, 124, 122, 130, 137, 133, 130, 134, 138, 138, 133, 128, 132, 134, 121, 105, 110, 131, 145, 141, 130, 120, 116, 113, 108, 106, 116, 134, 145, 141, 135, 132, 132, 131, 126, 126, 135, 144, 138, 123, 109, 106, 114, 120, 119, 122, 132, 133, 125, 116, 107, 110, 124, 128, 126, 135, 141, 134, 123, 116, 114, 120, 122, 122, 136, 150, 146, 142, 147, 146, 142, 139, 134, 133, 141, 139, 123, 112, 112, 112, 116, 118, 120, 129, 128, 107, 97, 113, 131, 136, 137, 134, 129, 132, 136, 130, 122, 128, 132, 126, 120, 118, 121, 128, 131, 130, 128, 124, 125, 137, 147, 144, 133, 124, 123, 126, 122, 113, 114, 122, 128, 128, 124, 128, 133, 132, 132, 134, 130, 128, 128, 124, 120, 122, 128, 134, 130, 114, 108, 111, 117, 128, 139, 137, 131, 124, 118, 123, 136, 143, 145, 139, 129, 126, 131, 124, 117, 111, 111, 122, 135, 142, 141, 132, 122, 121, 121, 124, 133, 128, 117, 123, 126, 119, 120, 123, 125, 133, 134, 126, 131, 137, 134, 133, 130, 124, 131, 138, 135, 135, 135, 125, 125, 132, 123, 109, 109, 109, 109, 120, 132, 138, 144, 135, 120, 123, 130, 122, 120, 130, 135, 136, 134, 121, 117, 130, 138, 135, 130, 122, 118, 123, 130, 129, 128, 131, 131, 126, 123, 121, 122, 131, 135, 126, 121, 123, 122, 123, 137, 142, 129, 116, 111, 116, 126, 131, 126, 128, 132, 128, 119, 113, 119, 132, 141, 136, 131, 135, 136, 125, 116, 111, 111, 125, 148, 154, 137, 119, 109, 112, 120, 119, 120, 129, 137, 142, 138, 120, 106, 109, 117, 128, 143, 138, 118, 112, 120, 121, 125, 135, 142, 144, 141, 131, 126, 130, 133, 135, 135, 128, 125, 138, 141, 122, 112, 117, 116, 118, 131, 134, 125, 119, 117, 119, 128, 133, 133, 126, 118, 112, 111, 112, 118, 128, 132, 139, 150, 143, 125, 124, 134, 136, 135, 135, 124, 121, 135, 136, 118, 116, 128, 122, 116, 126, 135, 130, 122, 128, 144, 148, 137, 137, 137, 119, 106, 119, 129, 126, 125, 132, 131, 116, 109, 125, 143, 147, 136, 108, 92, 104, 101, 91, 111, 129, 122, 134, 146, 137, 139, 142, 129, 131, 146, 149, 152, 143, 119, 123, 141, 131, 116, 110, 108, 117, 128, 126, 124, 128, 130, 133, 137, 136, 132, 129, 128, 123, 110, 103, 112, 126, 137, 138, 123, 110, 111, 123, 138, 146, 139, 129, 125, 130, 132, 124, 117, 128, 139, 134, 125, 121, 112, 106, 118, 142, 138, 120, 137, 155, 129, 124, 152, 131, 88, 105, 131, 124, 126, 142, 144, 136, 123, 121, 133, 132, 129, 137, 124, 105, 128, 142, 122, 129, 145, 122, 111, 145, 159, 135, 120, 123, 120, 114, 116, 118, 125, 134, 118, 98, 120, 138, 120, 111, 124, 121, 123, 143, 139, 122, 126, 143, 152, 145, 118, 112, 141, 155, 150, 142, 126, 117, 123, 120, 109, 109, 113, 117, 119, 114, 111, 112, 120, 131, 126, 109, 110, 126, 132, 132, 129, 117, 118, 138, 142, 128, 135, 155, 150, 130, 119, 121, 138, 151, 133, 107, 111, 121, 121, 132, 133, 117, 124, 141, 129, 118, 126, 128, 125, 128, 118, 114, 137, 149, 125, 99, 101, 124, 143, 145, 129, 121, 135, 146, 137, 126, 121, 123, 146, 150, 120, 116, 141, 139, 122, 114, 111, 122, 136, 129, 132, 143, 126, 117, 134, 137, 128, 130, 131, 130, 132, 125, 118, 114, 114, 130, 145, 133, 116, 122, 131, 123, 123, 139, 138, 108, 96, 119, 129, 124, 141, 147, 110, 80, 100, 136, 145, 139, 149, 155, 142, 137, 147, 148, 133, 112, 97, 103, 133, 158, 147, 113, 105, 130, 143, 124, 106, 101, 112, 130, 122, 100, 105, 119, 108, 107, 143, 180, 183, 157, 124, 112, 124, 128, 111, 107, 123, 136, 130, 111, 107, 131, 159, 156, 133, 121, 116, 112, 126, 142, 130, 118, 131, 147, 146, 139, 132, 113, 96, 98, 119, 130, 117, 103, 108, 112, 105, 120, 157, 165, 139, 114, 105, 101, 109, 131, 149, 155, 149, 145, 145, 136, 114, 111, 139, 154, 141, 131, 124, 118, 126, 134, 114, 98, 111, 129, 131, 130, 132, 142, 136, 113, 112, 137, 139, 124, 130, 137, 133, 132, 126, 120, 130, 136, 124, 111, 99, 98, 123, 146, 139, 129, 117, 101, 107, 125, 129, 124, 130, 133, 131, 125, 114, 106, 112, 132, 145, 137, 129, 144, 161, 158, 144, 126, 113, 120, 142, 169, 185, 165, 119, 81, 69, 87, 135, 175, 171, 138, 109, 95, 84, 81, 99, 128, 136, 128, 122, 119, 112, 106, 93, 84, 111, 155, 171, 161, 148, 129, 119, 132, 148, 160, 169, 154, 129, 125, 123, 113, 113, 105, 93, 121, 161, 165, 162, 152, 110, 72, 71, 92, 126, 148, 123, 92, 96, 114, 126, 134, 125, 111, 121, 138, 144, 152, 162, 146, 118, 117, 134, 141, 137, 134, 131, 126, 128, 136, 148, 144, 123, 116, 123, 124, 118, 113, 116, 129, 137, 128, 121, 129, 135, 143, 137, 113, 106, 125, 137, 133, 125, 117, 119, 124, 114, 110, 123, 131, 129, 124, 117, 123, 139, 137, 120, 112, 109, 108, 108, 116, 136, 152, 138, 121, 128, 145, 154, 156, 162, 167, 142, 101, 82, 91, 109, 120, 125, 150, 185, 170, 112, 82, 98, 126, 136, 116, 94, 109, 134, 130, 110, 113, 155, 196, 186, 150, 148, 168, 162, 138, 121, 110, 105, 114, 123, 107, 86, 96, 118, 116, 103, 100, 108, 117, 111, 91, 86, 110, 126, 128, 138, 150, 144, 128, 119, 120, 128, 142, 156, 152, 133, 120, 120, 116, 123, 142, 134, 111, 114, 124, 110, 108, 121, 114, 105, 121, 143, 155, 171, 176, 152, 134, 147, 160, 149, 146, 167, 178, 169, 139, 101, 94, 121, 130, 111, 109, 112, 95, 79, 72, 70, 86, 110, 112, 106, 113, 126, 143, 167, 175, 160, 148, 149, 144, 129, 122, 131, 145, 164, 173, 155, 129, 120, 116, 104, 90, 83, 91, 101, 104, 98, 95, 100, 114, 123, 133, 150, 156, 144, 137, 138, 139, 134, 128, 136, 161, 174, 167, 154, 142, 131, 129, 125, 117, 113, 116, 111, 92, 74, 86, 112, 113, 103, 107, 114, 111, 103, 103, 119, 136, 136, 132, 136, 144, 148, 141, 124, 124, 142, 143, 123, 114, 120, 128, 129, 128, 139, 156, 154, 138, 136, 143, 142, 139, 139, 122, 95, 94, 118, 138, 141, 129, 120, 132, 152, 162, 156, 135, 109, 111, 141, 146, 122, 118, 137, 150, 150, 138, 117, 106, 109, 112, 118, 124, 116, 103, 95, 95, 107, 123, 118, 111, 131, 157, 157, 134, 111, 110, 122, 125, 123, 130, 137, 137, 133, 131, 133, 137, 148, 154, 142, 121, 116, 125, 130, 123, 118, 118, 123, 126, 124, 123, 126, 129, 122, 122, 138, 143, 128, 119, 122, 123, 126, 126, 121, 123, 123, 114, 122, 144, 149, 141, 136, 132, 131, 129, 120, 120, 134, 138, 132, 130, 124, 114, 109, 96, 85, 100, 112, 113, 124, 126, 103, 96, 118, 134, 145, 155, 150, 145, 152, 161, 162, 156, 142, 131, 132, 126, 111, 106, 119, 135, 138, 131, 125, 117, 100, 100, 119, 130, 132, 137, 136, 111, 92, 108, 139, 156, 149, 129, 118, 128, 141, 141, 136, 135, 131, 130, 130, 119, 110, 121, 131, 122, 113, 120, 125, 123, 125, 128, 120, 119, 130, 139, 129, 101, 92, 111, 125, 126, 138, 147, 141, 137, 135, 128, 134, 145, 135, 131, 136, 130, 128, 135, 125, 112, 121, 129, 126, 122, 113, 109, 119, 128, 126, 129, 133, 132, 126, 123, 123, 123, 122, 131, 145, 138, 117, 110, 121, 128, 128, 125, 117, 114, 117, 109, 103, 114, 130, 135, 137, 138, 143, 151, 152, 145, 135, 131, 143, 150, 133, 114, 119, 125, 125, 126, 125, 128, 134, 134, 126, 122, 124, 134, 141, 143, 148, 148, 146, 143, 130, 125, 130, 109, 95, 117, 116, 79, 69, 78, 92, 130, 143, 112, 100, 112, 101, 91, 121, 167, 180, 168, 186, 213, 193, 168, 176, 150, 81, 46, 74, 120, 132, 108, 93, 103, 112, 110, 90, 90, 137, 151, 101, 110, 168, 144, 94, 123, 155, 131, 134, 187, 201, 138, 78, 83, 109, 110, 105, 106, 113, 111, 91, 109, 173, 185, 135, 134, 176, 171, 131, 126, 151, 146, 110, 86, 74, 70, 110, 165, 164, 126, 98, 78, 81, 112, 136, 136, 119, 101, 104, 130, 174, 208, 186, 148, 159, 171, 142, 130, 141, 135, 132, 147, 148, 122, 93, 87, 100, 99, 88, 95, 108, 103, 105, 135, 163, 152, 137, 135, 121, 119, 151, 162, 133, 104, 95, 126, 158, 128, 95, 112, 112, 119, 160, 135, 53, 18, 17, 54, 165, 253, 251, 228, 205, 172, 168, 175, 129, 62, 77, 144, 135, 61, 44, 90, 163, 238, 206, 103, 109, 175, 142, 60, 26, 66, 168, 197, 94, 11, 22, 67, 143, 212, 215, 188, 144, 69, 26, 28, 27, 69, 171, 233, 221, 184, 162, 180, 216, 212, 176, 173, 197, 194, 158, 132, 122, 95, 62, 79, 128, 143, 111, 74, 60, 71, 100, 126, 122, 87, 72, 121, 190, 213, 170, 90, 34, 45, 75, 81, 112, 182, 208, 168, 124, 109, 125, 162, 175, 159, 141, 120, 126, 174, 178, 104, 47, 45, 65, 122, 196, 210, 182, 160, 121, 64, 39, 55, 72, 61, 42, 53, 93, 129, 157, 184, 203, 203, 176, 137, 124, 138, 158, 170, 167, 150, 133, 118, 106, 95, 88, 109, 141, 125, 84, 87, 129, 164, 183, 190, 199, 198, 143, 64, 47, 86, 121, 132, 117, 92, 85, 80, 65, 69, 86, 95, 111, 124, 106, 88, 98, 113, 135, 181, 215, 210, 183, 160, 152, 154, 144, 116, 83, 72, 97, 138, 168, 178, 170, 147, 136, 142, 147, 145, 141, 133, 121, 104, 94, 95, 92, 83, 86, 98, 104, 108, 120, 148, 187, 200, 172, 130, 95, 73, 77, 96, 108, 111, 120, 121, 107, 105, 131, 155, 157, 161, 174, 177, 155, 116, 97, 120, 150, 146, 120, 105, 104, 109, 120, 132, 134, 129, 134, 152, 165, 163, 147, 122, 101, 100, 122, 151, 159, 142, 126, 113, 106, 124, 160, 172, 155, 126, 103, 97, 98, 94, 107, 146, 170, 152, 110, 79, 71, 78, 93, 122, 148, 152, 143, 120, 92, 82, 94, 108, 125, 133, 111, 85, 85, 97, 114, 150, 169, 143, 112, 128, 167, 183, 170, 157, 158, 165, 171, 164, 141, 120, 128, 148, 168, 180, 170, 141, 117, 101, 87, 82, 88, 107, 130, 135, 129, 132, 133, 122, 114, 116, 123, 131, 122, 106, 119, 154, 169, 152, 124, 103, 95, 90, 87, 100, 113, 106, 95, 104, 133, 158, 150, 124, 117, 124, 137, 145, 131, 120, 133, 139, 132, 143, 150, 135, 120, 108, 95, 99, 110, 112, 121, 132, 132, 135, 144, 156, 171, 169, 148, 144, 139, 121, 121, 146, 159, 156, 141, 123, 123, 132, 132, 129, 123, 114, 117, 128, 129, 124, 122, 119, 122, 132, 132, 121, 101, 81, 78, 88, 95, 96, 97, 90, 86, 96, 105, 110, 120, 128, 130, 131, 136, 151, 173, 177, 161, 149, 152, 157, 157, 157, 152, 137, 121, 126, 156, 177, 163, 132, 113, 111, 114, 114, 113, 116, 116, 107, 100, 101, 103, 112, 137, 146, 130, 114, 113, 126, 149, 157, 144, 136, 134, 128, 124, 123, 119, 124, 146, 165, 162, 135, 114, 117, 121, 109, 91, 87, 103, 120, 113, 93, 83, 93, 114, 138, 148, 139, 135, 137, 136, 134, 137, 138, 138, 147, 155, 159, 160, 155, 142, 136, 131, 116, 103, 104, 110, 113, 117, 121, 124, 129, 136, 137, 133, 129, 123, 119, 121, 125, 126, 126, 120, 105, 88, 84, 96, 125, 154, 154, 133, 123, 135, 147, 149, 147, 147, 145, 137, 130, 124, 126, 134, 138, 136, 130, 122, 113, 116, 131, 143, 138, 124, 108, 98, 100, 105, 116, 133, 142, 135, 125, 116, 118, 130, 129, 116, 114, 120, 119, 117, 114, 114, 124, 130, 124, 123, 130, 133, 139, 143, 132, 122, 130, 145, 151, 155, 161, 164, 157, 144, 129, 122, 128, 132, 128, 119, 112, 103, 97, 101, 118, 132, 135, 136, 136, 130, 129, 143, 148, 133, 113, 112, 133, 147, 135, 128, 135, 124, 98, 90, 96, 100, 103, 105, 116, 128, 117, 104, 117, 135, 139, 145, 155, 150, 134, 118, 119, 136, 142, 133, 134, 135, 123, 120, 126, 124, 117, 113, 114, 128, 137, 123, 105, 109, 129, 155, 171, 157, 130, 118, 114, 113, 126, 138, 137, 133, 131, 133, 136, 135, 136, 150, 155, 130, 105, 96, 100, 118, 136, 137, 122, 104, 93, 101, 118, 123, 120, 118, 116, 114, 116, 116, 118, 121, 121, 128, 144, 158, 165, 162, 145, 132, 138, 144, 138, 138, 139, 130, 121, 117, 104, 98, 114, 130, 133, 129, 113, 107, 123, 134, 132, 138, 142, 130, 128, 138, 139, 138, 142, 142, 144, 142, 124, 111, 112, 108, 101, 104, 113, 129, 135, 130, 133, 141, 131, 119, 126, 130, 120, 113, 112, 117, 130, 134, 131, 138, 146, 129, 106, 111, 133, 135, 119, 114, 129, 133, 126, 129, 137, 139, 138, 139, 135, 122, 112, 107, 106, 109, 112, 117, 128, 132, 129, 133, 141, 136, 130, 130, 129, 137, 152, 156, 144, 131, 122, 124, 135, 141, 143, 147, 134, 110, 101, 104, 104, 111, 119, 116, 108, 103, 105, 121, 142, 146, 134, 121, 113, 112, 118, 130, 146, 150, 137, 128, 132, 132, 130, 131, 130, 126, 122, 119, 124, 130, 124, 126, 138, 137, 135, 142, 134, 120, 124, 129, 133, 144, 146, 138, 145, 151, 147, 143, 136, 126, 122, 124, 131, 136, 125, 111, 118, 132, 128, 113, 99, 90, 96, 110, 110, 104, 106, 100, 85, 92, 118, 134, 137, 136, 128, 128, 141, 145, 147, 152, 136, 118, 131, 148, 148, 145, 135, 123, 132, 143, 134, 126, 128, 124, 125, 130, 122, 116, 123, 132, 129, 118, 109, 112, 124, 129, 126, 131, 133, 122, 116, 126, 130, 117, 111, 118, 126, 136, 141, 133, 128, 135, 138, 129, 113, 105, 104, 112, 132, 144, 138, 131, 122, 109, 113, 129, 132, 130, 136, 137, 133, 138, 144, 143, 142, 136, 128, 122, 116, 110, 109, 107, 106, 113, 119, 122, 128, 133, 141, 150, 148, 137, 137, 143, 134, 126, 133, 142, 135, 129, 135, 141, 133, 119, 107, 106, 117, 126, 126, 122, 114, 109, 122, 144, 155, 155, 156, 154, 143, 128, 112, 103, 104, 104, 94, 90, 100, 109, 109, 118, 132, 135, 130, 124, 116, 113, 126, 138, 135, 129, 126, 128, 138, 151, 152, 149, 148, 146, 143, 142, 141, 138, 136, 128, 122, 133, 144, 137, 123, 114, 108, 99, 92, 94, 107, 117, 109, 101, 107, 116, 121, 129, 137, 141, 132, 117, 116, 130, 131, 118, 120, 141, 148, 143, 148, 157, 155, 150, 148, 142, 136, 134, 131, 129, 133, 137, 135, 136, 141, 142, 135, 122, 110, 111, 119, 122, 124, 126, 122, 119, 122, 123, 118, 121, 125, 119, 110, 110, 107, 105, 109, 110, 106, 113, 130, 136, 135, 138, 139, 134, 131, 134, 131, 120, 114, 119, 130, 138, 144, 147, 146, 141, 139, 144, 143, 134, 124, 120, 118, 120, 124, 125, 124, 128, 132, 133, 137, 148, 156, 151, 142, 133, 130, 131, 131, 117, 93, 82, 91, 95, 91, 93, 96, 98, 110, 120, 111, 103, 107, 117, 129, 139, 135, 123, 126, 145, 159, 158, 149, 142, 138, 145, 155, 150, 136, 133, 137, 137, 141, 146, 137, 121, 107, 99, 103, 117, 125, 122, 118, 118, 118, 126, 142, 143, 128, 124, 132, 129, 118, 117, 123, 129, 133, 136, 144, 152, 149, 137, 134, 136, 131, 119, 111, 108, 107, 110, 110, 106, 103, 104, 105, 112, 129, 139, 134, 126, 128, 132, 133, 134, 139, 139, 131, 132, 147, 154, 151, 155, 155, 138, 119, 110, 106, 106, 112, 117, 122, 125, 120, 114, 118, 122, 124, 126, 120, 106, 105, 122, 136, 146, 156, 164, 168, 162, 148, 136, 131, 123, 114, 105, 94, 84, 82, 88, 98, 104, 110, 122, 136, 149, 152, 143, 134, 135, 136, 136, 149, 167, 165, 154, 142, 134, 130, 132, 131, 126, 123, 117, 107, 105, 104, 96, 95, 99, 103, 121, 146, 147, 138, 145, 150, 150, 143, 120, 108, 130, 148, 136, 118, 118, 130, 139, 147, 155, 143, 110, 106, 135, 150, 128, 99, 88, 87, 96, 113, 119, 122, 143, 150, 137, 149, 161, 133, 123, 150, 142, 109, 111, 120, 105, 104, 125, 145, 146, 131, 125, 135, 137, 129, 124, 120, 112, 117, 133, 144, 136, 119, 108, 111, 118, 118, 114, 112, 116, 114, 109, 113, 125, 135, 143, 141, 131, 135, 146, 138, 136, 152, 158, 148, 142, 135, 136, 144, 137, 126, 129, 128, 121, 117, 112, 124, 149, 142, 116, 114, 119, 109, 117, 131, 120, 99, 99, 114, 120, 114, 109, 108, 104, 112, 135, 137, 120, 117, 119, 111, 119, 138, 142, 139, 146, 147, 142, 145, 145, 141, 142, 137, 125, 124, 118, 101, 105, 117, 109, 108, 129, 135, 121, 116, 122, 130, 135, 128, 113, 114, 132, 154, 165, 160, 157, 163, 160, 152, 147, 130, 110, 114, 116, 100, 96, 100, 96, 99, 110, 123, 139, 130, 101, 106, 125, 121, 123, 136, 130, 125, 141, 143, 128, 117, 112, 114, 131, 145, 141, 132, 145, 172, 182, 167, 139, 123, 143, 180, 184, 158, 129, 100, 88, 100, 105, 98, 96, 82, 66, 88, 123, 129, 122, 120, 112, 119, 141, 146, 132, 117, 109, 109, 111, 100, 98, 121, 132, 113, 110, 137, 160, 155, 128, 109, 132, 178, 194, 172, 154, 150, 156, 159, 149, 142, 146, 133, 106, 105, 123, 126, 121, 121, 120, 119, 114, 105, 109, 132, 139, 112, 83, 87, 117, 130, 116, 107, 122, 142, 144, 132, 121, 113, 105, 107, 122, 130, 120, 110, 116, 120, 110, 112, 147, 167, 146, 121, 110, 109, 122, 131, 123, 135, 169, 174, 148, 125, 129, 155, 165, 134, 108, 120, 130, 122, 128, 150, 165, 165, 156, 148, 154, 152, 136, 126, 124, 112, 99, 91, 86, 98, 118, 113, 99, 100, 98, 85, 90, 103, 100, 100, 113, 124, 137, 146, 130, 108, 110, 126, 139, 150, 157, 150, 142, 145, 151, 150, 147, 146, 147, 155, 161, 144, 120, 118, 120, 109, 111, 130, 139, 135, 124, 105, 96, 112, 125, 123, 118, 108, 96, 104, 124, 136, 132, 120, 117, 131, 136, 128, 126, 128, 126, 135, 133, 116, 117, 134, 131, 123, 130, 133, 138, 146, 145, 143, 145, 141, 136, 132, 118, 109, 116, 119, 117, 121, 122, 114, 111, 118, 125, 129, 131, 133, 131, 132, 138, 133, 118, 118, 126, 130, 129, 124, 122, 132, 139, 134, 129, 129, 130, 133, 130, 124, 129, 129, 123, 128, 131, 130, 138, 144, 133, 135, 148, 143, 133, 133, 129, 121, 118, 111, 109, 121, 131, 126, 110, 100, 109, 123, 117, 107, 117, 132, 134, 126, 116, 114, 128, 143, 148, 144, 138, 144, 156, 156, 149, 148, 144, 134, 126, 121, 112, 107, 113, 120, 116, 104, 98, 107, 113, 112, 110, 108, 103, 105, 116, 121, 119, 125, 142, 158, 161, 154, 147, 151, 160, 160, 149, 131, 116, 114, 117, 109, 101, 103, 108, 111, 121, 138, 155, 155, 134, 104, 93, 108, 125, 124, 114, 110, 118, 125, 119, 113, 120, 128, 128, 124, 118, 128, 154, 162, 156, 154, 151, 147, 146, 138, 129, 122, 116, 117, 123, 117, 105, 108, 118, 129, 139, 134, 119, 122, 134, 135, 132, 128, 128, 136, 146, 141, 128, 123, 126, 129, 128, 125, 129, 137, 144, 142, 131, 121, 126, 136, 135, 125, 122, 122, 124, 124, 119, 117, 123, 126, 119, 112, 111, 117, 122, 113, 100, 97, 104, 113, 121, 113, 105, 114, 131, 133, 125, 126, 139, 157, 163, 157, 144, 134, 139, 150, 148, 136, 129, 125, 132, 145, 141, 124, 125, 138, 138, 119, 103, 101, 110, 116, 118, 114, 106, 110, 128, 135, 126, 120, 120, 126, 137, 139, 124, 116, 125, 137, 142, 148, 145, 128, 118, 122, 128, 128, 129, 124, 118, 109, 103, 111, 131, 137, 132, 131, 136, 142, 146, 136, 116, 116, 137, 144, 125, 116, 126, 130, 117, 114, 121, 117, 112, 120, 123, 121, 125, 125, 124, 134, 142, 132, 124, 131, 146, 149, 122, 99, 116, 135, 126, 113, 116, 134, 157, 161, 159, 163, 157, 137, 126, 119, 123, 141, 132, 104, 106, 119, 121, 139, 157, 131, 103, 126, 161, 148, 103, 88, 108, 112, 106, 116, 114, 86, 71, 82, 88, 87, 99, 121, 138, 145, 154, 169, 168, 142, 132, 151, 164, 156, 154, 171, 177, 159, 139, 143, 145, 128, 129, 150, 146, 118, 111, 117, 108, 99, 97, 90, 79, 75, 82, 88, 80, 69, 81, 111, 124, 116, 109, 131, 167, 176, 154, 138, 145, 152, 147, 144, 144, 141, 129, 116, 111, 119, 132, 139, 126, 113, 128, 147, 144, 132, 131, 138, 149, 152, 151, 154, 149, 144, 147, 135, 108, 108, 118, 107, 111, 135, 141, 138, 146, 144, 130, 119, 108, 104, 99, 86, 73, 78, 90, 91, 90, 101, 114, 114, 119, 130, 131, 132, 142, 158, 177, 181, 168, 168, 164, 144, 136, 144, 139, 132, 119, 105, 114, 130, 130, 126, 128, 134, 137, 124, 129, 151, 138, 129, 162, 156, 117, 125, 139, 125, 124, 119, 105, 118, 133, 128, 113, 87, 75, 110, 130, 92, 67, 97, 112, 85, 100, 159, 151, 111, 137, 157, 124, 128, 155, 149, 147, 150, 148, 173, 182, 151, 157, 177, 157, 154, 160, 114, 86, 120, 139, 119, 97, 83, 84, 105, 111, 103, 110, 118, 97, 87, 104, 104, 104, 143, 155, 111, 99, 128, 118, 103, 129, 126, 88, 99, 144, 156, 148, 144, 145, 158, 168, 159, 157, 149, 122, 116, 138, 147, 147, 152, 133, 105, 110, 125, 121, 118, 114, 104, 101, 113, 120, 119, 124, 136, 144, 147, 147, 134, 110, 82, 64, 84, 136, 154, 128, 119, 135, 137, 131, 139, 160, 169, 150, 129, 139, 163, 159, 142, 135, 131, 125, 112, 84, 68, 78, 95, 107, 118, 123, 123, 121, 118, 125, 144, 146, 136, 139, 149, 146, 141, 148, 161, 159, 145, 125, 112, 121, 141, 136, 124, 124, 112, 101, 114, 117, 94, 92, 101, 95, 90, 95, 100, 118, 135, 135, 139, 145, 126, 117, 134, 136, 124, 135, 141, 125, 135, 161, 146, 122, 134, 149, 143, 144, 148, 134, 122, 125, 129, 130, 143, 158, 159, 148, 130, 122, 144, 158, 134, 112, 120, 117, 100, 91, 79, 85, 123, 137, 114, 101, 96, 81, 85, 111, 133, 142, 123, 96, 100, 123, 130, 129, 141, 165, 173, 158, 158, 172, 157, 130, 132, 138, 132, 132, 137, 145, 151, 148, 146, 154, 147, 130, 123, 121, 120, 126, 126, 121, 132, 152, 157, 136, 109, 103, 111, 110, 104, 101, 91, 75, 92, 128, 149, 154, 142, 112, 107, 130, 124, 99, 116, 160, 174, 147, 108, 94, 112, 116, 87, 70, 75, 84, 93, 98, 103, 130, 156, 149, 138, 144, 147, 144, 136, 137, 173, 196, 160, 139, 172, 169, 119, 107, 123, 135, 158, 160, 128, 130, 163, 158, 123, 103, 103, 130, 162, 150, 109, 88, 95, 114, 124, 93, 48, 56, 96, 101, 91, 109, 126, 133, 157, 167, 138, 130, 150, 152, 139, 134, 119, 101, 111, 132, 142, 147, 147, 141, 143, 145, 125, 108, 125, 146, 130, 109, 116, 123, 121, 131, 150, 155, 149, 138, 118, 100, 105, 121, 135, 136, 118, 100, 104, 110, 105, 109, 122, 122, 116, 121, 133, 141, 149, 155, 146, 130, 116, 112, 128, 146, 146, 134, 134, 138, 134, 132, 135, 141, 145, 141, 122, 107, 104, 111, 114, 108, 105, 114, 122, 125, 128, 119, 112, 120, 117, 101, 101, 109, 117, 133, 142, 129, 119, 131, 151, 162, 157, 145, 141, 139, 143, 147, 138, 125, 126, 128, 120, 118, 119, 118, 120, 121, 117, 116, 123, 128, 124, 121, 121, 121, 123, 131, 139, 143, 141, 137, 143, 147, 136, 124, 122, 124, 131, 141, 137, 126, 126, 125, 121, 121, 122, 125, 134, 134, 123, 114, 107, 100, 105, 109, 103, 105, 117, 128, 135, 135, 129, 133, 141, 136, 130, 130, 133, 143, 151, 145, 135, 137, 138, 137, 141, 138, 136, 137, 133, 122, 111, 101, 99, 111, 126, 132, 133, 131, 130, 132, 130, 120, 119, 125, 123, 113, 108, 111, 122, 126, 117, 108, 111, 120, 130, 135, 131, 123, 120, 125, 134, 136, 136, 144, 149, 141, 131, 128, 131, 138, 136, 123, 124, 143, 148, 138, 136, 139, 138, 136, 133, 132, 133, 130, 122, 118, 117, 113, 110, 111, 114, 119, 119, 114, 116, 116, 109, 109, 122, 130, 135, 141, 136, 130, 135, 137, 124, 113, 108, 113, 129, 128, 118, 130, 143, 135, 129, 131, 129, 131, 136, 131, 122, 128, 138, 141, 133, 126, 131, 134, 131, 129, 125, 124, 124, 121, 120, 128, 138, 139, 135, 126, 120, 122, 133, 139, 134, 124, 120, 119, 116, 120, 124, 117, 109, 114, 125, 128, 120, 120, 131, 135, 129, 123, 123, 122, 123, 122, 121, 123, 120, 121, 130, 128, 117, 125, 136, 133, 136, 144, 134, 130, 144, 136, 112, 116, 141, 146, 132, 121, 118, 118, 118, 117, 120, 133, 145, 139, 125, 116, 117, 131, 144, 134, 117, 113, 121, 135, 146, 139, 123, 116, 116, 119, 126, 131, 125, 114, 110, 120, 138, 154, 152, 134, 118, 117, 126, 131, 128, 113, 100, 105, 123, 138, 143, 141, 128, 108, 100, 112, 129, 138, 143, 134, 116, 111, 130, 147, 144, 129, 122, 124, 129, 142, 151, 142, 125, 129, 137, 142, 145, 142, 133, 136, 148, 150, 144, 133, 114, 109, 121, 130, 128, 122, 111, 101, 103, 105, 104, 109, 114, 113, 113, 120, 120, 117, 119, 122, 124, 128, 132, 133, 134, 133, 124, 113, 112, 128, 145, 149, 138, 122, 118, 133, 142, 133, 120, 109, 110, 133, 147, 135, 131, 136, 130, 124, 134, 141, 147, 162, 158, 126, 107, 120, 143, 148, 131, 116, 122, 138, 139, 117, 93, 92, 109, 120, 121, 120, 116, 118, 134, 135, 122, 130, 141, 138, 143, 126, 84, 94, 145, 150, 130, 132, 131, 128, 138, 132, 114, 128, 144, 133, 122, 113, 94, 86, 92, 86, 82, 104, 131, 150, 165, 162, 144, 155, 181, 181, 177, 189, 185, 174, 176, 164, 135, 120, 111, 97, 95, 100, 98, 95, 88, 78, 70, 72, 86, 105, 116, 120, 130, 135, 116, 92, 91, 101, 114, 131, 136, 128, 135, 150, 154, 159, 162, 144, 133, 142, 137, 129, 143, 150, 132, 119, 114, 98, 93, 113, 126, 123, 133, 151, 160, 158, 149, 141, 143, 150, 146, 139, 139, 133, 117, 111, 117, 116, 113, 124, 131, 121, 122, 131, 119, 100, 96, 94, 86, 90, 96, 97, 94, 87, 93, 116, 130, 126, 126, 138, 141, 132, 133, 154, 173, 169, 154, 143, 142, 151, 161, 161, 161, 159, 146, 144, 156, 148, 130, 131, 131, 120, 121, 129, 126, 122, 125, 132, 133, 126, 124, 126, 119, 112, 118, 114, 107, 109, 107, 99, 111, 124, 116, 109, 113, 108, 107, 119, 117, 105, 105, 106, 96, 93, 100, 110, 123, 136, 135, 130, 135, 147, 148, 148, 154, 159, 163, 174, 182, 175, 169, 164, 155, 151, 152, 136, 117, 119, 130, 129, 120, 113, 109, 107, 103, 95, 87, 77, 69, 68, 72, 79, 88, 106, 128, 136, 132, 137, 150, 156, 155, 151, 147, 148, 155, 156, 154, 151, 146, 145, 142, 133, 126, 122, 112, 106, 110, 116, 119, 125, 134, 139, 144, 143, 132, 110, 91, 90, 99, 103, 103, 112, 126, 137, 144, 149, 154, 148, 138, 136, 138, 136, 129, 119, 114, 122, 131, 135, 139, 141, 138, 137, 128, 113, 113, 120, 112, 100, 103, 110, 110, 108, 112, 119, 119, 121, 124, 119, 116, 130, 152, 162, 151, 138, 146, 165, 171, 164, 159, 143, 123, 125, 137, 132, 113, 103, 106, 116, 129, 136, 129, 116, 112, 116, 112, 109, 108, 112, 123, 125, 114, 108, 109, 114, 129, 136, 131, 135, 144, 137, 129, 126, 122, 125, 134, 136, 138, 139, 130, 118, 118, 122, 131, 136, 131, 132, 136, 131, 133, 147, 152, 142, 131, 130, 137, 138, 120, 104, 108, 118, 125, 136, 135, 113, 101, 121, 148, 152, 141, 137, 138, 119, 92, 97, 122, 121, 104, 108, 119, 116, 113, 123, 131, 126, 121, 132, 149, 135, 109, 124, 148, 134, 120, 138, 152, 137, 121, 120, 119, 113, 118, 132, 138, 136, 131, 128, 135, 136, 120, 113, 124, 122, 119, 129, 124, 112, 121, 131, 134, 152, 165, 151, 135, 133, 130, 124, 126, 138, 138, 119, 103, 99, 95, 96, 116, 129, 121, 110, 106, 108, 118, 128, 130, 131, 133, 137, 146, 149, 138, 134, 147, 147, 132, 133, 146, 144, 133, 125, 122, 122, 125, 125, 121, 120, 122, 125, 125, 121, 123, 129, 128, 121, 118, 119, 123, 128, 123, 118, 124, 133, 124, 111, 114, 123, 129, 138, 144, 134, 130, 132, 132, 131, 129, 125, 129, 129, 125, 126, 124, 113, 116, 129, 134, 138, 147, 145, 132, 128, 129, 128, 128, 134, 135, 121, 110, 120, 130, 125, 121, 123, 125, 126, 122, 118, 122, 135, 135, 116, 99, 97, 96, 97, 111, 126, 126, 116, 111, 120, 136, 146, 144, 141, 148, 161, 169, 167, 161, 151, 141, 132, 134, 138, 138, 141, 146, 141, 128, 125, 139, 157, 156, 139, 124, 116, 110, 110, 111, 108, 105, 103, 105, 121, 129, 116, 113, 129, 126, 113, 119, 124, 118, 107, 87, 67, 68, 78, 77, 74, 72, 67, 74, 104, 134, 156, 167, 174, 189, 203, 207, 211, 214, 209, 197, 182, 163, 150, 142, 122, 103, 100, 103, 91, 77, 71, 65, 59, 75, 107, 112, 96, 99, 119, 128, 134, 149, 152, 137, 122, 118, 122, 124, 120, 123, 134, 135, 132, 132, 132, 129, 123, 114, 110, 109, 95, 81, 93, 122, 138, 144, 148, 151, 160, 169, 160, 145, 142, 144, 152, 171, 185, 185, 180, 173, 168, 169, 161, 142, 125, 117, 108, 101, 108, 120, 126, 125, 119, 109, 101, 99, 99, 94, 86, 86, 91, 96, 101, 111, 126, 137, 132, 123, 123, 126, 124, 117, 106, 100, 111, 125, 133, 144, 155, 154, 157, 170, 170, 152, 139, 137, 141, 143, 137, 130, 129, 131, 131, 133, 138, 138, 133, 122, 114, 124, 132, 121, 108, 106, 97, 88, 93, 97, 92, 90, 92, 96, 101, 107, 112, 116, 118, 122, 124, 120, 128, 147, 151, 143, 141, 143, 144, 147, 149, 147, 146, 146, 142, 131, 126, 136, 149, 148, 138, 134, 135, 130, 118, 116, 121, 117, 108, 116, 130, 132, 130, 130, 124, 118, 118, 119, 116, 111, 108, 104, 98, 98, 104, 117, 132, 141, 138, 132, 129, 130, 136, 143, 146, 149, 157, 157, 146, 144, 152, 152, 139, 131, 130, 129, 125, 121, 120, 119, 113, 112, 122, 128, 123, 118, 117, 116, 120, 126, 132, 136, 142, 141, 138, 136, 136, 141, 142, 133, 131, 134, 129, 118, 117, 119, 114, 109, 106, 100, 95, 91, 92, 104, 114, 113, 111, 117, 122, 129, 135, 137, 137, 136, 136, 137, 142, 137, 131, 136, 144, 138, 133, 135, 133, 132, 137, 137, 128, 123, 130, 137, 137, 124, 114, 121, 129, 129, 125, 124, 121, 123, 128, 129, 134, 138, 134, 135, 142, 133, 123, 128, 132, 130, 133, 131, 119, 111, 110, 113, 120, 123, 122, 124, 124, 121, 122, 125, 132, 137, 132, 123, 125, 131, 135, 142, 143, 136, 135, 137, 135, 136, 138, 131, 125, 124, 120, 114, 118, 124, 125, 121, 116, 112, 116, 119, 120, 119, 120, 120, 117, 114, 122, 130, 135, 141, 143, 141, 137, 139, 142, 136, 126, 120, 116, 112, 116, 122, 120, 112, 116, 122, 123, 120, 118, 117, 119, 118, 113, 114, 120, 123, 131, 143, 147, 148, 149, 143, 134, 135, 139, 138, 137, 136, 136, 135, 131, 125, 123, 124, 124, 121, 113, 107, 110, 113, 112, 108, 105, 108, 116, 120, 116, 112, 116, 124, 132, 132, 128, 133, 143, 147, 145, 141, 143, 151, 154, 146, 139, 138, 134, 130, 132, 132, 126, 126, 131, 128, 122, 120, 122, 124, 129, 132, 134, 130, 117, 103, 100, 114, 130, 131, 129, 130, 132, 134, 136, 137, 143, 148, 147, 139, 135, 134, 129, 124, 125, 128, 126, 120, 116, 117, 120, 118, 112, 113, 119, 122, 119, 110, 109, 117, 116, 107, 106, 111, 117, 123, 126, 123, 121, 122, 129, 136, 136, 133, 138, 144, 143, 144, 147, 145, 146, 146, 137, 129, 123, 121, 124, 126, 119, 114, 120, 123, 122, 117, 109, 105, 109, 118, 125, 130, 133, 139, 145, 138, 129, 134, 147, 151, 143, 133, 128, 131, 141, 145, 141, 136, 134, 131, 123, 116, 112, 113, 113, 110, 101, 88, 90, 104, 113, 113, 114, 117, 120, 130, 141, 138, 128, 126, 142, 157, 157, 155, 162, 169, 156, 138, 132, 133, 137, 139, 128, 110, 105, 110, 116, 116, 105, 95, 100, 114, 121, 122, 119, 116, 125, 135, 133, 129, 133, 139, 144, 142, 137, 144, 150, 142, 131, 123, 116, 117, 121, 122, 129, 130, 111, 107, 121, 119, 109, 109, 107, 107, 123, 131, 123, 126, 131, 125, 129, 135, 136, 143, 148, 137, 124, 122, 128, 141, 151, 149, 141, 133, 124, 120, 120, 123, 128, 123, 113, 118, 131, 131, 128, 125, 122, 126, 133, 125, 116, 118, 122, 121, 118, 112, 113, 126, 142, 147, 143, 132, 118, 108, 109, 114, 122, 132, 134, 126, 121, 123, 129, 136, 141, 139, 134, 129, 132, 145, 147, 143, 145, 146, 141, 143, 145, 141, 141, 141, 133, 128, 124, 119, 123, 130, 120, 108, 109, 117, 121, 125, 121, 106, 98, 108, 121, 128, 125, 114, 104, 97, 86, 79, 83, 93, 109, 123, 125, 126, 143, 159, 173, 187, 180, 158, 154, 159, 155, 143, 133, 131, 136, 138, 126, 114, 114, 118, 113, 110, 114, 116, 109, 108, 114, 113, 104, 105, 122, 141, 143, 133, 121, 112, 116, 124, 130, 133, 138, 143, 150, 149, 132, 121, 128, 128, 122, 122, 116, 112, 128, 133, 118, 113, 118, 111, 113, 125, 123, 120, 126, 130, 129, 135, 135, 132, 144, 157, 154, 156, 165, 161, 148, 139, 133, 132, 132, 119, 108, 109, 112, 121, 131, 119, 111, 124, 130, 124, 121, 111, 106, 117, 118, 112, 126, 136, 125, 124, 130, 129, 130, 133, 133, 135, 130, 117, 118, 130, 131, 123, 122, 125, 125, 117, 110, 116, 120, 120, 120, 119, 123, 138, 139, 131, 141, 152, 141, 132, 138, 141, 136, 138, 137, 133, 131, 124, 118, 121, 123, 118, 117, 114, 111, 117, 121, 114, 108, 109, 111, 114, 112, 109, 119, 133, 134, 131, 132, 139, 154, 157, 146, 148, 158, 147, 138, 145, 138, 128, 135, 137, 128, 122, 114, 105, 110, 117, 112, 111, 111, 106, 104, 110, 110, 107, 108, 116, 121, 121, 122, 126, 126, 131, 144, 150, 144, 143, 147, 144, 142, 142, 135, 134, 142, 139, 132, 135, 137, 133, 132, 134, 132, 128, 121, 113, 116, 125, 131, 129, 124, 120, 120, 122, 123, 122, 121, 124, 126, 124, 123, 126, 126, 129, 135, 134, 128, 124, 121, 120, 124, 128, 124, 118, 113, 120, 132, 132, 126, 124, 122, 121, 123, 120, 119, 125, 129, 129, 130, 126, 128, 138, 142, 135, 134, 131, 123, 125, 132, 129, 126, 129, 124, 120, 121, 123, 124, 124, 118, 120, 126, 125, 130, 139, 133, 120, 123, 132, 137, 143, 136, 124, 124, 129, 128, 130, 133, 134, 134, 125, 114, 118, 124, 126, 126, 122, 119, 121, 121, 117, 122, 130, 130, 131, 129, 119, 121, 131, 133, 133, 134, 129, 132, 143, 142, 132, 134, 139, 138, 137, 132, 125, 130, 133, 125, 119, 119, 122, 126, 125, 118, 112, 107, 101, 109, 119, 117, 119, 129, 131, 130, 130, 125, 123, 129, 131, 126, 128, 133, 137, 134, 129, 132, 147, 157, 149, 139, 137, 141, 134, 116, 98, 98, 110, 121, 123, 121, 120, 124, 128, 125, 126, 124, 113, 108, 114, 116, 110, 116, 132, 151, 168, 169, 154, 141, 137, 131, 122, 120, 122, 122, 122, 123, 123, 120, 122, 126, 128, 129, 128, 125, 130, 136, 129, 119, 118, 114, 112, 111, 110, 119, 132, 134, 137, 146, 139, 129, 131, 129, 122, 120, 106, 95, 109, 124, 125, 133, 143, 155, 170, 164, 145, 149, 152, 134, 120, 120, 129, 141, 136, 114, 107, 109, 109, 124, 143, 137, 123, 121, 118, 119, 124, 111, 95, 104, 122, 122, 116, 114, 116, 123, 132, 135, 139, 144, 134, 117, 116, 123, 122, 121, 131, 138, 128, 106, 106, 123, 129, 122, 119, 120, 134, 152, 142, 119, 131, 155, 158, 150, 135, 111, 108, 122, 131, 133, 131, 122, 121, 126, 130, 133, 135, 132, 141, 157, 151, 125, 106, 106, 121, 130, 117, 106, 112, 121, 130, 149, 152, 135, 131, 141, 138, 130, 118, 96, 88, 99, 106, 101, 103, 111, 135, 159, 154, 137, 146, 168, 170, 146, 112, 100, 118, 130, 125, 125, 129, 132, 147, 156, 135, 113, 116, 134, 147, 138, 109, 87, 91, 108, 128, 138, 134, 132, 141, 141, 126, 112, 107, 116, 133, 133, 112, 92, 86, 104, 134, 142, 123, 123, 147, 156, 138, 120, 119, 135, 148, 142, 128, 120, 119, 128, 138, 137, 133, 133, 134, 141, 143, 128, 111, 112, 122, 126, 129, 131, 130, 123, 126, 136, 130, 119, 125, 134, 124, 105, 85, 86, 117, 135, 128, 123, 126, 132, 149, 155, 136, 129, 130, 124, 126, 128, 114, 118, 137, 144, 142, 133, 118, 129, 155, 146, 113, 103, 106, 107, 116, 132, 139, 134, 124, 124, 133, 135, 129, 120, 116, 119, 130, 138, 135, 130, 130, 135, 141, 136, 126, 126, 136, 138, 128, 110, 98, 110, 135, 142, 129, 119, 119, 122, 122, 118, 120, 134, 137, 122, 117, 128, 126, 120, 128, 137, 131, 125, 131, 136, 138, 139, 132, 126, 131, 132, 123, 121, 129, 128, 119, 108, 109, 135, 158, 146, 122, 121, 124, 123, 132, 138, 130, 118, 110, 111, 121, 122, 121, 129, 137, 139, 142, 134, 124, 130, 139, 147, 154, 141, 124, 133, 143, 135, 123, 118, 120, 131, 132, 122, 119, 118, 116, 113, 108, 111, 129, 131, 120, 122, 125, 120, 118, 113, 114, 141, 152, 136, 130, 129, 118, 122, 139, 136, 124, 116, 103, 103, 117, 118, 113, 124, 128, 123, 129, 136, 132, 122, 120, 130, 145, 152, 150, 134, 109, 110, 133, 131, 113, 118, 131, 134, 134, 130, 131, 150, 161, 141, 121, 123, 132, 138, 136, 122, 119, 136, 147, 136, 120, 119, 129, 137, 137, 125, 122, 130, 119, 88, 84, 116, 150, 155, 120, 85, 97, 126, 138, 143, 144, 138, 138, 136, 126, 123, 124, 124, 130, 131, 120, 114, 117, 122, 133, 138, 132, 126, 124, 123, 131, 144, 150, 148, 138, 125, 122, 125, 125, 128, 131, 122, 112, 119, 133, 138, 135, 125, 119, 129, 138, 128, 109, 104, 109, 117, 124, 123, 122, 132, 142, 137, 122, 111, 112, 126, 136, 132, 120, 110, 100, 104, 121, 122, 101, 107, 134, 135, 117, 117, 132, 142, 143, 129, 116, 128, 149, 143, 117, 109, 129, 147, 143, 133, 139, 151, 152, 141, 125, 120, 135, 154, 149, 130, 118, 118, 125, 135, 143, 144, 141, 132, 125, 129, 133, 134, 135, 136, 133, 123, 112, 111, 118, 117, 107, 106, 110, 112, 113, 122, 135, 134, 123, 118, 117, 112, 124, 152, 161, 144, 130, 123, 122, 126, 125, 121, 124, 124, 113, 116, 130, 136, 135, 132, 128, 130, 129, 118, 112, 117, 121, 126, 125, 114, 116, 134, 147, 141, 128, 124, 130, 133, 129, 124, 124, 126, 125, 113, 105, 117, 129, 124, 119, 123, 131, 136, 134, 125, 121, 123, 130, 134, 120, 105, 119, 139, 138, 138, 139, 123, 114, 132, 138, 119, 108, 119, 138, 148, 137, 125, 133, 145, 138, 123, 118, 124, 136, 134, 117, 110, 121, 139, 150, 144, 124, 116, 119, 118, 114, 121, 129, 128, 124, 125, 130, 134, 137, 141, 141, 138, 136, 132, 130, 130, 129, 126, 125, 124, 124, 120, 109, 112, 133, 143, 129, 112, 111, 118, 120, 118, 122, 123, 116, 117, 130, 136, 135, 133, 125, 119, 123, 131, 129, 128, 132, 133, 128, 121, 116, 119, 130, 142, 142, 128, 114, 113, 120, 119, 119, 135, 147, 135, 122, 125, 128, 132, 146, 149, 129, 111, 116, 122, 122, 124, 130, 132, 133, 133, 126, 120, 121, 129, 133, 133, 128, 122, 122, 126, 130, 129, 122, 121, 128, 131, 124, 123, 134, 141, 133, 122, 122, 131, 141, 141, 132, 122, 126, 144, 150, 133, 117, 120, 125, 128, 134, 135, 132, 138, 133, 113, 114, 126, 119, 118, 133, 130, 114, 120, 130, 129, 129, 128, 119, 117, 123, 123, 119, 122, 128, 130, 125, 122, 129, 138, 135, 124, 117, 119, 135, 142, 120, 107, 123, 131, 120, 120, 124, 124, 134, 144, 134, 118, 111, 116, 129, 135, 130, 124, 123, 123, 124, 117, 112, 131, 148, 139, 128, 126, 123, 131, 148, 149, 135, 131, 129, 123, 119, 118, 125, 138, 136, 128, 125, 117, 108, 122, 137, 135, 133, 131, 120, 122, 135, 131, 123, 132, 137, 126, 122, 126, 128, 130, 136, 135, 132, 135, 133, 122, 122, 129, 131, 132, 130, 128, 136, 139, 124, 119, 128, 125, 120, 121, 120, 124, 134, 130, 116, 114, 123, 125, 123, 118, 117, 121, 125, 122, 114, 114, 122, 129, 132, 128, 117, 113, 119, 120, 124, 137, 136, 122, 121, 132, 134, 135, 141, 136, 126, 131, 133, 122, 119, 126, 124, 121, 129, 128, 121, 125, 133, 134, 135, 133, 125, 126, 133, 132, 125, 126, 134, 137, 132, 125, 125, 135, 143, 142, 132, 121, 114, 116, 123, 130, 126, 122, 128, 134, 131, 126, 126, 125, 129, 137, 126, 99, 96, 125, 145, 136, 121, 118, 124, 133, 135, 128, 120, 122, 128, 125, 123, 121, 123, 131, 130, 121, 125, 134, 133, 137, 138, 118, 111, 135, 141, 120, 110, 117, 126, 138, 139, 125, 121, 132, 136, 130, 128, 126, 121, 116, 117, 118, 120, 122, 123, 123, 130, 136, 126, 111, 111, 131, 143, 134, 125, 129, 134, 131, 126, 123, 128, 137, 136, 120, 114, 129, 139, 135, 126, 120, 123, 134, 132, 113, 109, 126, 133, 123, 122, 134, 138, 126, 118, 121, 131, 138, 137, 128, 120, 125, 135, 135, 131, 124, 124, 139, 145, 129, 118, 124, 129, 128, 131, 131, 122, 118, 128, 142, 132, 107, 103, 126, 144, 134, 114, 114, 130, 134, 120, 109, 112, 129, 137, 124, 110, 121, 138, 138, 132, 131, 132, 133, 125, 113, 116, 132, 141, 132, 123, 125, 135, 135, 121, 116, 128, 135, 122, 109, 111, 122, 131, 129, 118, 119, 138, 154, 147, 126, 117, 122, 123, 122, 128, 132, 135, 136, 125, 118, 124, 130, 132, 139, 134, 119, 117, 120, 124, 134, 132, 121, 123, 135, 135, 128, 123, 129, 143, 147, 129, 111, 119, 139, 139, 121, 112, 125, 141, 134, 117, 114, 129, 132, 120, 113, 121, 126, 124, 121, 123, 130, 130, 122, 118, 122, 131, 133, 124, 120, 126, 136, 134, 125, 122, 125, 129, 134, 134, 125, 122, 128, 128, 124, 131, 133, 124, 124, 126, 121, 123, 136, 135, 123, 126, 139, 137, 125, 123, 131, 133, 132, 133, 130, 122, 124, 132, 126, 117, 120, 131, 132, 124, 113, 105, 111, 131, 154, 160, 148, 141, 144, 137, 113, 105, 123, 146, 142, 118, 113, 139, 159, 148, 126, 114, 111, 109, 111, 111, 97, 84, 101, 120, 111, 111, 133, 130, 107, 106, 113, 112, 128, 159, 177, 174, 163, 167, 188, 185, 132, 87, 95, 116, 118, 121, 135, 145, 138, 121, 109, 100, 73, 66, 120, 181, 169, 108, 78, 103, 137, 145, 155, 163, 124, 87, 129, 189, 197, 180, 151, 104, 71, 74, 99, 124, 113, 93, 112, 131, 114, 123, 146, 114, 85, 124, 160, 137, 93, 66, 71, 113, 157, 170, 172, 180, 172, 156, 155, 160, 154, 139, 117, 91, 90, 96, 80, 86, 137, 165, 146, 141, 164, 181, 175, 163, 160, 161, 148, 120, 95, 85, 88, 91, 80, 81, 114, 150, 141, 101, 86, 107, 136, 154, 143, 101, 68, 73, 98, 120, 144, 164, 163, 141, 122, 131, 164, 183, 165, 147, 147, 146, 123, 96, 86, 88, 90, 101, 134, 154, 126, 90, 87, 105, 116, 131, 143, 143, 155, 171, 154, 129, 144, 169, 158, 121, 95, 95, 107, 113, 122, 136, 130, 116, 132, 163, 152, 101, 67, 84, 129, 149, 131, 100, 86, 96, 110, 116, 123, 147, 163, 156, 143, 145, 143, 126, 126, 149, 162, 148, 132, 128, 125, 118, 119, 145, 176, 176, 144, 110, 94, 96, 113, 114, 81, 60, 88, 119, 121, 131, 152, 157, 156, 161, 150, 129, 109, 85, 80, 107, 125, 122, 129, 146, 155, 156, 148, 134, 138, 160, 168, 144, 116, 109, 113, 113, 110, 107, 108, 118, 126, 121, 109, 104, 110, 121, 126, 134, 145, 150, 147, 130, 106, 99, 126, 160, 170, 148, 105, 77, 101, 149, 157, 132, 124, 129, 120, 113, 111, 116, 150, 174, 139, 107, 118, 118, 96, 93, 98, 100, 117, 133, 141, 151, 150, 139, 155, 182, 180, 157, 131, 110, 113, 135, 135, 109, 97, 117, 134, 124, 105, 111, 134, 144, 133, 116, 100, 99, 116, 117, 100, 97, 116, 139, 159, 156, 125, 113, 141, 167, 163, 143, 125, 134, 156, 149, 118, 109, 128, 138, 133, 124, 118, 120, 124, 118, 111, 112, 110, 107, 109, 100, 90, 112, 149, 160, 152, 141, 120, 114, 133, 145, 138, 133, 130, 130, 136, 124, 101, 107, 134, 144, 134, 124, 125, 130, 123, 109, 109, 125, 143, 148, 146, 145, 135, 119, 125, 145, 142, 124, 116, 100, 87, 101, 124, 144, 157, 150, 130, 113, 105, 122, 156, 150, 113, 105, 113, 105, 93, 91, 103, 133, 160, 155, 137, 128, 128, 135, 142, 146, 158, 168, 154, 128, 111, 107, 108, 113, 129, 138, 124, 112, 128, 139, 131, 124, 125, 122, 124, 128, 118, 106, 105, 109, 120, 131, 130, 126, 125, 123, 124, 130, 134, 145, 161, 160, 138, 118, 107, 118, 144, 156, 138, 114, 106, 111, 116, 112, 112, 124, 135, 132, 119, 109, 110, 119, 128, 129, 129, 132, 134, 136, 134, 124, 119, 131, 149, 152, 141, 133, 132, 126, 123, 130, 129, 114, 114, 128, 124, 106, 108, 132, 145, 142, 141, 136, 125, 121, 118, 110, 112, 125, 131, 128, 121, 114, 122, 138, 135, 125, 130, 130, 124, 131, 134, 122, 118, 123, 133, 145, 138, 112, 106, 120, 130, 143, 147, 135, 139, 151, 128, 104, 118, 135, 137, 134, 117, 104, 113, 119, 119, 131, 132, 117, 114, 125, 126, 125, 128, 130, 128, 122, 121, 130, 135, 129, 122, 125, 126, 133, 152, 156, 134, 124, 134, 139, 132, 123, 129, 145, 142, 112, 95, 100, 116, 132, 134, 122, 119, 117, 104, 101, 114, 122, 124, 137, 143, 124, 100, 100, 119, 135, 144, 149, 143, 124, 108, 108, 128, 143, 146, 158, 165, 143, 123, 133, 137, 132, 132, 124, 114, 126, 145, 146, 132, 113, 110, 114, 112, 116, 119, 95, 75, 103, 139, 142, 131, 126, 124, 126, 122, 120, 135, 147, 147, 159, 172, 159, 142, 142, 148, 146, 130, 108, 104, 106, 95, 95, 122, 143, 143, 131, 111, 107, 129, 134, 118, 118, 129, 121, 111, 109, 111, 125, 137, 136, 148, 161, 144, 128, 142, 157, 156, 146, 125, 114, 123, 124, 107, 82, 72, 97, 129, 126, 116, 125, 139, 149, 150, 136, 121, 120, 118, 107, 109, 128, 148, 155, 150, 150, 149, 139, 128, 122, 126, 129, 111, 104, 132, 150, 121, 95, 101, 114, 122, 126, 119, 108, 109, 116, 126, 147, 162, 157, 144, 130, 122, 125, 133, 139, 142, 137, 123, 117, 123, 130, 126, 121, 121, 122, 123, 131, 133, 112, 96, 105, 117, 125, 139, 142, 128, 123, 126, 124, 130, 144, 155, 158, 150, 130, 119, 129, 137, 132, 124, 123, 125, 124, 123, 128, 136, 139, 135, 132, 126, 112, 110, 116, 110, 105, 110, 106, 97, 106, 117, 119, 126, 131, 130, 136, 138, 132, 134, 138, 135, 135, 129, 113, 119, 143, 149, 138, 133, 137, 146, 149, 142, 129, 118, 112, 113, 119, 124, 120, 105, 100, 111, 113, 113, 129, 134, 120, 117, 122, 125, 136, 145, 137, 130, 134, 145, 151, 143, 130, 129, 126, 121, 126, 128, 120, 126, 130, 118, 116, 125, 129, 132, 121, 97, 105, 129, 128, 125, 132, 114, 104, 129, 138, 124, 136, 161, 161, 158, 157, 143, 136, 143, 133, 113, 116, 125, 120, 109, 111, 120, 134, 149, 149, 129, 108, 99, 95, 97, 120, 137, 124, 106, 108, 114, 118, 126, 128, 116, 112, 120, 129, 141, 154, 156, 148, 135, 118, 111, 128, 142, 131, 119, 126, 135, 134, 135, 129, 114, 121, 139, 132, 118, 120, 124, 129, 132, 125, 122, 134, 142, 138, 129, 111, 108, 121, 129, 129, 133, 136, 139, 142, 134, 124, 124, 133, 144, 134, 110, 108, 122, 130, 132, 129, 119, 118, 120, 108, 104, 123, 145, 144, 125, 116, 122, 124, 128, 138, 145, 144, 141, 130, 130, 142, 138, 124, 116, 113, 128, 142, 124, 100, 110, 132, 138, 134, 131, 133, 134, 122, 105, 103, 121, 133, 113, 90, 104, 136, 150, 149, 147, 144, 135, 126, 128, 135, 137, 134, 128, 121, 122, 118, 110, 119, 128, 116, 106, 113, 129, 142, 137, 120, 122, 134, 134, 133, 130, 119, 120, 129, 123, 118, 128, 132, 124, 122, 122, 120, 128, 135, 126, 122, 139, 145, 136, 133, 129, 125, 137, 135, 118, 114, 118, 119, 132, 137, 135, 148, 147, 125, 122, 126, 120, 119, 124, 130, 133, 126, 124, 137, 130, 110, 120, 134, 128, 125, 128, 129, 131, 132, 130, 132, 131, 126, 123, 117, 113, 114, 111, 114, 121, 119, 129, 148, 137, 119, 132, 141, 119, 111, 129, 141, 138, 135, 135, 133, 130, 132, 133, 123, 116, 123, 125, 116, 110, 113, 121, 124, 118, 122, 137, 136, 133, 137, 128, 121, 139, 146, 138, 144, 133, 106, 111, 131, 129, 132, 133, 117, 113, 121, 116, 123, 143, 134, 117, 119, 121, 122, 129, 119, 107, 118, 130, 129, 133, 135, 131, 136, 141, 136, 138, 142, 136, 138, 136, 121, 119, 130, 131, 125, 120, 118, 121, 120, 113, 114, 118, 126, 144, 148, 135, 134, 146, 141, 119, 111, 129, 138, 125, 114, 117, 116, 119, 129, 133, 141, 150, 139, 118, 110, 113, 117, 125, 134, 132, 125, 130, 128, 116, 120, 139, 136, 120, 120, 123, 120, 123, 129, 131, 130, 122, 125, 139, 134, 119, 122, 133, 133, 126, 125, 132, 138, 133, 123, 119, 121, 136, 143, 121, 105, 111, 117, 114, 110, 100, 109, 135, 139, 128, 132, 137, 132, 136, 135, 126, 135, 154, 149, 137, 130, 116, 112, 131, 141, 132, 126, 126, 119, 111, 109, 108, 103, 106, 120, 134, 134, 128, 128, 137, 141, 132, 131, 144, 150, 144, 136, 132, 131, 134, 138, 136, 126, 113, 111, 124, 130, 118, 110, 120, 135, 138, 128, 109, 100, 113, 130, 132, 124, 120, 126, 139, 141, 123, 116, 128, 141, 142, 133, 124, 124, 125, 119, 117, 123, 120, 116, 133, 137, 106, 88, 119, 150, 149, 148, 149, 136, 129, 134, 129, 117, 114, 120, 130, 129, 119, 125, 141, 133, 121, 125, 129, 120, 119, 123, 122, 123, 136, 147, 146, 138, 132, 125, 129, 131, 116, 98, 105, 123, 131, 125, 122, 130, 132, 123, 120, 119, 113, 121, 138, 139, 132, 124, 118, 121, 130, 134, 139, 144, 134, 123, 126, 131, 125, 124, 128, 120, 110, 117, 128, 126, 123, 122, 123, 129, 133, 134, 137, 135, 125, 124, 136, 143, 135, 126, 129, 129, 120, 124, 136, 136, 135, 136, 117, 101, 111, 121, 125, 135, 130, 121, 130, 133, 121, 118, 124, 128, 125, 126, 133, 135, 126, 123, 125, 121, 119, 125, 129, 128, 126, 125, 126, 130, 126, 124, 136, 143, 128, 116, 123, 133, 135, 135, 133, 128, 126, 128, 126, 124, 122, 125, 136, 133, 112, 108, 128, 138, 131, 123, 120, 122, 130, 134, 121, 108, 122, 142, 135, 116, 109, 121, 139, 141, 123, 118, 132, 141, 131, 121, 129, 146, 145, 122, 110, 113, 118, 118, 123, 136, 146, 138, 125, 124, 129, 130, 132, 132, 130, 126, 122, 120, 123, 130, 138, 146, 134, 114, 111, 122, 129, 122, 113, 118, 135, 135, 122, 120, 126, 129, 137, 148, 139, 126, 131, 135, 126, 121, 129, 136, 134, 125, 112, 107, 120, 137, 134, 119, 113, 119, 130, 138, 131, 120, 125, 132, 126, 112, 106, 123, 154, 158, 133, 117, 123, 132, 129, 120, 119, 124, 131, 132, 121, 109, 119, 142, 147, 133, 117, 113, 122, 130, 126, 120, 123, 130, 132, 126, 122, 125, 125, 123, 125, 128, 130, 131, 129, 128, 134, 131, 118, 117, 133, 142, 135, 131, 130, 125, 125, 136, 130, 105, 108, 136, 144, 124, 109, 116, 135, 139, 123, 117, 128, 135, 135, 132, 123, 122, 126, 128, 124, 122, 122, 131, 137, 131, 120, 118, 124, 135, 137, 125, 120, 130, 130, 119, 120, 129, 124, 120, 131, 133, 125, 129, 135, 133, 130, 123, 116, 119, 122, 122, 135, 142, 125, 120, 132, 136, 132, 130, 128, 126, 125, 117, 114, 130, 138, 131, 131, 135, 128, 114, 112, 117, 126, 134, 128, 121, 126, 124, 116, 120, 132, 138, 136, 119, 114, 136, 144, 129, 129, 135, 131, 129, 124, 113, 118, 134, 141, 141, 133, 118, 122, 131, 123, 120, 131, 126, 116, 118, 121, 123, 128, 131, 136, 141, 132, 122, 120, 119, 130, 142, 130, 120, 134, 141, 133, 128, 122, 128, 147, 143, 113, 107, 128, 141, 130, 116, 117, 126, 129, 122, 117, 120, 132, 136, 128, 122, 123, 125, 126, 128, 128, 133, 133, 128, 126, 126, 125, 135, 143, 132, 113, 106, 113, 131, 143, 139, 132, 129, 128, 124, 117, 119, 136, 143, 130, 122, 120, 113, 118, 135, 142, 139, 133, 122, 118, 120, 118, 119, 129, 132, 130, 132, 130, 125, 124, 125, 132, 139, 132, 119, 117, 119, 124, 136, 135, 128, 132, 131, 114, 105, 113, 130, 138, 128, 113, 116, 126, 129, 122, 122, 134, 147, 145, 126, 109, 108, 122, 135, 135, 129, 128, 134, 132, 123, 126, 136, 131, 119, 118, 125, 126, 121, 120, 129, 136, 135, 128, 118, 110, 116, 131, 135, 130, 126, 128, 128, 128, 132, 136, 136, 132, 132, 132, 125, 122, 129, 132, 122, 112, 120, 134, 134, 122, 114, 117, 128, 141, 137, 118, 110, 123, 133, 128, 121, 124, 126, 129, 136, 139, 133, 128, 126, 132, 144, 145, 135, 142, 154, 137, 109, 104, 114, 120, 119, 119, 117, 113, 113, 111, 105, 106, 119, 135, 141, 135, 135, 145, 152, 155, 155, 146, 130, 123, 128, 128, 122, 117, 123, 137, 134, 117, 109, 113, 114, 113, 106, 97, 105, 122, 133, 139, 150, 164, 171, 158, 136, 126, 129, 133, 130, 112, 98, 106, 122, 126, 123, 119, 120, 124, 123, 114, 111, 121, 133, 137, 135, 132, 133, 139, 148, 145, 132, 126, 133, 136, 126, 110, 105, 112, 120, 124, 126, 119, 105, 101, 112, 125, 133, 146, 162, 161, 138, 121, 120, 125, 134, 145, 150, 138, 114, 106, 118, 122, 118, 129, 139, 130, 117, 106, 96, 109, 134, 134, 122, 129, 143, 142, 136, 136, 133, 126, 124, 125, 121, 109, 108, 117, 119, 116, 124, 137, 137, 129, 125, 126, 130, 142, 151, 146, 137, 131, 117, 104, 108, 120, 128, 129, 130, 138, 146, 133, 118, 120, 124, 123, 124, 117, 108, 112, 123, 132, 135, 124, 117, 122, 124, 122, 134, 147, 143, 129, 117, 117, 129, 138, 141, 136, 125, 117, 121, 129, 130, 132, 131, 121, 108, 107, 111, 114, 114, 120, 130, 142, 145, 139, 144, 152, 146, 133, 128, 128, 131, 138, 136, 123, 110, 109, 122, 135, 135, 128, 114, 100, 95, 97, 100, 119, 147, 156, 144, 141, 149, 147, 132, 125, 135, 139, 130, 116, 104, 96, 95, 104, 119, 130, 128, 129, 136, 137, 137, 145, 148, 146, 145, 136, 118, 109, 118, 124, 120, 129, 151, 154, 129, 114, 118, 114, 103, 99, 109, 120, 117, 103, 104, 119, 133, 150, 160, 156, 151, 151, 135, 120, 122, 120, 118, 130, 135, 129, 135, 145, 143, 135, 121, 112, 128, 137, 114, 95, 104, 120, 135, 150, 147, 130, 125, 133, 130, 113, 110, 128, 135, 125, 118, 118, 126, 142, 147, 134, 123, 129, 137, 139, 133, 121, 122, 138, 147, 137, 134, 141, 134, 123, 120, 114, 111, 117, 122, 124, 130, 119, 97, 96, 113, 128, 131, 126, 125, 137, 148, 141, 131, 133, 141, 144, 139, 123, 109, 109, 117, 118, 113, 114, 128, 141, 136, 122, 124, 130, 125, 131, 145, 144, 138, 139, 126, 111, 113, 118, 121, 129, 130, 131, 134, 124, 114, 123, 130, 132, 139, 136, 131, 135, 133, 129, 132, 128, 120, 129, 126, 113, 122, 137, 137, 144, 142, 119, 109, 121, 124, 121, 116, 108, 122, 142, 129, 112, 119, 122, 118, 124, 124, 120, 131, 139, 134, 137, 141, 135, 138, 142, 129, 121, 123, 124, 130, 126, 117, 128, 149, 142, 126, 126, 123, 122, 129, 122, 109, 113, 118, 110, 111, 117, 117, 124, 133, 130, 130, 132, 121, 116, 128, 135, 135, 137, 131, 120, 120, 128, 137, 142, 137, 131, 130, 128, 123, 121, 122, 125, 129, 121, 107, 111, 131, 138, 136, 137, 132, 123, 128, 132, 128, 131, 132, 128, 135, 143, 130, 118, 118, 121, 136, 148, 144, 142, 139, 122, 121, 135, 119, 96, 105, 112, 104, 106, 114, 119, 125, 122, 113, 118, 126, 133, 143, 142, 134, 151, 172, 161, 143, 139, 138, 138, 137, 125, 113, 107, 101, 106, 112, 113, 124, 136, 123, 101, 103, 117, 130, 138, 132, 121, 119, 120, 126, 139, 138, 124, 128, 133, 120, 117, 129, 123, 113, 125, 142, 143, 142, 145, 144, 139, 136, 137, 143, 137, 118, 117, 133, 136, 126, 124, 124, 110, 97, 103, 113, 118, 117, 110, 104, 107, 119, 121, 119, 129, 144, 149, 147, 152, 159, 154, 146, 145, 135, 126, 129, 128, 118, 109, 104, 116, 136, 125, 108, 122, 130, 119, 121, 122, 113, 121, 123, 117, 135, 148, 139, 144, 136, 111, 126, 150, 125, 106, 123, 131, 132, 138, 128, 119, 131, 132, 123, 126, 126, 121, 124, 125, 120, 123, 124, 112, 111, 123, 126, 131, 136, 130, 123, 131, 137, 138, 134, 124, 122, 125, 119, 120, 134, 142, 148, 162, 163, 152, 147, 141, 132, 114, 91, 77, 82, 93, 98, 97, 105, 128, 134, 117, 109, 117, 130, 139, 143, 148, 152, 147, 154, 168, 156, 144, 152, 145, 131, 130, 117, 108, 128, 125, 100, 98, 103, 99, 104, 108, 112, 123, 118, 119, 149, 159, 137, 131, 135, 134, 135, 121, 95, 99, 132, 158, 161, 132, 108, 123, 125, 99, 104, 128, 121, 118, 126, 116, 117, 150, 165, 152, 139, 130, 129, 133, 121, 107, 112, 118, 121, 133, 132, 119, 122, 125, 113, 111, 120, 112, 107, 121, 128, 123, 130, 136, 134, 138, 141, 129, 128, 144, 143, 132, 138, 147, 157, 164, 148, 122, 112, 97, 88, 118, 135, 116, 109, 113, 112, 135, 149, 128, 122, 135, 121, 104, 104, 108, 125, 145, 137, 129, 133, 136, 151, 164, 150, 143, 158, 155, 134, 117, 104, 111, 129, 116, 92, 88, 95, 111, 130, 129, 132, 154, 155, 137, 129, 122, 125, 144, 139, 116, 113, 123, 123, 123, 119, 112, 120, 125, 121, 125, 131, 129, 138, 154, 147, 142, 148, 144, 132, 133, 130, 117, 116, 120, 110, 105, 110, 113, 119, 123, 108, 100, 128, 148, 138, 129, 129, 133, 144, 135, 118, 132, 149, 134, 123, 131, 129, 132, 145, 144, 136, 129, 108, 99, 108, 107, 106, 124, 134, 137, 149, 147, 133, 136, 143, 137, 125, 101, 88, 109, 125, 116, 118, 128, 123, 130, 139, 129, 126, 143, 143, 132, 132, 128, 122, 129, 125, 114, 119, 130, 125, 117, 111, 113, 131, 155, 157, 139, 126, 121, 120, 125, 132, 128, 122, 123, 121, 119, 130, 143, 147, 142, 128, 114, 113, 121, 128, 128, 125, 126, 131, 129, 119, 106, 107, 126, 133, 118, 113, 128, 137, 144, 146, 139, 138, 141, 121, 100, 98, 108, 129, 142, 124, 113, 136, 143, 122, 116, 124, 132, 144, 144, 132, 135, 142, 134, 132, 134, 124, 123, 125, 110, 103, 119, 133, 142, 149, 136, 123, 134, 137, 121, 110, 105, 106, 120, 129, 123, 131, 145, 144, 136, 134, 134, 144, 148, 132, 118, 120, 119, 120, 126, 121, 114, 125, 130, 116, 111, 117, 120, 135, 149, 139, 129, 128, 124, 120, 120, 117, 119, 128, 129, 130, 133, 132, 130, 132, 130, 126, 121, 116, 123, 137, 135, 122, 122, 130, 134, 131, 122, 118, 128, 139, 138, 130, 130, 132, 130, 132, 130, 117, 104, 103, 113, 130, 135, 132, 133, 132, 123, 119, 123, 129, 141, 142, 126, 119, 124, 128, 134, 141, 130, 122, 128, 122, 114, 119, 120, 120, 137, 152, 146, 131, 119, 112, 114, 118, 116, 113, 108, 107, 124, 141, 142, 141, 139, 128, 124, 132, 132, 129, 129, 125, 131, 143, 136, 129, 136, 130, 112, 113, 113, 110, 128, 139, 123, 121, 136, 134, 125, 121, 110, 109, 128, 135, 129, 123, 118, 121, 142, 152, 146, 137, 133, 126, 120, 117, 125, 138, 142, 134, 126, 121, 128, 139, 132, 116, 116, 118, 118, 134, 148, 134, 117, 116, 113, 112, 118, 119, 119, 129, 130, 124, 131, 141, 142, 139, 125, 113, 125, 141, 133, 132, 145, 148, 141, 134, 122, 116, 122, 123, 123, 128, 128, 124, 125, 126, 131, 130, 117, 106, 110, 116, 116, 117, 113, 117, 137, 155, 152, 144, 134, 126, 128, 124, 113, 116, 124, 131, 142, 139, 124, 126, 135, 121, 112, 122, 119, 113, 128, 141, 137, 132, 132, 130, 125, 118, 108, 106, 122, 142, 141, 131, 134, 146, 152, 149, 131, 107, 108, 126, 129, 123, 132, 142, 145, 141, 131, 122, 118, 121, 122, 114, 111, 125, 137, 136, 132, 126, 124, 133, 131, 123, 121, 105, 84, 88, 99, 110, 137, 159, 174, 187, 159, 101, 87, 110, 137, 177, 208, 178, 125, 143, 205, 177, 71, 18, 31, 73, 148, 157, 68, 36, 68, 48, 80, 194, 203, 111, 78, 105, 172, 246, 187, 50, 67, 197, 239, 205, 157, 90, 75, 129, 124, 74, 72, 61, 30, 71, 136, 147, 139, 105, 60, 112, 210, 227, 200, 147, 62, 64, 158, 192, 145, 103, 83, 101, 146, 172, 186, 163, 87, 74, 175, 231, 164, 80, 34, 23, 71, 165, 225, 189, 121, 125, 163, 134, 113, 165, 158, 68, 46, 85, 75, 86, 171, 201, 137, 104, 135, 168, 151, 84, 37, 91, 177, 197, 186, 183, 155, 126, 141, 151, 118, 75, 88, 141, 144, 92, 78, 109, 144, 196, 213, 118, 27, 70, 147, 163, 160, 154, 137, 130, 103, 81, 133, 178, 131, 85, 77, 74, 143, 215, 154, 82, 105, 107, 119, 207, 212, 111, 48, 49, 118, 202, 168, 110, 154, 131, 41, 87, 172, 157, 149, 149, 96, 82, 120, 128, 132, 126, 85, 88, 149, 172, 174, 182, 120, 49, 116, 216, 185, 97, 60, 64, 91, 106, 90, 124, 190, 189, 159, 135, 81, 75, 148, 168, 120, 101, 110, 105, 91, 87, 121, 160, 150, 129, 134, 145, 173, 208, 182, 121, 120, 148, 139, 139, 160, 117, 32, 24, 98, 167, 178, 137, 119, 138, 108, 72, 128, 168, 114, 79, 88, 106, 154, 201, 199, 160, 101, 87, 152, 170, 100, 68, 78, 73, 117, 201, 206, 118, 56, 94, 171, 163, 81, 54, 111, 145, 131, 137, 138, 106, 125, 200, 202, 128, 75, 72, 106, 151, 167, 145, 86, 36, 78, 142, 119, 101, 150, 171, 161, 162, 151, 172, 231, 197, 70, 26, 107, 181, 150, 59, 11, 66, 158, 183, 146, 124, 112, 120, 177, 185, 106, 91, 135, 118, 84, 94, 119, 168, 187, 148, 144, 168, 151, 167, 209, 168, 79, 39, 58, 97, 90, 62, 100, 132, 101, 119, 176, 160, 116, 126, 141, 114, 101, 135, 165, 164, 164, 160, 124, 116, 161, 177, 118, 47, 35, 73, 117, 151, 155, 119, 128, 195, 189, 129, 135, 158, 120, 70, 45, 70, 133, 144, 110, 126, 150, 134, 144, 185, 188, 141, 90, 97, 154, 171, 150, 164, 157, 70, 20, 91, 174, 176, 144, 118, 96, 128, 210, 215, 112, 53, 106, 149, 92, 17, 28, 77, 82, 105, 184, 208, 141, 111, 180, 244, 202, 122, 130, 192, 175, 103, 79, 73, 39, 66, 180, 234, 164, 90, 80, 77, 59, 73, 126, 149, 77, 13, 97, 212, 190, 134, 143, 146, 139, 152, 154, 150, 129, 66, 66, 155, 192, 177, 189, 172, 100, 58, 92, 165, 169, 71, 35, 105, 113, 86, 165, 215, 111, 45, 133, 209, 164, 92, 94, 146, 132, 68, 103, 188, 143, 39, 53, 137, 184, 192, 178, 164, 145, 117, 141, 182, 118, 27, 55, 113, 86, 39, 70, 159, 201, 189, 224, 255, 164, 60, 73, 106, 95, 93, 90, 65, 50, 70, 129, 203, 228, 189, 155, 175, 198, 156, 81, 42, 40, 57, 110, 199, 236, 141, 23, 67, 192, 216, 171, 113, 41, 29, 91, 135, 145, 114, 77, 130, 187, 118, 90, 188, 190, 80, 88, 205, 227, 132, 59, 110, 182, 131, 64, 131, 190, 104, 39, 109, 162, 113, 73, 95, 129, 139, 114, 75, 62, 91, 161, 235, 248, 206, 144, 87, 114, 177, 125, 36, 49, 75, 83, 151, 173, 99, 106, 207, 251, 228, 174, 92, 42, 33, 26, 59, 151, 203, 155, 83, 97, 173, 203, 180, 169, 152, 88, 36, 40, 53, 69, 122, 163, 156, 182, 248, 222, 97, 41, 120, 214, 197, 109, 82, 99, 57, 27, 110, 194, 171, 145, 189, 205, 120, 37, 67, 159, 212, 213, 164, 74, 41, 93, 133, 142, 173, 187, 134, 55, 20, 75, 158, 133, 45, 87, 223, 228, 114, 82, 143, 169, 159, 177, 202, 175, 95, 21, 23, 75, 122, 187, 229, 151, 58, 85, 142, 156, 182, 180, 116, 66, 53, 86, 158, 145, 66, 108, 229, 236, 155, 107, 103, 103, 85, 98, 175, 205, 112, 27, 29, 48, 61, 121, 207, 216, 128, 80, 139, 164, 105, 128, 235, 223, 87, 26, 75, 95, 53, 73, 178, 207, 123, 108, 207, 228, 106, 17, 90, 219, 219, 107, 58, 82, 52, 32, 142, 247, 206, 121, 90, 73, 61, 88, 154, 202, 194, 161, 142, 109, 84, 134, 190, 157, 86, 67, 105, 150, 131, 66, 88, 186, 218, 207, 219, 165, 44, 6, 71, 131, 155, 150, 123, 112, 96, 67, 124, 232, 201, 99, 117, 151, 92, 81, 132, 111, 78, 122, 161, 146, 83, 20, 72, 199, 223, 190, 218, 209, 136, 118, 137, 125, 88, 41, 54, 154, 171, 60, 30, 117, 168, 182, 223, 227, 161, 84, 40, 44, 80, 117, 161, 182, 124, 75, 123, 177, 170, 158, 155, 145, 136, 104, 78, 103, 93, 50, 113, 209, 183, 116, 88, 65, 71, 106, 125, 172, 199, 112, 37, 83, 149, 196, 226, 176, 116, 143, 150, 74, 52, 108, 137, 136, 146, 162, 168, 136, 90, 118, 195, 193, 135, 125, 132, 96, 42, 21, 67, 132, 143, 133, 142, 118, 85, 132, 209, 221, 182, 160, 172, 155, 74, 14, 39, 83, 108, 158, 203, 165, 88, 67, 105, 161, 205, 197, 142, 88, 44, 18, 60, 137, 175, 190, 183, 138, 124, 154, 147, 120, 118, 128, 142, 141, 98, 71, 74, 68, 97, 192, 246, 189, 74, 8, 68, 173, 187, 164, 193, 170, 66, 42, 116, 161, 171, 181, 149, 96, 74, 70, 71, 80, 83, 117, 182, 205, 190, 183, 142, 86, 108, 178, 221, 199, 103, 24, 35, 46, 35, 105, 209, 225, 183, 145, 135, 159, 146, 81, 86, 148, 129, 64, 39, 24, 41, 129, 202, 222, 229, 198, 139, 133, 130, 78, 69, 111, 129, 147, 161, 97, 24, 50, 137, 213, 240, 188, 104, 54, 37, 74, 165, 212, 167, 95, 48, 46, 103, 157, 145, 107, 106, 139, 176, 183, 148, 100, 75, 101, 181, 247, 220, 122, 29, 3, 71, 161, 182, 174, 174, 126, 62, 74, 124, 145, 147, 146, 151, 163, 142, 100, 84, 90, 129, 202, 208, 116, 59, 77, 97, 119, 155, 187, 210, 176, 86, 68, 132, 135, 93, 104, 113, 83, 87, 130, 143, 126, 117, 151, 208, 200, 144, 131, 117, 52, 37, 130, 208, 171, 74, 40, 90, 137, 163, 195, 189, 133, 104, 120, 132, 131, 117, 100, 110, 121, 104, 107, 131, 108, 70, 82, 122, 170, 221, 224, 158, 73, 33, 88, 200, 227, 142, 65, 36, 34, 96, 201, 238, 182, 97, 60, 101, 145, 133, 125, 136, 107, 96, 159, 208, 168, 85, 40, 65, 123, 167, 188, 167, 87, 47, 95, 155, 190, 213, 182, 110, 61, 52, 81, 145, 181, 175, 170, 139, 82, 70, 103, 120, 138, 164, 163, 155, 149, 112, 83, 121, 159, 134, 107, 111, 120, 130, 132, 106, 97, 141, 189, 207, 183, 107, 44, 66, 114, 123, 135, 156, 124, 58, 43, 109, 192, 201, 163, 167, 175, 119, 79, 119, 142, 101, 78, 103, 125, 126, 128, 131, 121, 117, 146, 177, 163, 132, 122, 100, 60, 71, 144, 192, 170, 136, 134, 125, 86, 67, 122, 201, 197, 121, 79, 92, 110, 132, 159, 156, 116, 79, 79, 111, 144, 152, 155, 155, 139, 117, 97, 92, 108, 120, 112, 132, 188, 209, 161, 103, 86, 103, 128, 157, 165, 123, 72, 74, 101, 108, 121, 167, 205, 188, 130, 83, 85, 109, 121, 121, 112, 95, 97, 129, 141, 131, 154, 203, 206, 152, 108, 91, 79, 68, 78, 120, 161, 169, 174, 189, 142, 34, 11, 112, 206, 216, 174, 114, 71, 66, 80, 105, 144, 158, 128, 104, 111, 122, 130, 158, 192, 198, 167, 118, 85, 82, 80, 82, 116, 147, 145, 157, 183, 147, 68, 50, 120, 184, 165, 122, 138, 152, 95, 60, 120, 194, 212, 187, 136, 79, 44, 50, 109, 171, 177, 149, 129, 109, 109, 145, 156, 117, 104, 133, 128, 95, 108, 158, 163, 97, 55, 125, 222, 205, 120, 62, 37, 83, 192, 226, 164, 106, 70, 55, 85, 118, 129, 151, 157, 120, 94, 116, 158, 165, 135, 123, 129, 112, 118, 145, 113, 47, 52, 145, 241, 237, 141, 75, 85, 103, 97, 111, 158, 183, 143, 95, 101, 130, 143, 132, 101, 98, 105, 83, 121, 207, 181, 97, 116, 157, 143, 147, 163, 121, 62, 69, 146, 194, 149, 105, 118, 111, 91, 134, 206, 224, 184, 106, 34, 49, 139, 176, 132, 109, 111, 90, 123, 210, 197, 95, 37, 56, 125, 182, 161, 123, 123, 116, 111, 139, 162, 168, 145, 86, 61, 94, 146, 202, 200, 113, 64, 95, 132, 147, 145, 129, 108, 79, 95, 172, 172, 90, 82, 133, 132, 123, 150, 169, 142, 87, 61, 85, 125, 171, 187, 144, 125, 146, 123, 108, 131, 101, 61, 82, 106, 146, 200, 167, 122, 152, 142, 99, 125, 134, 94, 88, 79, 82, 159, 197, 168, 169, 134, 61, 100, 184, 182, 155, 124, 72, 75, 117, 122, 120, 117, 101, 143, 201, 184, 151, 133, 79, 59, 117, 157, 154, 144, 101, 61, 87, 146, 195, 201, 132, 70, 96, 132, 146, 174, 152, 84, 91, 130, 106, 92, 126, 146, 155, 162, 150, 149, 149, 110, 81, 99, 124, 144, 161, 146, 95, 57, 73, 132, 175, 169, 134, 113, 111, 105, 100, 129, 148, 125, 105, 99, 96, 138, 193, 183, 155, 145, 114, 100, 114, 95, 66, 68, 85, 142, 205, 201, 171, 141, 80, 75, 156, 186, 148, 108, 70, 79, 123, 108, 106, 178, 188, 135, 144, 139, 101, 131, 151, 106, 105, 122, 104, 129, 143, 96, 116, 161, 137, 155, 175, 95, 74, 142, 126, 113, 176, 165, 118, 122, 91, 67, 122, 142, 137, 175, 149, 97, 133, 146, 101, 111, 128, 100, 101, 119, 133, 170, 161, 113, 134, 171, 147, 129, 128, 94, 84, 110, 111, 110, 126, 126, 136, 163, 151, 131, 138, 130, 116, 125, 111, 81, 87, 107, 120, 151, 164, 146, 142, 148, 132, 114, 123, 139, 139, 124, 108, 107, 123, 120, 86, 112, 195, 188, 117, 113, 119, 105, 146, 148, 56, 49, 145, 178, 134, 79, 69, 149, 215, 173, 122, 120, 116, 114, 110, 93, 120, 154, 121, 111, 164, 163, 120, 155, 215, 162, 52, 58, 156, 149, 50, 44, 119, 134, 122, 155, 188, 202, 184, 91, 30, 109, 183, 139, 97, 90, 69, 106, 194, 222, 205, 157, 77, 84, 156, 129, 83, 121, 98, 36, 92, 177, 184, 158, 101, 73, 148, 177, 118, 126, 126, 32, 57, 194, 215, 188, 194, 122, 42, 72, 134, 175, 183, 117, 87, 139, 125, 81, 130, 150, 98, 106, 129, 98, 121, 185, 161, 73, 45, 118, 220, 220, 114, 41, 60, 133, 192, 168, 97, 104, 157, 130, 79, 132, 214, 177, 83, 79, 114, 84, 88, 181, 190, 103, 105, 167, 145, 114, 118, 75, 54, 123, 177, 167, 141, 117, 131, 163, 120, 68, 122, 180, 131, 49, 40, 142, 247, 195, 71, 80, 156, 157, 139, 147, 129, 94, 87, 116, 161, 174, 123, 73, 86, 118, 126, 159, 206, 177, 72, 17, 77, 151, 152, 143, 163, 144, 114, 164, 180, 81, 37, 105, 128, 108, 150, 206, 192, 119, 49, 66, 160, 216, 169, 66, 11, 55, 120, 137, 165, 222, 196, 93, 73, 138, 136, 95, 133, 159, 93, 75, 145, 157, 113, 104, 123, 159, 178, 148, 138, 157, 93, 13, 59, 168, 216, 201, 161, 134, 120, 88, 82, 149, 189, 130, 74, 92, 109, 113, 161, 194, 135, 72, 96, 157, 165, 106, 41, 54, 145, 220, 201, 123, 82, 93, 86, 90, 163, 210, 155, 105, 112, 107, 99, 142, 182, 160, 111, 101, 123, 107, 61, 78, 138, 154, 139, 156, 165, 138, 135, 152, 118, 78, 110, 154, 144, 114, 96, 107, 158, 182, 144, 120, 141, 130, 81, 77, 128, 146, 108, 99, 134, 147, 148, 147, 112, 99, 149, 160, 112, 114, 141, 96, 57, 125, 201, 174, 121, 131, 145, 123, 129, 150, 113, 67, 97, 152, 152, 137, 147, 144, 125, 137, 145, 114, 105, 118, 108, 110, 144, 149, 130, 134, 135, 105, 60, 42, 82, 147, 167, 158, 171, 171, 126, 100, 137, 184, 170, 97, 41, 84, 182, 187, 100, 70, 123, 180, 215, 203, 113, 34, 60, 128, 134, 99, 92, 111, 117, 120, 148, 177, 192, 183, 134, 85, 79, 83, 77, 92, 123, 149, 175, 194, 187, 147, 88, 69, 108, 139, 117, 88, 99, 134, 149, 135, 133, 161, 171, 129, 82, 86, 110, 107, 111, 150, 171, 151, 133, 128, 118, 109, 121, 139, 130, 112, 121, 129, 112, 112, 144, 161, 159, 151, 132, 122, 122, 93, 55, 85, 157, 168, 122, 112, 146, 151, 130, 129, 131, 99, 64, 73, 121, 154, 146, 133, 154, 183, 180, 160, 147, 116, 74, 83, 133, 149, 123, 109, 121, 132, 135, 145, 161, 154, 106, 69, 86, 120, 126, 120, 128, 141, 141, 135, 142, 162, 163, 133, 100, 94, 101, 108, 120, 145, 157, 141, 131, 157, 163, 109, 64, 83, 105, 88, 100, 155, 181, 161, 142, 132, 129, 134, 136, 125, 97, 68, 91, 163, 190, 148, 119, 128, 130, 116, 107, 106, 113, 112, 98, 100, 135, 162, 164, 168, 169, 146, 118, 118, 129, 124, 106, 101, 114, 126, 130, 144, 168, 170, 144, 108, 83, 77, 70, 66, 98, 142, 135, 124, 165, 195, 167, 134, 123, 108, 96, 111, 142, 148, 130, 133, 161, 170, 151, 125, 98, 94, 113, 119, 99, 91, 114, 158, 169, 131, 96, 103, 133, 160, 150, 105, 91, 120, 126, 113, 130, 160, 180, 175, 130, 83, 104, 149, 142, 105, 86, 86, 109, 159, 181, 146, 110, 119, 146, 157, 134, 96, 82, 95, 119, 149, 157, 133, 123, 132, 120, 105, 117, 131, 130, 118, 107, 116, 130, 134, 149, 160, 146, 135, 138, 122, 109, 128, 135, 118, 108, 125, 144, 145, 136, 141, 145, 125, 91, 74, 90, 109, 108, 107, 117, 122, 145, 192, 193, 133, 87, 90, 107, 129, 145, 143, 136, 150, 174, 170, 137, 121, 128, 122, 99, 85, 85, 100, 125, 129, 123, 142, 157, 141, 123, 116, 107, 114, 124, 108, 105, 137, 163, 160, 150, 141, 130, 128, 137, 142, 119, 93, 105, 128, 131, 135, 151, 152, 137, 116, 101, 110, 125, 118, 104, 106, 131, 164, 175, 145, 112, 119, 134, 114, 86, 100, 134, 137, 128, 126, 121, 129, 156, 165, 142, 113, 99, 103, 111, 119, 137, 158, 148, 113, 105, 136, 164, 155, 131, 113, 99, 104, 125, 124, 104, 101, 111, 126, 150, 157, 133, 111, 110, 119, 132, 142, 138, 124, 112, 118, 137, 161, 170, 148, 122, 124, 132, 118, 107, 111, 119, 133, 144, 126, 96, 98, 133, 147, 126, 107, 114, 128, 125, 120, 131, 149, 152, 141, 131, 123, 121, 132, 131, 105, 93, 123, 161, 162, 138, 130, 130, 121, 119, 121, 108, 96, 104, 111, 131, 162, 160, 132, 132, 147, 136, 109, 95, 94, 104, 121, 134, 130, 124, 130, 138, 152, 158, 128, 93, 104, 132, 133, 122, 122, 133, 151, 157, 144, 133, 131, 132, 124, 104, 92, 112, 139, 142, 122, 106, 117, 138, 138, 121, 103, 88, 100, 138, 149, 125, 123, 150, 168, 161, 143, 125, 122, 128, 129, 124, 119, 119, 132, 148, 150, 131, 108, 106, 122, 130, 118, 104, 101, 109, 124, 135, 138, 144, 144, 128, 118, 121, 129, 134, 128, 118, 126, 134, 130, 136, 143, 128, 117, 129, 146, 151, 129, 92, 90, 114, 131, 142, 147, 136, 126, 126, 126, 131, 131, 114, 104, 114, 128, 126, 117, 117, 132, 146, 148, 135, 117, 113, 126, 132, 126, 120, 122, 132, 141, 138, 137, 141, 136, 123, 113, 116, 124, 128, 121, 113, 113, 126, 144, 144, 126, 112, 109, 116, 120, 114, 112, 122, 131, 138, 151, 151, 142, 138, 133, 121, 125, 137, 132, 124, 129, 135, 138, 141, 137, 131, 119, 101, 97, 107, 108, 106, 118, 133, 142, 137, 120, 116, 126, 133, 133, 124, 103, 97, 124, 144, 144, 150, 154, 142, 132, 126, 122, 124, 125, 119, 120, 128, 133, 141, 143, 126, 120, 134, 138, 122, 116, 120, 121, 122, 123, 123, 128, 128, 122, 121, 119, 109, 106, 110, 118, 135, 145, 133, 123, 132, 145, 146, 138, 131, 124, 123, 131, 136, 131, 130, 130, 122, 129, 139, 134, 129, 123, 101, 93, 110, 126, 132, 125, 110, 113, 135, 142, 136, 135, 134, 133, 129, 124, 130, 137, 137, 136, 133, 133, 145, 144, 129, 125, 120, 106, 113, 124, 117, 116, 120, 124, 134, 131, 114, 121, 141, 139, 123, 105, 101, 125, 150, 151, 143, 138, 133, 129, 132, 138, 139, 133, 120, 110, 119, 138, 136, 122, 130, 142, 134, 123, 109, 96, 104, 121, 128, 132, 134, 130, 133, 135, 123, 116, 121, 128, 130, 119, 99, 105, 134, 156, 157, 145, 135, 136, 132, 121, 132, 150, 144, 129, 124, 117, 116, 135, 156, 149, 122, 97, 90, 105, 129, 136, 124, 107, 100, 109, 130, 144, 138, 119, 109, 117, 131, 137, 134, 129, 130, 137, 137, 141, 156, 156, 124, 101, 112, 125, 129, 129, 123, 121, 130, 130, 113, 107, 117, 128, 131, 129, 123, 121, 124, 134, 142, 138, 128, 121, 117, 118, 124, 137, 150, 149, 130, 114, 120, 139, 154, 143, 117, 107, 114, 120, 129, 134, 128, 124, 134, 134, 120, 113, 117, 126, 137, 132, 111, 100, 107, 117, 120, 118, 125, 147, 150, 126, 110, 118, 132, 147, 154, 139, 122, 119, 124, 136, 145, 142, 146, 149, 130, 110, 111, 116, 118, 119, 114, 117, 123, 119, 121, 131, 126, 114, 109, 103, 112, 136, 135, 121, 123, 134, 143, 148, 148, 145, 138, 124, 117, 125, 128, 122, 131, 139, 129, 116, 117, 122, 131, 137, 124, 100, 96, 113, 132, 146, 144, 131, 123, 119, 117, 125, 133, 132, 133, 128, 116, 123, 143, 148, 142, 133, 126, 129, 125, 116, 120, 128, 126, 129, 132, 130, 133, 137, 126, 112, 112, 122, 135, 137, 125, 113, 116, 126, 128, 118, 114, 126, 134, 129, 122, 125, 137, 149, 145, 128, 118, 129, 148, 152, 138, 128, 123, 118, 124, 142, 141, 122, 113, 109, 101, 108, 124, 125, 119, 123, 125, 114, 109, 120, 133, 136, 133, 128, 131, 139, 142, 132, 120, 119, 132, 147, 146, 128, 117, 130, 142, 131, 120, 125, 129, 122, 117, 109, 105, 117, 135, 138, 129, 119, 118, 130, 145, 146, 129, 113, 108, 114, 124, 126, 123, 132, 145, 139, 126, 131, 138, 132, 128, 132, 130, 118, 118, 124, 128, 130, 136, 139, 132, 120, 111, 111, 116, 113, 111, 128, 148, 143, 118, 108, 118, 132, 138, 132, 121, 124, 134, 130, 124, 137, 157, 159, 141, 117, 110, 126, 145, 143, 126, 119, 118, 116, 117, 120, 116, 116, 119, 113, 117, 132, 137, 131, 123, 117, 118, 122, 122, 132, 147, 141, 125, 122, 129, 139, 146, 145, 146, 143, 129, 123, 128, 122, 117, 124, 130, 126, 120, 111, 111, 122, 131, 131, 128, 119, 117, 122, 122, 116, 108, 112, 137, 157, 139, 121, 126, 130, 125, 136, 138, 130, 137, 145, 133, 131, 141, 135, 131, 135, 133, 130, 129, 120, 114, 120, 120, 121, 131, 126, 117, 120, 118, 109, 120, 137, 131, 114, 109, 116, 123, 122, 123, 138, 152, 147, 135, 129, 129, 139, 145, 134, 124, 130, 130, 119, 119, 133, 141, 131, 116, 105, 106, 116, 119, 114, 114, 121, 125, 129, 131, 124, 119, 124, 132, 133, 131, 131, 130, 130, 132, 133, 135, 141, 141, 137, 135, 129, 117, 118, 125, 123, 125, 131, 123, 114, 118, 122, 121, 123, 126, 124, 119, 119, 125, 124, 116, 116, 124, 130, 131, 132, 133, 132, 130, 128, 129, 133, 143, 152, 146, 134, 131, 135, 138, 133, 117, 111, 123, 129, 125, 125, 126, 126, 122, 116, 123, 135, 124, 107, 111, 124, 133, 131, 116, 110, 132, 149, 142, 126, 130, 145, 148, 132, 123, 130, 132, 132, 131, 119, 111, 121, 129, 124, 120, 120, 122, 123, 119, 117, 118, 118, 123, 133, 131, 128, 129, 120, 117, 129, 133, 126, 133, 142, 139, 135, 130, 128, 136, 142, 133, 129, 131, 125, 119, 118, 117, 120, 125, 120, 113, 123, 130, 120, 117, 128, 131, 129, 126, 118, 112, 125, 137, 131, 118, 121, 134, 141, 139, 133, 128, 135, 146, 139, 128, 128, 132, 133, 134, 122, 106, 110, 130, 139, 133, 116, 105, 116, 130, 121, 106, 110, 124, 133, 132, 121, 112, 124, 145, 148, 135, 124, 125, 132, 134, 131, 130, 133, 139, 150, 150, 136, 124, 125, 132, 133, 126, 117, 114, 118, 116, 113, 120, 128, 130, 130, 128, 118, 111, 116, 122, 126, 131, 120, 110, 128, 148, 142, 129, 128, 137, 150, 147, 129, 123, 131, 134, 136, 135, 123, 118, 125, 131, 126, 120, 117, 120, 124, 118, 106, 112, 130, 135, 126, 116, 119, 133, 138, 130, 125, 135, 142, 133, 122, 120, 130, 144, 147, 135, 126, 131, 139, 139, 132, 124, 128, 134, 130, 112, 105, 117, 133, 132, 112, 99, 114, 136, 137, 120, 109, 119, 135, 138, 123, 110, 119, 136, 142, 132, 129, 144, 154, 144, 129, 129, 138, 143, 135, 122, 118, 122, 125, 124, 122, 118, 119, 128, 126, 113, 113, 128, 128, 116, 114, 117, 120, 130, 130, 116, 118, 138, 145, 134, 124, 126, 135, 141, 130, 116, 122, 142, 147, 134, 122, 122, 129, 134, 133, 122, 111, 118, 130, 126, 120, 123, 128, 131, 136, 133, 120, 118, 129, 134, 131, 125, 124, 126, 129, 133, 136, 135, 134, 133, 130, 125, 128, 132, 130, 129, 133, 130, 113, 108, 123, 131, 126, 125, 124, 120, 128, 133, 120, 105, 109, 124, 133, 129, 121, 119, 120, 126, 135, 135, 132, 137, 138, 124, 113, 120, 133, 141, 137, 126, 116, 119, 126, 129, 128, 125, 120, 114, 113, 118, 125, 122, 111, 109, 117, 121, 129, 141, 137, 124, 123, 124, 122, 131, 144, 146, 136, 129, 130, 133, 136, 144, 148, 139, 125, 123, 129, 126, 116, 110, 118, 125, 129, 125, 114, 113, 123, 125, 120, 122, 124, 119, 117, 120, 125, 130, 132, 135, 134, 128, 126, 131, 137, 142, 143, 136, 130, 125, 129, 139, 142, 136, 134, 125, 110, 117, 131, 123, 118, 125, 123, 114, 113, 117, 121, 123, 121, 121, 123, 122, 121, 124, 132, 137, 132, 128, 135, 142, 139, 141, 137, 128, 129, 134, 128, 124, 129, 130, 126, 120, 113, 118, 125, 125, 120, 120, 121, 121, 124, 130, 130, 123, 121, 125, 128, 129, 132, 133, 134, 138, 135, 131, 132, 133, 131, 131, 129, 129, 133, 128, 121, 126, 128, 121, 124, 126, 121, 121, 122, 118, 117, 116, 117, 125, 129, 122, 129, 141, 132, 120, 125, 132, 130, 130, 136, 136, 131, 138, 146, 133, 122, 134, 142, 134, 133, 129, 116, 118, 129, 124, 118, 124, 129, 120, 112, 118, 126, 126, 121, 119, 121, 124, 129, 128, 121, 123, 133, 138, 134, 131, 137, 142, 133, 122, 118, 125, 142, 146, 129, 117, 126, 134, 131, 126, 122, 123, 128, 122, 111, 117, 131, 135, 128, 118, 120, 130, 128, 122, 126, 129, 125, 124, 118, 117, 132, 143, 141, 135, 125, 121, 135, 142, 132, 125, 121, 120, 130, 130, 114, 117, 130, 124, 117, 122, 122, 120, 128, 129, 121, 123, 125, 119, 122, 132, 133, 133, 132, 126, 135, 144, 130, 124, 144, 147, 131, 123, 126, 136, 141, 129, 122, 131, 129, 120, 119, 114, 117, 125, 120, 112, 119, 122, 119, 125, 134, 134, 126, 117, 118, 130, 134, 133, 132, 133, 136, 133, 125, 130, 142, 144, 136, 131, 130, 131, 124, 118, 122, 125, 123, 124, 122, 113, 114, 118, 116, 122, 131, 123, 117, 120, 114, 113, 122, 125, 128, 139, 137, 122, 126, 137, 134, 134, 144, 146, 141, 130, 121, 131, 145, 137, 126, 129, 128, 129, 136, 125, 111, 120, 128, 117, 111, 121, 129, 131, 129, 121, 119, 124, 126, 125, 130, 131, 126, 125, 126, 125, 124, 128, 136, 142, 135, 122, 120, 131, 136, 133, 130, 126, 118, 110, 116, 128, 125, 118, 123, 128, 124, 122, 121, 117, 118, 122, 124, 125, 129, 128, 125, 132, 138, 130, 123, 137, 151, 147, 136, 133, 134, 139, 139, 124, 116, 128, 136, 132, 121, 111, 112, 122, 128, 123, 117, 112, 109, 110, 118, 126, 128, 130, 134, 131, 120, 118, 125, 133, 137, 136, 132, 132, 133, 135, 138, 135, 128, 128, 129, 124, 128, 134, 126, 116, 121, 125, 119, 118, 123, 126, 124, 116, 110, 121, 134, 130, 121, 123, 126, 125, 124, 132, 143, 142, 129, 125, 133, 137, 139, 134, 123, 128, 138, 130, 122, 131, 129, 118, 118, 120, 121, 129, 129, 118, 116, 120, 116, 114, 119, 122, 128, 131, 121, 114, 124, 134, 134, 131, 128, 130, 142, 148, 135, 122, 126, 136, 138, 136, 134, 126, 121, 122, 124, 122, 119, 125, 131, 122, 111, 118, 126, 128, 131, 133, 128, 121, 121, 132, 145, 142, 122, 113, 129, 145, 147, 142, 134, 129, 132, 136, 126, 119, 130, 136, 125, 117, 116, 117, 126, 135, 125, 110, 107, 116, 120, 118, 118, 124, 122, 114, 118, 125, 130, 133, 133, 125, 123, 128, 134, 138, 141, 146, 145, 132, 128, 139, 143, 137, 137, 133, 124, 124, 125, 120, 117, 116, 119, 128, 131, 123, 116, 111, 114, 126, 131, 117, 107, 117, 130, 135, 130, 121, 126, 143, 145, 133, 126, 126, 129, 139, 139, 124, 123, 134, 128, 121, 126, 124, 121, 132, 133, 118, 112, 118, 124, 134, 133, 122, 125, 131, 121, 116, 125, 133, 135, 132, 125, 130, 137, 133, 130, 134, 132, 132, 141, 134, 124, 130, 132, 124, 126, 130, 124, 123, 123, 119, 119, 123, 121, 119, 119, 120, 123, 126, 123, 123, 125, 124, 123, 125, 126, 135, 146, 138, 123, 124, 134, 138, 136, 128, 125, 135, 141, 129, 118, 118, 121, 128, 129, 117, 108, 118, 130, 131, 123, 118, 121, 129, 129, 128, 130, 131, 130, 131, 126, 120, 122, 134, 146, 142, 124, 124, 141, 139, 129, 139, 146, 128, 116, 119, 121, 129, 139, 130, 112, 109, 112, 119, 129, 128, 120, 120, 119, 116, 117, 119, 122, 132, 134, 124, 124, 133, 134, 135, 136, 131, 131, 135, 132, 132, 141, 137, 124, 122, 130, 135, 132, 120, 116, 125, 131, 121, 112, 114, 121, 126, 130, 129, 125, 120, 119, 121, 123, 130, 139, 138, 132, 128, 119, 119, 139, 151, 138, 122, 122, 130, 136, 132, 118, 112, 117, 123, 131, 132, 124, 117, 112, 113, 123, 129, 124, 122, 121, 116, 118, 128, 130, 126, 132, 139, 137, 126, 122, 132, 142, 139, 130, 125, 128, 137, 143, 135, 124, 122, 126, 131, 131, 125, 114, 109, 116, 123, 122, 114, 112, 121, 132, 130, 123, 125, 129, 128, 128, 128, 126, 131, 137, 138, 135, 130, 125, 136, 151, 146, 124, 111, 118, 131, 135, 128, 120, 120, 123, 123, 122, 122, 124, 124, 123, 122, 120, 117, 118, 122, 125, 126, 121, 119, 134, 144, 137, 134, 131, 118, 121, 141, 142, 132, 129, 124, 126, 141, 142, 125, 118, 122, 131, 132, 119, 109, 117, 123, 123, 124, 121, 119, 126, 131, 122, 118, 125, 130, 132, 133, 126, 122, 130, 135, 135, 138, 138, 134, 134, 133, 129, 130, 129, 130, 135, 131, 117, 118, 129, 129, 124, 121, 120, 122, 123, 122, 123, 122, 121, 124, 129, 124, 123, 132, 137, 132, 126, 131, 133, 130, 135, 141, 136, 132, 133, 125, 120, 131, 138, 132, 123, 120, 118, 119, 123, 124, 122, 120, 123, 124, 124, 129, 125, 110, 111, 130, 131, 120, 123, 130, 124, 129, 139, 136, 131, 134, 137, 135, 131, 125, 125, 133, 139, 139, 132, 119, 113, 119, 125, 125, 122, 119, 114, 119, 128, 124, 118, 121, 126, 129, 128, 125, 128, 134, 131, 122, 124, 132, 133, 131, 134, 137, 136, 131, 129, 129, 125, 125, 129, 129, 128, 125, 123, 124, 125, 122, 122, 123, 120, 124, 131, 122, 114, 121, 124, 125, 132, 132, 126, 124, 125, 133, 141, 134, 129, 136, 136, 129, 133, 137, 133, 132, 132, 130, 132, 129, 117, 111, 117, 122, 126, 128, 122, 124, 129, 126, 122, 119, 119, 126, 129, 122, 123, 128, 121, 122, 134, 137, 135, 139, 137, 133, 136, 134, 126, 126, 130, 131, 135, 132, 121, 119, 121, 123, 129, 132, 125, 121, 122, 116, 112, 118, 122, 125, 132, 132, 124, 129, 135, 130, 125, 132, 134, 134, 138, 133, 123, 124, 133, 137, 134, 126, 126, 134, 132, 121, 121, 124, 118, 114, 121, 122, 120, 121, 122, 124, 126, 120, 116, 123, 132, 130, 122, 119, 118, 123, 130, 134, 143, 145, 133, 129, 136, 132, 125, 130, 132, 128, 129, 129, 122, 126, 133, 124, 119, 122, 121, 120, 125, 125, 117, 109, 116, 131, 133, 117, 112, 129, 136, 134, 133, 130, 130, 143, 146, 132, 123, 123, 131, 143, 141, 124, 128, 137, 128, 119, 122, 117, 113, 121, 124, 121, 120, 113, 114, 125, 128, 120, 120, 122, 122, 125, 122, 118, 125, 138, 141, 135, 126, 123, 136, 147, 136, 128, 130, 128, 130, 141, 134, 118, 124, 134, 125, 119, 119, 121, 130, 131, 118, 111, 116, 116, 120, 128, 124, 120, 124, 128, 124, 121, 122, 133, 142, 137, 130, 131, 131, 129, 134, 141, 139, 133, 124, 121, 123, 124, 121, 123, 129, 130, 126, 120, 110, 109, 121, 131, 129, 121, 114, 118, 128, 133, 130, 130, 136, 141, 138, 130, 126, 132, 139, 141, 137, 130, 122, 126, 146, 150, 131, 114, 118, 124, 131, 132, 122, 114, 121, 124, 113, 109, 119, 130, 131, 121, 116, 118, 122, 128, 135, 130, 120, 126, 139, 141, 139, 139, 133, 129, 136, 139, 129, 122, 126, 131, 130, 128, 125, 124, 129, 132, 128, 120, 118, 119, 121, 122, 122, 121, 119, 122, 129, 126, 121, 128, 136, 133, 128, 128, 133, 137, 135, 130, 133, 134, 128, 126, 133, 134, 135, 131, 120, 117, 122, 121, 118, 125, 132, 126, 116, 111, 120, 134, 136, 122, 114, 120, 123, 122, 121, 123, 131, 137, 137, 135, 132, 131, 135, 138, 132, 125, 129, 132, 130, 131, 129, 124, 130, 134, 125, 118, 122, 125, 125, 126, 122, 116, 119, 124, 125, 128, 128, 128, 130, 133, 128, 122, 126, 135, 138, 134, 129, 129, 133, 136, 134, 131, 128, 125, 128, 128, 124, 125, 128, 122, 120, 124, 125, 123, 119, 118, 126, 132, 124, 119, 121, 119, 120, 124, 125, 130, 137, 135, 130, 131, 135, 137, 136, 132, 129, 130, 132, 135, 135, 130, 129, 131, 128, 125, 126, 125, 122, 124, 124, 117, 111, 112, 118, 124, 123, 118, 121, 129, 131, 129, 124, 121, 132, 145, 138, 125, 124, 129, 135, 141, 138, 131, 126, 122, 123, 126, 122, 119, 128, 134, 128, 116, 111, 123, 135, 125, 109, 109, 119, 126, 130, 130, 130, 132, 130, 126, 128, 130, 135, 144, 142, 126, 121, 131, 138, 137, 133, 131, 128, 122, 120, 125, 131, 129, 122, 116, 116, 120, 123, 123, 123, 126, 128, 124, 116, 111, 122, 134, 132, 124, 122, 124, 129, 133, 138, 144, 143, 135, 132, 130, 129, 132, 136, 131, 125, 124, 124, 121, 121, 125, 131, 129, 120, 116, 117, 119, 121, 122, 123, 129, 133, 128, 119, 122, 134, 139, 133, 126, 129, 132, 129, 128, 135, 138, 129, 122, 129, 135, 132, 123, 120, 126, 133, 128, 117, 114, 120, 126, 126, 119, 113, 118, 123, 121, 118, 119, 126, 136, 135, 124, 120, 126, 139, 145, 136, 129, 134, 138, 131, 122, 122, 130, 134, 125, 114, 118, 130, 136, 134, 129, 122, 118, 122, 128, 124, 120, 123, 126, 126, 123, 120, 121, 131, 138, 137, 130, 122, 126, 132, 130, 130, 135, 132, 128, 128, 122, 121, 134, 139, 129, 119, 118, 120, 128, 129, 118, 116, 124, 125, 120, 119, 122, 129, 130, 120, 113, 120, 128, 133, 133, 129, 130, 134, 128, 123, 131, 133, 
    };
    
    unsigned int CurrentSample = 0;
     
    
    void StandbyLok(){
            analogWrite(A14, StandbyLokBR99[CurrentSample++/2]);
            if (CurrentSample >= sizeof(StandbyLokBR99)/sizeof(int)) {
            CurrentSample = 0;
           }
    }
    
    void setup(){
        analogReference(EXTERNAL);
           analogWriteResolution(8);
    
           myTimer.begin(StandbyLok, 200);
                  delay(3000);
    } 
    
    void loop()
    {
    }

  25. #50
    Senior Member
    Join Date
    Apr 2014
    Posts
    322
    Yes, that works, sounds like Stationary Engine Ok, 16500+ samples, loud bits sounded a bit harsh, i see they are up at 255 and you have analogResolution(8) normally OK, I changed it to analogResolution(12), I think it plays smoother, and away loud enough......but this then is not the issue.......You must not be talking to spiFlash correctly, or the files are not readable or corrupt. You should maybe run EraseAllFiles sketch and and then CopyFromSerial again to copy on the files again, and run ListFiles to see is all there and correct sizes and use same SPI pins for for each.....and watch if anything comes up in the monitor terminal.

    I cannot get my CopyFromSerial to work......I dont understand the logic or the correct procedure of running the sketch and then running the Python script, where does everything need to be in relation to each other......what folders etc...... I compile the sketch all looks like it is running no errors, uploads OK, LED flashes and the stays ON.....I think thenotes says led should go off.....what do I do then with the python script..???
    I have Python3.4 on PC....dont use it except play with it in interactive mode...????

    I use the CopyFromSD sketch and it seems to work well ....no python etc...??

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •