Browse Source

Add HiReSam plugin

tags/2018-04-16
falkTX 6 years ago
parent
commit
a216b51242
18 changed files with 2459 additions and 0 deletions
  1. +21
    -0
      ports/HiReSam/LV2/premake.lua
  2. +21
    -0
      ports/HiReSam/VST/premake.lua
  3. +713
    -0
      ports/HiReSam/source/BinaryData.cpp
  4. +26
    -0
      ports/HiReSam/source/BinaryData.h
  5. +33
    -0
      ports/HiReSam/source/JuceHeader.h
  6. +160
    -0
      ports/HiReSam/source/JucePluginCharacteristics.h
  7. BIN
      ports/HiReSam/source/Resources/Samuel_Gaehwiler.png
  8. +127
    -0
      ports/HiReSam/source/SamWithBubble.cpp
  9. +41
    -0
      ports/HiReSam/source/SamWithBubble.h
  10. +201
    -0
      ports/HiReSam/source/SpectrumAnalyserAudioProcessor.cpp
  11. +78
    -0
      ports/HiReSam/source/SpectrumAnalyserAudioProcessor.h
  12. +87
    -0
      ports/HiReSam/source/SpectrumAnalyserAudioProcessorEditor.cpp
  13. +56
    -0
      ports/HiReSam/source/SpectrumAnalyserAudioProcessorEditor.h
  14. +45
    -0
      ports/HiReSam/source/SpectrumAnalyserHeader.h
  15. +105
    -0
      ports/HiReSam/source/SpectrumProcessor.cpp
  16. +76
    -0
      ports/HiReSam/source/SpectrumProcessor.h
  17. +551
    -0
      ports/HiReSam/source/SpectrumViewer.cpp
  18. +118
    -0
      ports/HiReSam/source/SpectrumViewer.h

+ 21
- 0
ports/HiReSam/LV2/premake.lua View File

@@ -0,0 +1,21 @@
dofile("../../../scripts/make-project.lua")
package = make_juce_lv2_project("HiReSam")
package.config["Release"].links = { package.config["Release"].links, "drowaudio" }
package.config["Debug"].links = { package.config["Debug"].links, "drowaudio_debug" }
package.defines = { package.defines, "USE_DROWAUDIO=1" }
package.includepaths = {
package.includepaths,
"../../drowaudio-common"
}
package.files = {
matchfiles (
"../source/*.cpp",
"../../../libs/juce-plugin/JucePluginMain.cpp"
)
}

+ 21
- 0
ports/HiReSam/VST/premake.lua View File

@@ -0,0 +1,21 @@
dofile("../../../scripts/make-project.lua")
package = make_juce_vst_project("HiReSam")
package.config["Release"].links = { package.config["Release"].links, "drowaudio" }
package.config["Debug"].links = { package.config["Debug"].links, "drowaudio_debug" }
package.defines = { package.defines, "USE_DROWAUDIO=1" }
package.includepaths = {
package.includepaths,
"../../drowaudio-common"
}
package.files = {
matchfiles (
"../source/*.cpp",
"../../../libs/juce-plugin/JucePluginMain.cpp"
)
}

+ 713
- 0
ports/HiReSam/source/BinaryData.cpp View File

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

+ 26
- 0
ports/HiReSam/source/BinaryData.h View File

@@ -0,0 +1,26 @@
/* =========================================================================================
This is an auto-generated file: Any edits you make may be overwritten!
*/
#ifndef BINARYDATA_H_83632753_INCLUDED
#define BINARYDATA_H_83632753_INCLUDED
namespace BinaryData
{
extern const char* Samuel_Gaehwiler_png;
const int Samuel_Gaehwiler_pngSize = 47452;
// Points to the start of a list of resource names.
extern const char* namedResourceList[];
// Number of elements in the namedResourceList array.
const int namedResourceListSize = 1;
// If you provide the name of one of the binary resource variables above, this function will
// return the corresponding data and its size (or a null pointer if the name isn't found).
const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes) throw();
}
#endif

+ 33
- 0
ports/HiReSam/source/JuceHeader.h View File

@@ -0,0 +1,33 @@
/*
IMPORTANT! This file is auto-generated each time you save your
project - if you alter its contents, your changes may be overwritten!
This is the header file that your files should include in order to get all the
JUCE library headers. You should avoid including the JUCE headers directly in
your own source files, because that wouldn't pick up the correct configuration
options for your app.
*/
#ifndef __APPHEADERFILE_CGKUIL__
#define __APPHEADERFILE_CGKUIL__
#include "JucePluginMain.h"
#include "dRowAudio.h"
#include "BinaryData.h"
#if ! DONT_SET_USING_JUCE_NAMESPACE
// If your code uses a lot of JUCE classes, then this will obviously save you
// a lot of typing, but can be disabled by setting DONT_SET_USING_JUCE_NAMESPACE.
using namespace juce;
#endif
namespace ProjectInfo
{
const char* const projectName = "HiReSam";
const char* const versionString = "0.1.0";
const int versionNumber = 0x100;
}
#endif // __APPHEADERFILE_CGKUIL__

+ 160
- 0
ports/HiReSam/source/JucePluginCharacteristics.h View File

@@ -0,0 +1,160 @@
/*
==============================================================================

This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-7 by Raw Material Software ltd.

------------------------------------------------------------------------------

JUCE can be redistributed and/or modified under the terms of the
GNU General Public License, as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.

JUCE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with JUCE; if not, visit www.gnu.org/licenses or write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA

------------------------------------------------------------------------------

If you'd like to release a closed-source product which uses JUCE, commercial
licenses are also available: visit www.rawmaterialsoftware.com/juce for
more information.

==============================================================================
*/

#ifndef __JUCE_PLUGIN_CHARACTERISTICS_H__
#define __JUCE_PLUGIN_CHARACTERISTICS_H__


#ifndef JucePlugin_Name
#define JucePlugin_Name "HiReSam"
#endif
#ifndef JucePlugin_Desc
#define JucePlugin_Desc "HiReSam"
#endif
#ifndef JucePlugin_Manufacturer
#define JucePlugin_Manufacturer "Klangfreund"
#endif
#ifndef JucePlugin_ManufacturerWebsite
#define JucePlugin_ManufacturerWebsite ""
#endif
#ifndef JucePlugin_ManufacturerEmail
#define JucePlugin_ManufacturerEmail ""
#endif
#ifndef JucePlugin_ManufacturerCode
#define JucePlugin_ManufacturerCode 'Klfr'
#endif
#ifndef JucePlugin_PluginCode
#define JucePlugin_PluginCode 'Hire'
#endif
#ifndef JucePlugin_MaxNumInputChannels
#define JucePlugin_MaxNumInputChannels 1
#endif
#ifndef JucePlugin_MaxNumOutputChannels
#define JucePlugin_MaxNumOutputChannels 1
#endif
#ifndef JucePlugin_PreferredChannelConfigurations
#define JucePlugin_PreferredChannelConfigurations {1, 1}
#endif
#ifndef JucePlugin_IsSynth
#define JucePlugin_IsSynth 0
#endif
#ifndef JucePlugin_WantsMidiInput
#define JucePlugin_WantsMidiInput 0
#endif
#ifndef JucePlugin_ProducesMidiOutput
#define JucePlugin_ProducesMidiOutput 0
#endif
#ifndef JucePlugin_SilenceInProducesSilenceOut
#define JucePlugin_SilenceInProducesSilenceOut 1
#endif
#ifndef JucePlugin_EditorRequiresKeyboardFocus
#define JucePlugin_EditorRequiresKeyboardFocus 0
#endif
#ifndef JucePlugin_Version
#define JucePlugin_Version 0.1.0
#endif
#ifndef JucePlugin_VersionCode
#define JucePlugin_VersionCode 0x100
#endif
#ifndef JucePlugin_VersionString
#define JucePlugin_VersionString "0.1.0"
#endif
#ifndef JucePlugin_VSTUniqueID
#define JucePlugin_VSTUniqueID JucePlugin_PluginCode
#endif
#ifndef JucePlugin_VSTCategory
#define JucePlugin_VSTCategory kPlugCategEffect
#endif
#ifndef JucePlugin_AUMainType
#define JucePlugin_AUMainType kAudioUnitType_Effect
#endif
#ifndef JucePlugin_AUSubType
#define JucePlugin_AUSubType JucePlugin_PluginCode
#endif
#ifndef JucePlugin_AUExportPrefix
#define JucePlugin_AUExportPrefix HiReSamAU
#endif
#ifndef JucePlugin_AUExportPrefixQuoted
#define JucePlugin_AUExportPrefixQuoted "HiReSamAU"
#endif
#ifndef JucePlugin_AUManufacturerCode
#define JucePlugin_AUManufacturerCode JucePlugin_ManufacturerCode
#endif
#ifndef JucePlugin_CFBundleIdentifier
#define JucePlugin_CFBundleIdentifier com.klangfreund.HiReSam
#endif
#ifndef JucePlugin_RTASCategory
#define JucePlugin_RTASCategory ePlugInCategory_None
#endif
#ifndef JucePlugin_RTASManufacturerCode
#define JucePlugin_RTASManufacturerCode JucePlugin_ManufacturerCode
#endif
#ifndef JucePlugin_RTASProductId
#define JucePlugin_RTASProductId JucePlugin_PluginCode
#endif
#ifndef JucePlugin_RTASDisableBypass
#define JucePlugin_RTASDisableBypass 0
#endif
#ifndef JucePlugin_RTASDisableMultiMono
#define JucePlugin_RTASDisableMultiMono 0
#endif
#ifndef JucePlugin_AAXIdentifier
#define JucePlugin_AAXIdentifier com.klangfreund.HiReSam
#endif
#ifndef JucePlugin_AAXManufacturerCode
#define JucePlugin_AAXManufacturerCode JucePlugin_ManufacturerCode
#endif
#ifndef JucePlugin_AAXProductId
#define JucePlugin_AAXProductId JucePlugin_PluginCode
#endif
#ifndef JucePlugin_AAXCategory
#define JucePlugin_AAXCategory AAX_ePlugInCategory_Dynamics
#endif
#ifndef JucePlugin_AAXDisableBypass
#define JucePlugin_AAXDisableBypass 0
#endif
#ifndef JucePlugin_AAXDisableMultiMono
#define JucePlugin_AAXDisableMultiMono 0
#endif

#define JucePlugin_IsMidiEffect 0

#define JucePlugin_LV2URI "https://github.com/klangfreund/SpectrumAnalyser"
#define JucePlugin_LV2Category "AnalyzerPlugin"
#define JucePlugin_WantsLV2Latency 0
#define JucePlugin_WantsLV2Presets 0
#define JucePlugin_WantsLV2State 0
#define JucePlugin_WantsLV2TimePos 0


//==============================================================================

#endif

BIN
ports/HiReSam/source/Resources/Samuel_Gaehwiler.png View File

Before After
Width: 300  |  Height: 300  |  Size: 46KB

+ 127
- 0
ports/HiReSam/source/SamWithBubble.cpp View File

@@ -0,0 +1,127 @@
/*
==============================================================================
SamWithBubble.cpp
Created: 12 Jul 2014 9:17:15am
Author: Samuel Gaehwiler
==============================================================================
*/
#include "JuceHeader.h"
#include "SamWithBubble.h"
//==============================================================================
SamWithBubble::SamWithBubble()
: frequencyValue (var(0))
{
frequencyValue.addListener (this);
pitchLabel.setColour (Label::textColourId, Colours::lightgoldenrodyellow);
// pitchLabel.setColour (Label::backgroundColourId, Colours::red);
Font pitchLabelFont = Font (16.0f);
pitchLabel.setFont (pitchLabelFont);
pitchLabel.setJustificationType(Justification::horizontallyCentred);
addAndMakeVisible (&pitchLabel);
setInterceptsMouseClicks(false, false);
}
SamWithBubble::~SamWithBubble()
{
frequencyValue.removeListener (this);
}
void SamWithBubble::paint (Graphics& g)
{
// image
const int borderRight = 37;
const int imageHeight = 80;
const int imageWidth = 80;
g.drawImage(ImageCache::getFromMemory (BinaryData::Samuel_Gaehwiler_png, BinaryData::Samuel_Gaehwiler_pngSize), getWidth() - imageWidth - borderRight, getHeight() - imageHeight, imageWidth, imageHeight, 0, 0, 300, 300);
// bubble
g.setColour (Colours::black);
g.fillPath (bubblePath);
// g.setColour (Colour (0xff6f6f6f));
g.setColour (Colours::lightgoldenrodyellow);
g.strokePath (bubblePath, PathStrokeType (2.5f));
// bubble label and text
pitchLabel.setBounds (44, 23, getWidth() - 80, 20);
g.setColour (Colours::lightgoldenrodyellow);
g.setFont (12.0f);
Rectangle<int> bubblePathBounds = bubblePath.getBounds().getSmallestIntegerContainer();
bubblePathBounds.removeFromTop (50);
bubblePathBounds.removeFromLeft (20);
const int maximumNumberOfLines = 3;
const String bubbleText = String("Zviel Arbet? Plugin Idea?\n") + "078 624 68 64\n" + "sam@klangfreund.com";
g.drawFittedText(bubbleText, bubblePathBounds, Justification::horizontallyCentred, maximumNumberOfLines);
// g.setColour (Colours::black);
// g.setFont (15.0f);
// g.drawFittedText ("Zviel Arbet? HiRe sam@klangfreund.com!",
// 0, 0, getWidth(), getHeight(),
// Justification::centred, 1);
// g.fillAll (Colours::white); // clear the background
//
// g.setColour (Colours::grey);
// g.drawRect (getLocalBounds(), 1); // draw an outline around the component
//
// g.setColour (Colours::lightblue);
// g.setFont (14.0f);
// g.drawText ("SamWithBubble", getLocalBounds(),
// Justification::centred, true); // draw some placeholder text
}
void SamWithBubble::resized()
{
bubblePath.clear();
// bubblePath.startNewSubPath (136.0f, 80.0f);
// bubblePath.quadraticTo (176.0f, 24.0f, 328.0f, 32.0f);
// bubblePath.quadraticTo (472.0f, 40.0f, 472.0f, 104.0f);
// bubblePath.quadraticTo (472.0f, 192.0f, 232.0f, 176.0f);
// bubblePath.lineTo (184.0f, 216.0f);
// bubblePath.lineTo (200.0f, 168.0f);
// bubblePath.quadraticTo (96.0f, 136.0f, 136.0f, 80.0f);
// bubblePath.closeSubPath();
float mostRight = getWidth() - 10.0f;
float width = getWidth() - 30.0f;
float height = 130.0f;
bubblePath.startNewSubPath (mostRight - width, 0.292f * height);
bubblePath.quadraticTo (mostRight - 0.881f * width, 0.0f, mostRight - 0.429f * width, 0.042f * height);
bubblePath.quadraticTo (mostRight, 0.083f * height, mostRight, 0.416f * height);
bubblePath.quadraticTo (mostRight, 0.875f * height, mostRight - 0.69f * width, 0.792f * height);
bubblePath.lineTo (mostRight - 0.635f * width, height); // the tip of the bubble
bubblePath.lineTo (mostRight - 0.810f * width, 0.75f * height);
bubblePath.quadraticTo (mostRight - 1.119f * width, 0.635f * height, mostRight - width, 0.292f * height);
bubblePath.closeSubPath();
}
void SamWithBubble::referToFrequencyValue (const Value & valueToReferTo)
{
frequencyValue.referTo(valueToReferTo);
// pitchLabel.getTextValue().referTo(valueToReferTo);
}
void SamWithBubble::valueChanged (Value & value)
{
if (value.refersToSameSourceAs(frequencyValue))
{
const int frequency = frequencyValue.getValue();
String pitchString = frequencyValue.toString();
pitchString << " Hz";
if (frequency > 7)
{
// TO DAVE: At 7 Hz, the function below returns the String "-1" (without a letter in front of it).
pitchString << " (" << drow::Pitch::fromFrequency (frequency).getMidiNoteName() << ")";
}
pitchLabel.setText(pitchString, NotificationType::dontSendNotification);
}
}

+ 41
- 0
ports/HiReSam/source/SamWithBubble.h View File

@@ -0,0 +1,41 @@
/*
==============================================================================
SamWithBubble.h
Created: 12 Jul 2014 9:17:15am
Author: Samuel Gaehwiler
==============================================================================
*/
#ifndef SAM_WITH_BUBBLE_H_INCLUDED
#define SAM_WITH_BUBBLE_H_INCLUDED
#include "SpectrumAnalyserHeader.h"
//==============================================================================
/*
*/
class SamWithBubble : public Component,
public Value::Listener
{
public:
SamWithBubble();
~SamWithBubble();
void paint (Graphics&);
void resized();
void referToFrequencyValue (const Value & valueToReferTo);
virtual void valueChanged (Value & value) override;
private:
Path bubblePath;
Value frequencyValue;
Label pitchLabel;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SamWithBubble)
};
#endif // SAM_WITH_BUBBLE_H_INCLUDED

+ 201
- 0
ports/HiReSam/source/SpectrumAnalyserAudioProcessor.cpp View File

@@ -0,0 +1,201 @@
/*
==============================================================================
SpectrumAnalyserAudioProcessor.cpp
Created: 10 Jun 2014 8:19:00pm
Author: Samuel Gaehwiler
==============================================================================
*/
#include "SpectrumAnalyserAudioProcessor.h"
#include "SpectrumAnalyserAudioProcessorEditor.h"
//==============================================================================
SpectrumAnalyserAudioProcessor::SpectrumAnalyserAudioProcessor()
: sampleRate {44100.0},
renderThread("FFT Render Thread"),
spectrumProcessor(11) // FFT Size of 2^11 = 2048
{
renderThread.addTimeSliceClient (&spectrumProcessor);
renderThread.startThread (3);
}
SpectrumAnalyserAudioProcessor::~SpectrumAnalyserAudioProcessor()
{
renderThread.removeTimeSliceClient (&spectrumProcessor);
renderThread.stopThread (500);
}
//==============================================================================
const String SpectrumAnalyserAudioProcessor::getName() const
{
return JucePlugin_Name;
}
int SpectrumAnalyserAudioProcessor::getNumParameters()
{
return 0;
}
float SpectrumAnalyserAudioProcessor::getParameter (int index)
{
return 0.0f;
}
void SpectrumAnalyserAudioProcessor::setParameter (int index, float newValue)
{
}
const String SpectrumAnalyserAudioProcessor::getParameterName (int index)
{
return String::empty;
}
const String SpectrumAnalyserAudioProcessor::getParameterText (int index)
{
return String::empty;
}
const String SpectrumAnalyserAudioProcessor::getInputChannelName (int channelIndex) const
{
return String (channelIndex + 1);
}
const String SpectrumAnalyserAudioProcessor::getOutputChannelName (int channelIndex) const
{
return String (channelIndex + 1);
}
bool SpectrumAnalyserAudioProcessor::isInputChannelStereoPair (int index) const
{
return true;
}
bool SpectrumAnalyserAudioProcessor::isOutputChannelStereoPair (int index) const
{
return true;
}
bool SpectrumAnalyserAudioProcessor::acceptsMidi() const
{
#if JucePlugin_WantsMidiInput
return true;
#else
return false;
#endif
}
bool SpectrumAnalyserAudioProcessor::producesMidi() const
{
#if JucePlugin_ProducesMidiOutput
return true;
#else
return false;
#endif
}
bool SpectrumAnalyserAudioProcessor::silenceInProducesSilenceOut() const
{
return true;
}
double SpectrumAnalyserAudioProcessor::getTailLengthSeconds() const
{
return 0.0;
}
int SpectrumAnalyserAudioProcessor::getNumPrograms()
{
return 0;
}
int SpectrumAnalyserAudioProcessor::getCurrentProgram()
{
return 0;
}
void SpectrumAnalyserAudioProcessor::setCurrentProgram (int index)
{
}
const String SpectrumAnalyserAudioProcessor::getProgramName (int index)
{
return String::empty;
}
void SpectrumAnalyserAudioProcessor::changeProgramName (int index, const String& newName)
{
}
//==============================================================================
void SpectrumAnalyserAudioProcessor::prepareToPlay (double newSampleRate, int samplesPerBlock)
{
sampleRate = newSampleRate;
spectrumProcessor.setSampleRate (newSampleRate);
}
void SpectrumAnalyserAudioProcessor::releaseResources()
{
// When playback stops, you can use this as an opportunity to free up any
// spare memory, etc.
}
void SpectrumAnalyserAudioProcessor::processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages)
{
for (int channel = 0; channel < getTotalNumInputChannels(); ++channel)
{
float* channelData = buffer.getWritePointer (channel);
// Only proceed if the editor is visible.
if (getActiveEditor() != nullptr
&& channel == 0)
{
spectrumProcessor.copySamples(channelData, buffer.getNumSamples());
}
}
// In case we have more outputs than inputs, we'll clear any output
// channels that didn't contain input data, (because these aren't
// guaranteed to be empty - they may contain garbage).
for (int i = getTotalNumInputChannels(); i < getTotalNumOutputChannels(); ++i)
{
buffer.clear (i, 0, buffer.getNumSamples());
}
}
//==============================================================================
bool SpectrumAnalyserAudioProcessor::hasEditor() const
{
return true; // (change this to false if you choose to not supply an editor)
}
AudioProcessorEditor* SpectrumAnalyserAudioProcessor::createEditor()
{
return new SpectrumAnalyserAudioProcessorEditor (this,
spectrumProcessor.getRepaintViewerValue(),
spectrumProcessor.getMagnitudesBuffer(),
spectrumProcessor.getDetectedFrequency());
}
//==============================================================================
void SpectrumAnalyserAudioProcessor::getStateInformation (MemoryBlock& destData)
{
// You should use this method to store your parameters in the memory block.
// You could do that either as raw data, or use the XML or ValueTree classes
// as intermediaries to make it easy to save and load complex data.
}
void SpectrumAnalyserAudioProcessor::setStateInformation (const void* data, int sizeInBytes)
{
// You should use this method to restore your parameters from this memory block,
// whose contents will have been created by the getStateInformation() call.
}
//==============================================================================
// This creates new instances of the plugin..
AudioProcessor* JUCE_CALLTYPE createPluginFilter()
{
return new SpectrumAnalyserAudioProcessor();
}

+ 78
- 0
ports/HiReSam/source/SpectrumAnalyserAudioProcessor.h View File

@@ -0,0 +1,78 @@
/*
==============================================================================
SpectrumAnalyserAudioProcessor.h
Created: 10 Jun 2014 8:19:00pm
Author: Samuel Gaehwiler
==============================================================================
*/
#ifndef SPECTRUM_ANALYSER_AUDIO_PROCESSOR_H_INCLUDED
#define SPECTRUM_ANALYSER_AUDIO_PROCESSOR_H_INCLUDED
#include "SpectrumAnalyserHeader.h"
#include "SpectrumProcessor.h"
//==============================================================================
/**
*/
class SpectrumAnalyserAudioProcessor : public AudioProcessor
{
public:
//==============================================================================
SpectrumAnalyserAudioProcessor();
~SpectrumAnalyserAudioProcessor();
//==============================================================================
void prepareToPlay (double sampleRate, int samplesPerBlock);
void releaseResources();
void processBlock (AudioSampleBuffer& buffer, MidiBuffer& midiMessages);
//==============================================================================
AudioProcessorEditor* createEditor();
bool hasEditor() const;
//==============================================================================
const String getName() const;
int getNumParameters();
float getParameter (int index);
void setParameter (int index, float newValue);
const String getParameterName (int index);
const String getParameterText (int index);
const String getInputChannelName (int channelIndex) const;
const String getOutputChannelName (int channelIndex) const;
bool isInputChannelStereoPair (int index) const;
bool isOutputChannelStereoPair (int index) const;
bool acceptsMidi() const;
bool producesMidi() const;
bool silenceInProducesSilenceOut() const;
double getTailLengthSeconds() const;
//==============================================================================
int getNumPrograms();
int getCurrentProgram();
void setCurrentProgram (int index);
const String getProgramName (int index);
void changeProgramName (int index, const String& newName);
//==============================================================================
void getStateInformation (MemoryBlock& destData);
void setStateInformation (const void* data, int sizeInBytes);
Value sampleRate;
private:
TimeSliceThread renderThread;
SpectrumProcessor spectrumProcessor;
//==============================================================================
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SpectrumAnalyserAudioProcessor)
};
#endif // SPECTRUM_ANALYSER_AUDIO_PROCESSOR_H_INCLUDED

+ 87
- 0
ports/HiReSam/source/SpectrumAnalyserAudioProcessorEditor.cpp View File

@@ -0,0 +1,87 @@
/*
==============================================================================
SpectrumAnalyserAudioProcessorEditor.cpp
Created: 10 Jun 2014 8:19:00pm
Author: Samuel Gaehwiler
==============================================================================
*/
#include "SpectrumAnalyserAudioProcessor.h"
#include "SpectrumAnalyserAudioProcessorEditor.h"
//==============================================================================
SpectrumAnalyserAudioProcessorEditor::SpectrumAnalyserAudioProcessorEditor (SpectrumAnalyserAudioProcessor* ownerFilter,
Value& repaintSpectrumViewer,
drow::Buffer& spectrumMagnitudeBuffer,
Value& detectedFrequency)
: AudioProcessorEditor (ownerFilter),
spectrumViewer (repaintSpectrumViewer, spectrumMagnitudeBuffer, detectedFrequency)
{
sampleRate.addListener (this);
// The sampleRate has already been set in the SpectrumAnalyserAudioProcessor
// before the creation of the SpectrumAnalyserAudioProcessorEditor.
// Because of this it is important to have the referTo call after the
// addListener. Only in this order the valueChanged member function
// will be called implicitly.
sampleRate.referTo (getProcessor()->sampleRate);
header.setText("High Resolution Spectrum Analyse Meter", dontSendNotification);
Font headerFont = Font (18.0f);
header.setFont (headerFont);
header.setJustificationType(Justification::centred);
header.setColour (Label::textColourId, Colours::lightgoldenrodyellow);
header.setColour (Label::backgroundColourId, Colours::black);
samWithBubble.referToFrequencyValue (spectrumViewer.getFrequencyToDisplay());
addAndMakeVisible (&header);
addAndMakeVisible (&spectrumViewer);
addAndMakeVisible (&samWithBubble);
// Add the triangular resizer component for the bottom-right of the UI.
resizeLimits.setMinimumSize(360, 320);
addAndMakeVisible (resizer = new ResizableCornerComponent (this, &resizeLimits));
// The plugin's initial editor size.
setSize (1000, 500);
}
SpectrumAnalyserAudioProcessorEditor::~SpectrumAnalyserAudioProcessorEditor()
{
}
//==============================================================================
void SpectrumAnalyserAudioProcessorEditor::paint (Graphics& g)
{
g.fillAll (Colours::black);
}
void SpectrumAnalyserAudioProcessorEditor::resized()
{
header.setBounds(0, 0, getWidth(), 24);
spectrumViewer.setBounds (0, header.getHeight(), getWidth(), getHeight() - header.getHeight());
const int widthForSamWithBubble = 190;
const int maxHeight = getHeight() - header.getHeight();
const int height = jmin (190, maxHeight);
samWithBubble.setBounds(getWidth() - widthForSamWithBubble, 0, widthForSamWithBubble, height);
resizer->setBounds (getWidth() - 16, getHeight() - 16, 16, 16);
}
void SpectrumAnalyserAudioProcessorEditor::valueChanged (Value & value)
{
if (value.refersToSameSourceAs (sampleRate))
{
spectrumViewer.setSampleRate (sampleRate.getValue());
}
}
SpectrumAnalyserAudioProcessor* SpectrumAnalyserAudioProcessorEditor::getProcessor() const
{
return static_cast <SpectrumAnalyserAudioProcessor*> (getAudioProcessor());
}

+ 56
- 0
ports/HiReSam/source/SpectrumAnalyserAudioProcessorEditor.h View File

@@ -0,0 +1,56 @@
/*
==============================================================================
SpectrumAnalyserAudioProcessorEditor.h
Created: 10 Jun 2014 8:19:00pm
Author: Samuel Gaehwiler
==============================================================================
*/
#ifndef SPECTRUM_ANALYSER_AUDIO_PROCESSOR_EDITOR_H_INCLUDED
#define SPECTRUM_ANALYSER_AUDIO_PROCESSOR_EDITOR_H_INCLUDED
#include "SpectrumAnalyserHeader.h"
#include "SpectrumAnalyserAudioProcessor.h"
#include "SamWithBubble.h"
#include "SpectrumViewer.h"
//==============================================================================
/**
*/
class SpectrumAnalyserAudioProcessorEditor : public AudioProcessorEditor,
public Value::Listener
{
public:
SpectrumAnalyserAudioProcessorEditor (SpectrumAnalyserAudioProcessor* ownerFilter,
Value& repaintSpectrumViewer,
drow::Buffer& spectrumMagnitudeBuffer,
Value& detectedFrequency);
~SpectrumAnalyserAudioProcessorEditor();
//==============================================================================
// This is just a standard Juce paint method...
void paint (Graphics& g);
void resized();
/** The value listener method. */
void valueChanged (Value & value);
private:
SpectrumAnalyserAudioProcessor* getProcessor() const;
SpectrumViewer spectrumViewer;
Value sampleRate;
Label header;
SamWithBubble samWithBubble;
ScopedPointer<ResizableCornerComponent> resizer;
/** Specifies the maximum size of the window. */
ComponentBoundsConstrainer resizeLimits;
};
#endif // SPECTRUM_ANALYSER_AUDIO_PROCESSOR_EDITOR_H_INCLUDED

+ 45
- 0
ports/HiReSam/source/SpectrumAnalyserHeader.h View File

@@ -0,0 +1,45 @@
/*
==============================================================================
SpectrumAnalyserHeader.h
Created: 10 Jun 2014 8:19:00pm
Author: Samuel Gaehwiler
==============================================================================
*/
#ifndef SPECTRUM_ANALYSER_HEADER_H_INCLUDED
#define SPECTRUM_ANALYSER_HEADER_H_INCLUDED
//==============================================================================
#include "JuceHeader.h"
//==============================================================================
// Helper Functions
// ----------------
/**
* @return a value between 0 and 1.
*/
inline float logTransformInRange0to1 (const float between0and1)
{
const float minimum = 1.0f;
const float maximum = JUCE_LIVE_CONSTANT (1000.0f);
// return drow::logBase10Scale (frequency, 1.0f, maximum);
return log10 (minimum + ((maximum - minimum) * between0and1)) / log10 (maximum);
}
/**
* @return a value between 0 and 1.
*/
inline float expTransformInRange0to1 (const float between0and1)
{
const float minimum = 1.0f;
const float maximum = JUCE_LIVE_CONSTANT (1000.0f);
return (pow(maximum, between0and1) - minimum) / (maximum - minimum);
}
#endif // SPECTRUM_ANALYSER_HEADER_H_INCLUDED

+ 105
- 0
ports/HiReSam/source/SpectrumProcessor.cpp View File

@@ -0,0 +1,105 @@
/*
==============================================================================
SpectroscopeProcessor.cpp
Created: 27 Jul 2014 2:34:48pm
Author: Samuel Gaehwiler
Heavily based on the dRowAudio Spectroscope class by David Rowland.
==============================================================================
*/
#include "SpectrumProcessor.h"
SpectrumProcessor::SpectrumProcessor (int fftSizeLog2)
: fftEngine {fftSizeLog2},
tempBlock (fftEngine.getFFTSize()),
// TODO: Make the circularBuffer dependant of the buffer size of the incoming audio stream.
circularBuffer (jmax (fftEngine.getMagnitudesBuffer().getSize() * 4, 2048)),
needToProcess {false},
detectedFrequency {var(0)},
repaintViewer (var(false))
{
fftEngine.setWindowType (drow::Window::Hann);
circularBuffer.reset();
}
SpectrumProcessor::~SpectrumProcessor()
{
}
void SpectrumProcessor::setSampleRate (double newSampleRate)
{
sampleRate = newSampleRate;
}
void SpectrumProcessor::copySamples (const float* samples, int numSamples)
{
circularBuffer.writeSamples (samples, numSamples);
needToProcess = true;
}
int SpectrumProcessor::useTimeSlice()
{
if (needToProcess)
{
process();
needToProcess = false;
}
const int sleepTime = 5; // [ms]
return sleepTime;
}
void SpectrumProcessor::process()
{
jassert (circularBuffer.getNumFree() != 0); // buffer is too small!
while (circularBuffer.getNumAvailable() > fftEngine.getFFTSize())
{
circularBuffer.readSamples (tempBlock.getData(), fftEngine.getFFTSize());
fftEngine.performFFT (tempBlock);
fftEngine.updateMagnitudesIfBigger();
// find the peak in the FFT.
const int nrOfBins = fftEngine.getMagnitudesBuffer().getSize();
if (nrOfBins > 0)
{
float* magnitudeBuffer = fftEngine.getMagnitudesBuffer().getData();
int peakIndex = 0;
float peakValue = magnitudeBuffer[0];
for (int i = 1; i < nrOfBins; ++i)
{
if (magnitudeBuffer[i] > peakValue)
{
peakIndex = i;
peakValue = magnitudeBuffer[i];
}
}
detectedFrequency = (float)peakIndex / nrOfBins * sampleRate / 2;
}
repaintViewer = true;
}
}
Value& SpectrumProcessor::getRepaintViewerValue()
{
return repaintViewer;
}
drow::Buffer& SpectrumProcessor::getMagnitudesBuffer()
{
return fftEngine.getMagnitudesBuffer();
}
Value& SpectrumProcessor::getDetectedFrequency()
{
return detectedFrequency;
}

+ 76
- 0
ports/HiReSam/source/SpectrumProcessor.h View File

@@ -0,0 +1,76 @@
/*
==============================================================================
SpectroscopeProcessor.h
Created: 27 Jul 2014 2:34:48pm
Author: Samuel Gaehwiler
Heavily based on the dRowAudio Spectroscope class by David Rowland.
==============================================================================
*/
#ifndef SPECTRUM_PROCESSOR_H_INCLUDED
#define SPECTRUM_PROCESSOR_H_INCLUDED
#include "SpectrumAnalyserHeader.h"
#if JUCE_MAC || JUCE_IOS || DROWAUDIO_USE_FFTREAL
//==============================================================================
/** Provides the audio processing part for a spectrum analyser.
Register it with a TimeSliceThread, make sure its running and then continually
call the copySamples() method. The FFT itself will be performed on a background
thread.
*/
class SpectrumProcessor : public TimeSliceClient
{
public:
//==============================================================================
/** Creates a spectroscope with a given FFT size.
Note that the fft size given here is log2 of the FFT size so for example,
a 1024 size fft use 10.
*/
SpectrumProcessor (int fftSizeLog2);
/** Destructor. */
~SpectrumProcessor();
void setSampleRate (double sampleRate);
/** Copy a set of samples, ready to be processed.
Your audio callback should continually call this method to pass it its
audio data. When the scope has enough samples to perform an fft it will do
so on a background thread.
*/
void copySamples (const float* samples, int numSamples);
/** @internal */
virtual int useTimeSlice() override;
void process();
Value& getRepaintViewerValue();
Value& getDetectedFrequency();
drow::Buffer& getMagnitudesBuffer();
private:
drow::FFTEngine fftEngine;
HeapBlock<float> tempBlock;
drow::FifoBuffer<float> circularBuffer;
bool needToProcess;
double sampleRate;
Value detectedFrequency;
Value repaintViewer;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SpectrumProcessor);
};
#endif
#endif // SPECTRUM_PROCESSOR_H_INCLUDED

+ 551
- 0
ports/HiReSam/source/SpectrumViewer.cpp View File

@@ -0,0 +1,551 @@
/*
==============================================================================
SpectroscopeViewer.cpp
Created: 27 Jul 2014 2:34:48pm
Author: Samuel Gaehwiler
Heavily based on the dRowAudio Spectroscope class by David Rowland.
==============================================================================
*/
#include "SpectrumViewer.h"
#if JUCE_MAC || JUCE_IOS || DROWAUDIO_USE_FFTREAL
// static member initialisation
// ============================
const int SpectrumViewer::frequenciesToPlot[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 20000};
const int SpectrumViewer::numberOfFrequenciesToPlot = 29;
//==============================================================================