summaryrefslogtreecommitdiff
path: root/tool/mbed/mbed-sdk/libraries/tests
diff options
context:
space:
mode:
authorJun Wako <wakojun@gmail.com>2015-04-24 16:26:14 +0900
committerJun Wako <wakojun@gmail.com>2015-04-24 16:26:14 +0900
commit1fe4406f374291ab2e86e95a97341fd9c475fcb8 (patch)
tree1be0e16b4b07b5a31ea97ec50a9eb13a288c3d27 /tool/mbed/mbed-sdk/libraries/tests
parenta20ef7052c6e937d2f7672dd59456e55a5c08296 (diff)
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
b9e0ea0 Merge commit '7fa9d8bdea3773d1195b04d98fcf27cf48ddd81d' as 'tool/mbed/mbed-sdk' 7fa9d8b Squashed 'tool/mbed/mbed-sdk/' content from commit 7c21ce5 git-subtree-dir: tmk_core git-subtree-split: b9e0ea08cb940de20b3610ecdda18e9d8cd7c552
Diffstat (limited to 'tool/mbed/mbed-sdk/libraries/tests')
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/KL25Z/lptmr/main.cpp48
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/KL25Z/pit/main.cpp48
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/KL25Z/rtc/main.cpp72
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/benchmarks/all/main.cpp19
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/benchmarks/cenv/main.cpp8
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/benchmarks/float_math/main.cpp8
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/benchmarks/mbed/main.cpp16
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/benchmarks/printf/main.cpp5
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/dsp/cmsis/fir_f32/data.cpp94
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/dsp/cmsis/fir_f32/main.cpp65
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/dsp/mbed/fir_f32/main.cpp53
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/export/mcb1700/main.cpp24
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/libs/SPIHalfDuplex/SPIHalfDuplex.cpp43
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/libs/SPIHalfDuplex/SPIHalfDuplex.h85
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.cpp52
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.h82
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/analog/main.cpp82
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/analog_in/main.cpp58
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/analog_pot/main.cpp29
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/basic/main.cpp9
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/blinky/main.cpp12
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/bus/main.cpp19
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/bus_out/main.cpp82
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/call_before_main/main.cpp21
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/can/main.cpp53
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/can_interrupt/main.cpp60
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/cpp/main.cpp86
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/cstring/main.cpp100
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/detect/main.cpp15
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/dev_null/main.cpp30
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/digitalin_digitalout/main.cpp74
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/digitalinout/main.cpp95
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/dir/main.cpp78
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/dir_sd/main.cpp119
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/div/main.cpp44
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/echo/main.cpp26
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/echo_flow_control/main.cpp34
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/env/test_env.cpp92
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/env/test_env.h74
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/file/main.cpp78
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextDisplay.cpp57
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextDisplay.h52
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextLCD.cpp98
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextLCD.h30
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/main.cpp30
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/fs/main.cpp32
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/heap_and_stack/main.cpp76
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/hello/main.cpp13
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_MMA8451Q/main.cpp56
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_SRF08/main.cpp15
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_TMP102/main.cpp51
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_eeprom/main.cpp155
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_eeprom_line/main.cpp147
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_master/main.cpp45
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_master_slave/main.cpp60
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_mma7660/main.cpp26
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_slave/main.cpp36
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/interrupt_chaining/main.cpp111
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/interruptin/main.cpp146
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/interruptin_2/main.cpp71
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/modserial/main.cpp115
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/pin_toggling/main.cpp10
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/portinout/main.cpp139
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/portout/main.cpp47
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/portout_portin/main.cpp135
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/pwm/main.cpp174
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/pwm_led/pwm.cpp54
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/reset/main.cpp17
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/rpc/main.cpp67
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/rtc/main.cpp20
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/sd/main.cpp112
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_fatfs/main.cpp161
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_fhandle/main.cpp156
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_stdio/main.cpp156
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/semihost/main.cpp38
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/serial_interrupt/main.cpp26
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/serial_interrupt_2/main.cpp42
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/sleep/main.cpp27
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/sleep_timeout/main.cpp28
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spi/main.cpp16
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spi_ADXL345/main.cpp62
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spi_master/main.cpp38
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spi_slave/main.cpp29
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi1/main.cpp107
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi1/spifi_rom_api.h165
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/main.cpp100
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/spifi_rom_api.h165
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage01.c2167
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage02.c2167
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage03.c2167
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage04.c2167
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage05.c2167
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage06.c2167
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage07.c2167
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage08.c2167
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage09.c2167
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage10.c2167
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage11.c2168
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage12.c2168
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage13.c2168
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage14.c2168
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage15.c2168
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/stdio/main.cpp40
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/stdio_benchmark/main.cpp35
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/stl/main.cpp121
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/ticker/main.cpp49
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_2/main.cpp38
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_3/main.cpp43
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_mfun/main.cpp41
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/time_us/main.cpp30
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/timeout/main.cpp42
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/tsi/main.cpp14
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/mbed/vtor_reloc/main.cpp76
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/HTTPClient.cpp649
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/HTTPClient.h159
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/IHTTPData.h96
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPMap.cpp200
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPMap.h71
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPText.cpp104
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPText.h72
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/httptest.cpp58
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/httptest.h9
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/ubloxusb/main.cpp35
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/common/smstest.cpp41
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/common/smstest.h9
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/ubloxusb/main.cpp21
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_client/main.cpp59
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_client_loop/main.cpp78
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_server/main.cpp47
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_client/main.cpp82
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_link_layer/main.cpp151
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_server/main.cpp37
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/helloworld/broadcast_receive/main.cpp23
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/helloworld/broadcast_send/main.cpp25
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/helloworld/multicast_receive/main.cpp27
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/helloworld/multicast_send/main.cpp24
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/helloworld/tcpclient/main.cpp85
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/helloworld/udpclient/main.cpp56
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/HTTPClient.cpp621
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/HTTPClient.h138
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/IHTTPData.h86
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPMap.cpp196
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPMap.h69
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPText.cpp94
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPText.h68
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/main.cpp67
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.cpp163
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.h101
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/main.cpp39
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/peripherals/ADXL345/ADXL345.cpp405
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/peripherals/ADXL345/ADXL345.h537
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/peripherals/AX12/AX12.cpp534
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/peripherals/AX12/AX12.h190
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA7660/MMA7660.cpp193
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA7660/MMA7660.h207
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA8451Q/MMA8451Q.cpp81
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA8451Q/MMA8451Q.h108
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/peripherals/SRF08/SRF08.cpp67
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/peripherals/SRF08/SRF08.h60
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/peripherals/TMP102/TMP102.cpp23
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/peripherals/TMP102/TMP102.h39
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/peripherals/TSI/TSISensor.cpp231
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/peripherals/TSI/TSISensor.h73
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/basic/main.cpp22
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/isr/main.cpp34
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mail/main.cpp43
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mutex/main.cpp33
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/queue/main.cpp48
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/semaphore/main.cpp29
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/signals/main.cpp23
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/timer/main.cpp29
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/basic/main.cpp44
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/file/main.cpp100
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/isr/main.cpp69
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/mail/main.cpp75
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/mutex/main.cpp87
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/queue/main.cpp77
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/semaphore/main.cpp75
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/signals/main.cpp51
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/timer/main.cpp42
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/usb/device/audio/main.cpp40
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/usb/device/basic/main.cpp28
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/usb/device/keyboard/main.cpp21
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/usb/device/midi/main.cpp73
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/usb/device/mouse_keyboard/main.cpp22
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/usb/device/raw_hid/main.cpp26
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/usb/device/serial/main.cpp18
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/utest/basic/basic.cpp13
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/utest/bus/busout_ut.cpp87
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/utest/general/general.cpp90
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/utest/semihost_fs/semihost_fs.cpp63
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.cpp29
-rw-r--r--tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.h4
193 files changed, 46647 insertions, 0 deletions
diff --git a/tool/mbed/mbed-sdk/libraries/tests/KL25Z/lptmr/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/KL25Z/lptmr/main.cpp
new file mode 100644
index 0000000000..170fc46987
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/KL25Z/lptmr/main.cpp
@@ -0,0 +1,48 @@
+#include "mbed.h"
+
+volatile unsigned int ticks = 0;
+
+DigitalOut led(LED_BLUE);
+
+extern "C" void lptmr_isr(void) {
+ // write 1 to TCF to clear the LPT timer compare flag
+ LPTMR0->CSR |= LPTMR_CSR_TCF_MASK;
+
+ ticks++;
+}
+
+int main() {
+ /* Clock the timer */
+ SIM->SCGC5 |= SIM_SCGC5_LPTMR_MASK;
+
+ /* Reset */
+ LPTMR0->CSR = 0;
+
+ /* Compare value */
+ LPTMR0->CMR = 1000;
+
+ /* Enable interrupt */
+ LPTMR0->CSR |= LPTMR_CSR_TIE_MASK;
+
+ /* Set interrupt handler */
+ NVIC_SetVector(LPTimer_IRQn, (uint32_t)lptmr_isr);
+ NVIC_EnableIRQ(LPTimer_IRQn);
+
+ /* select LPO for RTC and LPTMR */
+ LPTMR0->PSR = LPTMR_PSR_PCS(3); // ERCLK32K -> 8MHz
+ LPTMR0->PSR |= LPTMR_PSR_PRESCALE(2); // divide by 8
+
+ /* Start the timer */
+ LPTMR0->CSR |= LPTMR_CSR_TEN_MASK;
+
+ led = 0;
+ while (true) {
+ wait(1);
+ led = 1;
+ printf("%d\n", ticks);
+
+ wait(1);
+ led = 0;
+ printf("%d\n", ticks);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/KL25Z/pit/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/KL25Z/pit/main.cpp
new file mode 100644
index 0000000000..3b13af2730
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/KL25Z/pit/main.cpp
@@ -0,0 +1,48 @@
+#include "mbed.h"
+
+extern "C" {
+volatile uint32_t msTicks;
+
+void SysTick_Handler(void) {
+ msTicks++;
+}
+
+void Delay(uint32_t dlyTicks) {
+ uint32_t curTicks;
+
+ curTicks = msTicks;
+ while ((msTicks - curTicks) < dlyTicks);
+}
+}
+
+int main() {
+ SysTick_Config(SystemCoreClock / 1000);
+
+ SIM->SCGC6 |= SIM_SCGC6_PIT_MASK; // Clock PIT
+ PIT->MCR = 0; // Enable PIT
+
+ // Timer 1
+ PIT->CHANNEL[1].LDVAL = 0xFFFFFFFF;
+ PIT->CHANNEL[1].TCTRL = 0x0; // Disable Interrupts
+ PIT->CHANNEL[1].TCTRL |= PIT_TCTRL_CHN_MASK; // Chain to timer 0
+ PIT->CHANNEL[1].TCTRL |= PIT_TCTRL_TEN_MASK; // Start timer 1
+
+ // Timer 2
+ PIT->CHANNEL[0].LDVAL = 0xFFFFFFFF;
+ PIT->CHANNEL[0].TCTRL = PIT_TCTRL_TEN_MASK; // Start timer 0, disable interrupts
+
+ DigitalOut led(LED_BLUE);
+ while (true) {
+ Delay(1000);
+ led = !led;
+
+ uint64_t ticks = (uint64_t)PIT->LTMR64H << 32;
+ ticks |= (uint64_t)PIT->LTMR64L;
+ printf("ticks: 0x%x%x\n", (uint32_t)(ticks>>32), (uint32_t)(ticks & 0xFFFFFFFF));
+
+ ticks = (~ticks) / 24;
+ uint32_t us = (uint32_t)(0xFFFFFFFF & ticks);
+
+ printf("us : 0x%x\n", us);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/KL25Z/rtc/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/KL25Z/rtc/main.cpp
new file mode 100644
index 0000000000..31d7e64d26
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/KL25Z/rtc/main.cpp
@@ -0,0 +1,72 @@
+#include "mbed.h"
+
+DigitalOut status_led(LED_BLUE);
+DigitalOut error_led(LED_RED);
+
+extern "C" void RTC_IRQHandler(void) {
+ error_led = 0;
+}
+
+extern "C" void RTC_Seconds_IRQHandler(void) {
+ error_led = 0;
+}
+
+extern "C" void HardFault_Handler(void) {
+ error_led = 0;
+}
+
+extern "C" void NMI_Handler_Handler(void) {
+ error_led = 0;
+}
+
+void rtc_init(void) {
+ // enable the clock to SRTC module register space
+ SIM->SCGC6 |= SIM_SCGC6_RTC_MASK;
+ SIM->SOPT1 = (SIM->SOPT1 & ~SIM_SOPT1_OSC32KSEL_MASK) | SIM_SOPT1_OSC32KSEL(0);
+
+ // disable interrupts
+ NVIC_DisableIRQ(RTC_Seconds_IRQn);
+ NVIC_DisableIRQ(RTC_IRQn);
+
+ // Reset
+ RTC->CR = RTC_CR_SWR_MASK;
+ RTC->CR &= ~RTC_CR_SWR_MASK;
+
+ // Allow write
+ RTC->CR = RTC_CR_UM_MASK | RTC_CR_SUP_MASK;
+
+ NVIC_EnableIRQ(RTC_Seconds_IRQn);
+ NVIC_EnableIRQ(RTC_Seconds_IRQn);
+
+ printf("LR: 0x%x\n", RTC->LR);
+ printf("CR: 0x%x\n", RTC->CR);
+ wait(1);
+ if (RTC->SR & RTC_SR_TIF_MASK){
+ RTC->TSR = 0;
+ }
+ RTC->TCR = 0;
+
+ // After setting this bit, wait the oscillator startup time before enabling
+ // the time counter to allow the clock time to stabilize
+ RTC->CR |= RTC_CR_OSCE_MASK;
+ for (volatile int i=0; i<0x600000; i++);
+
+ //enable seconds interrupts
+ RTC->IER |= RTC_IER_TSIE_MASK;
+
+ // enable time counter
+ RTC->SR |= RTC_SR_TCE_MASK;
+
+
+}
+
+int main() {
+ error_led = 1;
+ rtc_init();
+
+ while (true) {
+ wait(1);
+ status_led = !status_led;
+ printf("%u\n", RTC->TSR);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/benchmarks/all/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/all/main.cpp
new file mode 100644
index 0000000000..a3794f1005
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/all/main.cpp
@@ -0,0 +1,19 @@
+#include "mbed.h"
+
+DigitalOut out(p5);
+#if defined(TARGET_LPC1114)
+AnalogIn in(p20);
+#else
+AnalogIn in(p19);
+#endif
+
+volatile float w, x, y, z;
+int main() {
+ while(1) {
+ z = x * y / w;
+ printf("Hello World %d %f\n", out.read(), z);
+ if(in > 0.5) {
+ out = !out;
+ }
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/benchmarks/cenv/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/cenv/main.cpp
new file mode 100644
index 0000000000..293cf4366d
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/cenv/main.cpp
@@ -0,0 +1,8 @@
+#include "mbed.h"
+
+volatile int x, y, z;
+int main() {
+ while(1) {
+ z = x * y;
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/benchmarks/float_math/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/float_math/main.cpp
new file mode 100644
index 0000000000..b7f5566398
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/float_math/main.cpp
@@ -0,0 +1,8 @@
+#include "mbed.h"
+
+volatile float w, x, y, z;
+int main() {
+ while (1) {
+ z = x * y / w;
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/benchmarks/mbed/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/mbed/main.cpp
new file mode 100644
index 0000000000..aa99784a3b
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/mbed/main.cpp
@@ -0,0 +1,16 @@
+#include "mbed.h"
+
+DigitalOut out(p5);
+#if defined(TARGET_LPC1114)
+AnalogIn in(p20);
+#else
+AnalogIn in(p19);
+#endif
+
+int main() {
+ while(1) {
+ if(in > 0.5) {
+ out = !out;
+ }
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/benchmarks/printf/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/printf/main.cpp
new file mode 100644
index 0000000000..5121426a19
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/benchmarks/printf/main.cpp
@@ -0,0 +1,5 @@
+#include "mbed.h"
+
+int main() {
+ printf("Hello World!");
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/dsp/cmsis/fir_f32/data.cpp b/tool/mbed/mbed-sdk/libraries/tests/dsp/cmsis/fir_f32/data.cpp
new file mode 100644
index 0000000000..d946b36bc1
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/dsp/cmsis/fir_f32/data.cpp
@@ -0,0 +1,94 @@
+#include "arm_math.h"
+
+/* ----------------------------------------------------------------------
+** Test input signal contains 1000Hz + 15000 Hz
+** ------------------------------------------------------------------- */
+
+float32_t testInput_f32_1kHz_15kHz[320] =
+{
++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f,
++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f,
++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f,
+-0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f,
+-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f,
+-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f,
++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f,
++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f,
++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f,
++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f,
+-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f,
+-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f,
++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f,
++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f,
++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f,
++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f,
+-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f,
+-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f,
+-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f,
++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f,
++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f,
+-0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f,
+-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f,
+-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f,
++0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f,
++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f,
++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f,
++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f,
+-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f,
+-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f,
+-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f,
++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f,
++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f,
++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f,
+-0.8660254038f, -0.4619397663f, -1.3194792169f, -1.1827865776f, -0.5000000000f, -1.1827865776f, -1.3194792169f, -0.4619397663f,
+-0.8660254038f, -1.2552931065f, -0.3535533906f, -0.4174197128f, -1.0000000000f, -0.1913417162f, +0.0947343455f, -0.5924659585f,
+-0.0000000000f, +0.5924659585f, -0.0947343455f, +0.1913417162f, +1.0000000000f, +0.4174197128f, +0.3535533906f, +1.2552931065f,
++0.8660254038f, +0.4619397663f, +1.3194792169f, +1.1827865776f, +0.5000000000f, +1.1827865776f, +1.3194792169f, +0.4619397663f,
++0.8660254038f, +1.2552931065f, +0.3535533906f, +0.4174197128f, +1.0000000000f, +0.1913417162f, -0.0947343455f, +0.5924659585f,
++0.0000000000f, -0.5924659585f, +0.0947343455f, -0.1913417162f, -1.0000000000f, -0.4174197128f, -0.3535533906f, -1.2552931065f,
+};
+
+float32_t refOutput[320] =
+{
++0.0000000000f, -0.0010797829f, -0.0007681386f, -0.0001982932f, +0.0000644313f, +0.0020854271f, +0.0036891871f, +0.0015855941f,
+-0.0026280805f, -0.0075907658f, -0.0119390538f, -0.0086665968f, +0.0088981202f, +0.0430539279f, +0.0974468742f, +0.1740405600f,
++0.2681416601f, +0.3747720089f, +0.4893362230f, +0.6024154672f, +0.7058740791f, +0.7968348987f, +0.8715901940f, +0.9277881093f,
++0.9682182661f, +0.9934674267f, +1.0012052245f, +0.9925859371f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f,
++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f,
+-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f,
+-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f,
+-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f,
++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f,
++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f,
++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f,
+-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f,
+-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f,
+-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f,
++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f,
++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f,
++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, -0.0000000000f, -0.1309866321f,
+-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f,
+-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f,
+-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f,
++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f,
++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f,
++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f,
+-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f,
+-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f,
+-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f,
++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f,
++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f,
++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f,
+-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f,
+-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f,
+-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, -0.0000000000f, +0.1309866321f,
++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f,
++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f,
++0.7085021596f, +0.6100062330f, +0.5012752767f, +0.3834386057f, +0.2592435399f, +0.1309866321f, +0.0000000000f, -0.1309866321f,
+-0.2592435399f, -0.3834386057f, -0.5012752767f, -0.6100062330f, -0.7085021596f, -0.7952493046f, -0.8679010068f, -0.9257026822f,
+-0.9681538347f, -0.9936657199f, -1.0019733630f, -0.9936657199f, -0.9681538347f, -0.9257026822f, -0.8679010068f, -0.7952493046f,
+-0.7085021596f, -0.6100062330f, -0.5012752767f, -0.3834386057f, -0.2592435399f, -0.1309866321f, +0.0000000000f, +0.1309866321f,
++0.2592435399f, +0.3834386057f, +0.5012752767f, +0.6100062330f, +0.7085021596f, +0.7952493046f, +0.8679010068f, +0.9257026822f,
++0.9681538347f, +0.9936657199f, +1.0019733630f, +0.9936657199f, +0.9681538347f, +0.9257026822f, +0.8679010068f, +0.7952493046f
+};
+
diff --git a/tool/mbed/mbed-sdk/libraries/tests/dsp/cmsis/fir_f32/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/dsp/cmsis/fir_f32/main.cpp
new file mode 100644
index 0000000000..f6bdb4b7ce
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/dsp/cmsis/fir_f32/main.cpp
@@ -0,0 +1,65 @@
+#include "arm_math.h"
+#include "math_helper.h"
+#include <stdio.h>
+
+#define BLOCK_SIZE 32
+#define NUM_BLOCKS 10
+
+#define TEST_LENGTH_SAMPLES (BLOCK_SIZE * NUM_BLOCKS)
+
+#define SNR_THRESHOLD_F32 140.0f
+#define NUM_TAPS 29
+
+/* -------------------------------------------------------------------
+ * The input signal and reference output (computed with MATLAB)
+ * are defined externally in arm_fir_lpf_data.c.
+ * ------------------------------------------------------------------- */
+extern float32_t testInput_f32_1kHz_15kHz[TEST_LENGTH_SAMPLES];
+extern float32_t refOutput[TEST_LENGTH_SAMPLES];
+
+/* -------------------------------------------------------------------
+ * Declare State buffer of size (numTaps + blockSize - 1)
+ * ------------------------------------------------------------------- */
+static float32_t firStateF32[BLOCK_SIZE + NUM_TAPS - 1];
+
+/* ----------------------------------------------------------------------
+ * FIR Coefficients buffer generated using fir1() MATLAB function.
+ * fir1(28, 6/24)
+ * ------------------------------------------------------------------- */
+const float32_t firCoeffs32[NUM_TAPS] = {
+ -0.0018225230f, -0.0015879294f, +0.0000000000f, +0.0036977508f, +0.0080754303f,
+ +0.0085302217f, -0.0000000000f, -0.0173976984f, -0.0341458607f, -0.0333591565f,
+ +0.0000000000f, +0.0676308395f, +0.1522061835f, +0.2229246956f, +0.2504960933f,
+ +0.2229246956f, +0.1522061835f, +0.0676308395f, +0.0000000000f, -0.0333591565f,
+ -0.0341458607f, -0.0173976984f, -0.0000000000f, +0.0085302217f, +0.0080754303f,
+ +0.0036977508f, +0.0000000000f, -0.0015879294f, -0.0018225230f
+};
+
+/* ----------------------------------------------------------------------
+ * FIR LPF Example
+ * ------------------------------------------------------------------- */
+int main(void) {
+ /* Call FIR init function to initialize the instance structure. */
+ arm_fir_instance_f32 S;
+ arm_fir_init_f32(&S, NUM_TAPS, (float32_t *)&firCoeffs32[0], &firStateF32[0], BLOCK_SIZE);
+
+ /* ----------------------------------------------------------------------
+ * Call the FIR process function for every blockSize samples
+ * ------------------------------------------------------------------- */
+ for (uint32_t i=0; i < NUM_BLOCKS; i++) {
+ float32_t* signal = testInput_f32_1kHz_15kHz + (i * BLOCK_SIZE);
+ arm_fir_f32(&S, signal, signal, BLOCK_SIZE);
+ }
+
+ /* ----------------------------------------------------------------------
+ * Compare the generated output against the reference output computed
+ * in MATLAB.
+ * ------------------------------------------------------------------- */
+ float32_t snr = arm_snr_f32(refOutput, testInput_f32_1kHz_15kHz, TEST_LENGTH_SAMPLES);
+ printf("snr: %f\n\r", snr);
+ if (snr < SNR_THRESHOLD_F32) {
+ printf("Failed\n\r");
+ } else {
+ printf("Success\n\r");
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/dsp/mbed/fir_f32/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/dsp/mbed/fir_f32/main.cpp
new file mode 100644
index 0000000000..d5e98d58ee
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/dsp/mbed/fir_f32/main.cpp
@@ -0,0 +1,53 @@
+#include "mbed.h"
+#include "dsp.h"
+
+#define BLOCK_SIZE (32)
+#define NUM_BLOCKS (10)
+#define TEST_LENGTH_SAMPLES (BLOCK_SIZE * NUM_BLOCKS)
+
+#define SAMPLE_RATE (48000)
+
+#define SNR_THRESHOLD_F32 (50.0f)
+
+float32_t expected_output[TEST_LENGTH_SAMPLES];
+float32_t output[TEST_LENGTH_SAMPLES];
+
+/* FIR Coefficients buffer generated using fir1() MATLAB function: fir1(28, 6/24) */
+#define NUM_TAPS 29
+const float32_t firCoeffs32[NUM_TAPS] = {
+ -0.0018225230f, -0.0015879294f, +0.0000000000f, +0.0036977508f, +0.0080754303f,
+ +0.0085302217f, -0.0000000000f, -0.0173976984f, -0.0341458607f, -0.0333591565f,
+ +0.0000000000f, +0.0676308395f, +0.1522061835f, +0.2229246956f, +0.2504960933f,
+ +0.2229246956f, +0.1522061835f, +0.0676308395f, +0.0000000000f, -0.0333591565f,
+ -0.0341458607f, -0.0173976984f, -0.0000000000f, +0.0085302217f, +0.0080754303f,
+ +0.0036977508f, +0.0000000000f, -0.0015879294f, -0.0018225230f
+};
+#define WARMUP (NUM_TAPS-1)
+#define DELAY (WARMUP/2)
+
+int main() {
+ Sine_f32 sine_1KHz( 1000, SAMPLE_RATE, 1.0);
+ Sine_f32 sine_15KHz(15000, SAMPLE_RATE, 0.5);
+ FIR_f32<NUM_TAPS> fir(firCoeffs32);
+
+ float32_t buffer_a[BLOCK_SIZE];
+ float32_t buffer_b[BLOCK_SIZE];
+ for (float32_t *sgn=output; sgn<(output+TEST_LENGTH_SAMPLES); sgn += BLOCK_SIZE) {
+ sine_1KHz.generate(buffer_a); // Generate a 1KHz sine wave
+ sine_15KHz.process(buffer_a, buffer_b); // Add a 15KHz sine wave
+ fir.process(buffer_b, sgn); // FIR low pass filter: 6KHz cutoff
+ }
+
+ sine_1KHz.reset();
+ for (float32_t *sgn=expected_output; sgn<(expected_output+TEST_LENGTH_SAMPLES); sgn += BLOCK_SIZE) {
+ sine_1KHz.generate(sgn); // Generate a 1KHz sine wave
+ }
+
+ float snr = arm_snr_f32(&expected_output[DELAY-1], &output[WARMUP-1], TEST_LENGTH_SAMPLES-WARMUP);
+ printf("snr: %f\n\r", snr);
+ if (snr < SNR_THRESHOLD_F32) {
+ printf("Failed\n\r");
+ } else {
+ printf("Success\n\r");
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/export/mcb1700/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/export/mcb1700/main.cpp
new file mode 100644
index 0000000000..bc1d2c6748
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/export/mcb1700/main.cpp
@@ -0,0 +1,24 @@
+#include "mbed.h"
+
+BusOut leds(P1_28, P1_29, P1_31, P2_2, P2_3, P2_4, P2_5, P2_6);
+AnalogIn in(P0_25);
+
+int main() {
+ while (true) {
+ float value = 8.0 * in.read();
+ printf("analog in: %f\n\r", value);
+
+ int led_mask = 0;
+ if (value > 0.5) led_mask |= 1 << 0;
+ if (value > 1.5) led_mask |= 1 << 1;
+ if (value > 2.5) led_mask |= 1 << 2;
+ if (value > 3.5) led_mask |= 1 << 3;
+ if (value > 4.5) led_mask |= 1 << 4;
+ if (value > 5.5) led_mask |= 1 << 5;
+ if (value > 6.5) led_mask |= 1 << 6;
+ if (value > 7.5) led_mask |= 1 << 7;
+ leds = led_mask;
+
+ wait(1);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/libs/SPIHalfDuplex/SPIHalfDuplex.cpp b/tool/mbed/mbed-sdk/libraries/tests/libs/SPIHalfDuplex/SPIHalfDuplex.cpp
new file mode 100644
index 0000000000..5fc6e8568e
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/libs/SPIHalfDuplex/SPIHalfDuplex.cpp
@@ -0,0 +1,43 @@
+/* mbed Microcontroller Library - SPIHalfDuplex
+ * Copyright (c) 2010-2011 ARM Limited. All rights reserved.
+ */
+#include "SPIHalfDuplex.h"
+
+#if DEVICE_SPI
+
+#include "spi_api.h"
+#include "pinmap.h"
+
+#define GPIO_MODE 0
+#define SPI_MODE 2
+
+namespace mbed {
+
+SPIHalfDuplex::SPIHalfDuplex(PinName mosi, PinName miso, PinName sclk) : SPI(mosi, miso, sclk) {
+ _mosi = mosi;
+ _miso = miso;
+ _sbits = _bits;
+}
+
+void SPIHalfDuplex::slave_format(int sbits) {
+ _sbits = sbits;
+}
+
+int SPIHalfDuplex::write(int value) {
+ int t_bits = _bits;
+ pin_function(_mosi, SPI_MODE);
+ int ret_val = SPI::write(value);
+ if (ret_val != value) {
+ return -1;
+ }
+ format(_sbits, _mode);
+ pin_function(_mosi, GPIO_MODE);
+ ret_val = SPI::write(0x55);
+ format(t_bits, _mode);
+ pin_function(_mosi, SPI_MODE);
+ return ret_val;
+}
+
+} // end namespace mbed
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/libs/SPIHalfDuplex/SPIHalfDuplex.h b/tool/mbed/mbed-sdk/libraries/tests/libs/SPIHalfDuplex/SPIHalfDuplex.h
new file mode 100644
index 0000000000..14633b8555
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/libs/SPIHalfDuplex/SPIHalfDuplex.h
@@ -0,0 +1,85 @@
+/* mbed Microcontroller Library - SPIHalfDuplex
+ * Copyright (c) 2010-2011 ARM Limited. All rights reserved.
+ */
+#ifndef MBED_SPIHALFDUPLEX_H
+#define MBED_SPIHALFDUPLEX_H
+
+#include "platform.h"
+
+#if DEVICE_SPI
+
+#include "SPI.h"
+
+namespace mbed {
+
+/** A SPI half-duplex master, used for communicating with SPI slave devices
+ * over a shared data line.
+ *
+ * The default format is set to 8-bits for both master and slave, and a
+ * clock frequency of 1MHz
+ *
+ * Most SPI devies will also require Chip Select and Reset signals. These
+ * can be controlled using <DigitalOut> pins.
+ *
+ * Although this is for a shared data line, both MISO and MOSI are defined,
+ * and should be tied together externally to the mbed. This class handles
+ * the tri-stating of the MOSI pin.
+ *
+ * Example:
+ * @code
+ * // Send a byte to a SPI half-duplex slave, and record the response
+ *
+ * #include "mbed.h"
+ *
+ * SPIHalfDuplex device(p5, p6, p7) // mosi, miso, sclk
+ *
+ * int main() {
+ * int respone = device.write(0xAA);
+ * }
+ * @endcode
+ */
+
+class SPIHalfDuplex : public SPI {
+
+public:
+
+ /** Create a SPI half-duplex master connected to the specified pins
+ *
+ * Pin Options:
+ * (5, 6, 7) or (11, 12, 13)
+ *
+ * mosi or miso can be specfied as NC if not used
+ *
+ * @param mosi SPI Master Out, Slave In pin
+ * @param miso SPI Master In, Slave Out pin
+ * @param sclk SPI Clock pin
+ * @param name (optional) A string to identify the object
+ */
+ SPIHalfDuplex(PinName mosi, PinName miso, PinName sclk);
+
+ /** Write to the SPI Slave and return the response
+ *
+ * @param value Data to be sent to the SPI slave
+ *
+ * @returns
+ * Response from the SPI slave
+ */
+ virtual int write(int value);
+
+ /** Set the number of databits expected from the slave, from 4-16
+ *
+ * @param sbits Number of expected bits in the slave response
+ */
+ void slave_format(int sbits);
+
+protected:
+ PinName _mosi;
+ PinName _miso;
+ int _sbits;
+}; // End of class
+
+} // End of namespace mbed
+
+#endif
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.cpp b/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.cpp
new file mode 100644
index 0000000000..7594e40473
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.cpp
@@ -0,0 +1,52 @@
+/* mbed Microcontroller Library - SerialHalfDuplex
+ * Copyright (c) 2010-2011 ARM Limited. All rights reserved.
+ */
+#include "SerialHalfDuplex.h"
+
+#if DEVICE_SERIAL
+
+#include "pinmap.h"
+#include "serial_api.h"
+
+namespace mbed {
+
+SerialHalfDuplex::SerialHalfDuplex(PinName tx, PinName rx)
+ : Serial(tx, rx) {
+
+ gpio_init(&gpio, tx, PIN_INPUT);
+ gpio_mode(&gpio, PullNone); // no pull
+}
+
+// To transmit a byte in half duplex mode:
+// 1. Disable interrupts, so we don't trigger on loopback byte
+// 2. Set tx pin to UART out
+// 3. Transmit byte as normal
+// 4. Read back byte from looped back tx pin - this both confirms that the
+// transmit has occurred, and also clears the byte from the buffer.
+// 5. Return pin to input mode
+// 6. Re-enable interrupts
+int SerialHalfDuplex::_putc(int c) {
+ int retc;
+
+ // TODO: We should not disable all interrupts
+ __disable_irq();
+
+ serial_pinout_tx(gpio.pin);
+
+ Serial::_putc(c);
+ retc = Serial::getc(); // reading also clears any interrupt
+
+ pin_function(gpio.pin, 0);
+
+ __enable_irq();
+
+ return retc;
+}
+
+int SerialHalfDuplex::_getc(void) {
+ return Serial::_getc();
+}
+
+} // End namespace
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.h b/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.h
new file mode 100644
index 0000000000..0ba13d38e5
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/libs/SerialHalfDuplex/SerialHalfDuplex.h
@@ -0,0 +1,82 @@
+/* mbed Microcontroller Library - SerialHalfDuplex
+ * Copyright (c) 2010-2011 ARM Limited. All rights reserved.
+ */
+#ifndef MBED_SERIALHALFDUPLEX_H
+#define MBED_SERIALHALFDUPLEX_H
+
+#include "platform.h"
+
+#if DEVICE_SERIAL
+
+#include "Serial.h"
+#include "gpio_api.h"
+
+namespace mbed {
+
+/** A serial port (UART) for communication with other devices using
+ * Half-Duplex, allowing transmit and receive on a single
+ * shared transmit and receive line. Only one end should be transmitting
+ * at a time.
+ *
+ * Both the tx and rx pin should be defined, and wired together.
+ * This is in addition to them being wired to the other serial
+ * device to allow both read and write functions to operate.
+ *
+ * For Simplex and Full-Duplex Serial communication, see Serial()
+ *
+ * Example:
+ * @code
+ * // Send a byte to a second HalfDuplex device, and read the response
+ *
+ * #include "mbed.h"
+ *
+ * // p9 and p10 should be wired together to form "a"
+ * // p28 and p27 should be wired together to form "b"
+ * // p9/p10 should be wired to p28/p27 as the Half Duplex connection
+ *
+ * SerialHalfDuplex a(p9, p10);
+ * SerialHalfDuplex b(p28, p27);
+ *
+ * void b_rx() { // second device response
+ * b.putc(b.getc() + 4);
+ * }
+ *
+ * int main() {
+ * b.attach(&b_rx);
+ * for (int c = 'A'; c < 'Z'; c++) {
+ * a.putc(c);
+ * printf("sent [%c]\n", c);
+ * wait(0.5); // b should respond
+ * if (a.readable()) {
+ * printf("received [%c]\n", a.getc());
+ * }
+ * }
+ * }
+ * @endcode
+ */
+class SerialHalfDuplex : public Serial {
+
+public:
+ /** Create a half-duplex serial port, connected to the specified transmit
+ * and receive pins.
+ *
+ * These pins should be wired together, as well as to the target device
+ *
+ * @param tx Transmit pin
+ * @param rx Receive pin
+ */
+ SerialHalfDuplex(PinName tx, PinName rx);
+
+protected:
+ gpio_object gpio;
+
+ virtual int _putc(int c);
+ virtual int _getc(void);
+
+}; // End class SerialHalfDuplex
+
+} // End namespace
+
+#endif
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/analog/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/analog/main.cpp
new file mode 100644
index 0000000000..88f65ef042
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/analog/main.cpp
@@ -0,0 +1,82 @@
+#include "test_env.h"
+
+#if defined(TARGET_K64F) | defined (TARGET_K22F)
+AnalogIn in(A0);
+AnalogOut out(DAC0_OUT);
+
+#elif defined(TARGET_KL25Z)
+AnalogIn in(PTC2);
+AnalogOut out(PTE30);
+
+#elif defined(TARGET_KL05Z)
+AnalogIn in(PTB11); // D9
+AnalogOut out(PTB1); // D1
+
+#elif defined(TARGET_KL46Z)
+AnalogIn in(PTB0);
+AnalogOut out(PTE30);
+
+#elif defined(TARGET_LPC1549)
+AnalogIn in(A0);
+AnalogOut out(D12); //D12 is P0_12, the DAC output pin
+
+// No DAC on these targets:
+//TARGET_NUCLEO_F030R8
+//TARGET_NUCLEO_F070RB
+//TARGET_NUCLEO_F103RB
+//TARGET_NUCLEO_F401RE
+//TARGET_NUCLEO_F411RE
+#elif defined(TARGET_NUCLEO_F072RB) || \
+ defined(TARGET_NUCLEO_F091RC) || \
+ defined(TARGET_NUCLEO_F302R8) || \
+ defined(TARGET_NUCLEO_F303RE) || \
+ defined(TARGET_NUCLEO_F334R8) || \
+ defined(TARGET_NUCLEO_L053R8) || \
+ defined(TARGET_NUCLEO_L073RZ) || \
+ defined(TARGET_NUCLEO_L152RE)
+AnalogIn in(A0);
+AnalogOut out(A2); // DAC output
+
+#elif defined(TARGET_ARCH_MAX)
+AnalogIn in(PA_0);
+AnalogOut out(PA_4);
+
+#elif defined(TARGET_DISCO_F407VG)
+AnalogIn in(PC_5);
+AnalogOut out(PA_4);
+
+#elif defined(TARGET_DISCO_F429ZI)
+AnalogIn in(PC_3);
+AnalogOut out(PA_5);
+
+#elif defined(TARGET_MAX32600MBED)
+AnalogIn in(AIN_7P);
+AnalogOut out(AOUT_DO);
+
+#else
+AnalogIn in(p17);
+AnalogOut out(p18);
+
+#endif
+
+#define ERROR_TOLLERANCE 0.05
+
+int main() {
+ bool check = true;
+
+ for (float out_value=0.0; out_value<1.1; out_value+=0.1) {
+ out.write(out_value);
+ wait(0.1);
+
+ float in_value = in.read();
+ float diff = fabs(out_value - in_value);
+ if (diff > ERROR_TOLLERANCE) {
+ check = false;
+ printf("ERROR (out:%.4f) - (in:%.4f) = (%.4f)"NL, out_value, in_value, diff);
+ } else {
+ printf("OK (out:%.4f) - (in:%.4f) = (%.4f)"NL, out_value, in_value, diff);
+ }
+ }
+
+ notify_completion(check);
+} \ No newline at end of file
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/analog_in/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/analog_in/main.cpp
new file mode 100644
index 0000000000..157885df36
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/analog_in/main.cpp
@@ -0,0 +1,58 @@
+/*
+ * Version of the Analog test,
+ * Intended for use by devices which
+ * don't have analog out.
+ *
+ * Connect 'control' to pin 21 of an mbed LPC1768
+ * Connect 'analogInput' to pin 18 of an mbed LPC1768
+ * Connect 'TX/RX' to pins 27 and 28 of an mbed LPC1768
+ *
+ * Upload:
+*/
+#include "test_env.h"
+
+#define ERROR_TOLERANCE 0.05
+
+#if defined(TARGET_LPC1114)
+
+AnalogIn analogInput(dp4);
+DigitalOut control(dp5);
+DigitalOut indicator(LED1);
+
+#else
+
+#endif
+
+uint8_t successes = 0;
+
+int main() {
+ control = 0;
+
+ for (int i = 0; i < 10; i++) {
+ // Read value,
+ float expectedValue = i * 0.1;
+ float value = analogInput.read();
+
+ if (value > expectedValue + ERROR_TOLERANCE || value < expectedValue - ERROR_TOLERANCE) {
+ // Failure.
+ printf("ERROR (out:%.4f) - (in:%.4f) = (%.4f)"NL, expectedValue, value, fabs(expectedValue - value));
+ }
+ else {
+ printf("OK (out:%.4f) - (in:%.4f) = (%.4f)"NL, out_value, in_value, diff);
+ successes++;
+ }
+
+ control = 1;
+ indicator = 1;
+ wait(0.1);
+ control = 0;
+ indicator = 0;
+ }
+
+ if (successes > 8) {
+ notify_success(true);
+ }
+ else {
+ notify_success(false);
+ }
+} \ No newline at end of file
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/analog_pot/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/analog_pot/main.cpp
new file mode 100644
index 0000000000..2f64bcbb6e
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/analog_pot/main.cpp
@@ -0,0 +1,29 @@
+#include "mbed.h"
+#include "test_env.h"
+
+AnalogIn pot1(A0);
+AnalogIn pot2(A1);
+
+#define TEST_ITERATIONS 20
+#define MEASURE_MIN 0.01
+
+int main(void) {
+ MBED_HOSTTEST_TIMEOUT(10);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(AnalogIn potentiometer test);
+ MBED_HOSTTEST_START("analog_pot");
+
+ bool result = false;
+ float val1, val2;
+
+ for (int i = 0; i < TEST_ITERATIONS; i++) {
+ val1 = pot1.read();
+ val2 = pot2.read();
+
+ const char *succes_str = val1 > MEASURE_MIN || val2 > MEASURE_MIN ? "[OK]" : "[FAIL]";
+ result = result || (val1 > MEASURE_MIN || val2 > MEASURE_MIN);
+ printf("Pot values %f, %f\r\n", val1, val2);
+ wait(0.001);
+ }
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/basic/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/basic/main.cpp
new file mode 100644
index 0000000000..c4a50988bf
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/basic/main.cpp
@@ -0,0 +1,9 @@
+#include "test_env.h"
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(Basic);
+ MBED_HOSTTEST_START("MBED_A1");
+ MBED_HOSTTEST_RESULT(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/blinky/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/blinky/main.cpp
new file mode 100644
index 0000000000..3e6293939f
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/blinky/main.cpp
@@ -0,0 +1,12 @@
+#include "mbed.h"
+
+DigitalOut myled(LED1);
+
+int main() {
+ while(1) {
+ myled = 1;
+ wait(0.2);
+ myled = 0;
+ wait(0.2);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/bus/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/bus/main.cpp
new file mode 100644
index 0000000000..4ab61ac1f4
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/bus/main.cpp
@@ -0,0 +1,19 @@
+#include "mbed.h"
+#include "test_env.h"
+
+BusOut bus1(D0, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15);
+BusOut bus2(A5, A4, A3, A2, A1, A0);
+int i;
+
+int main()
+{
+ notify_start();
+
+ for (i=0; i<=65535; i++) {
+ bus1 = i;
+ bus2 = i;
+ wait(0.0001);
+ }
+
+ notify_completion(true);
+} \ No newline at end of file
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/bus_out/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/bus_out/main.cpp
new file mode 100644
index 0000000000..35fccc4fa1
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/bus_out/main.cpp
@@ -0,0 +1,82 @@
+#include "mbed.h"
+#include "test_env.h"
+
+namespace {
+BusOut bus_out(LED1, LED2, LED3, LED4);
+PinName led_pins[4] = {LED1, LED2, LED3, LED4}; // Temp, used to map pins in bus_out
+}
+
+int main()
+{
+ notify_start();
+
+ bool result = false;
+
+ for (;;) {
+ const int mask = bus_out.mask();
+ int led_mask = 0x00;
+ if (LED1 != NC) led_mask |= 0x01;
+ if (LED2 != NC) led_mask |= 0x02;
+ if (LED3 != NC) led_mask |= 0x04;
+ if (LED4 != NC) led_mask |= 0x08;
+
+ printf("MBED: BusIn mask: 0x%X\r\n", mask);
+ printf("MBED: BusIn LED mask: 0x%X\r\n", led_mask);
+
+ // Let's check bus's connected pins mask
+ if (mask != led_mask) {
+ break;
+ }
+
+ // Checking if DigitalOut is correctly set as connected
+ for (int i=0; i < 4; i++) {
+ printf("MBED: BusOut.bit[%d] is %s\r\n",
+ i,
+ (led_pins[i] != NC && bus_out[i].is_connected())
+ ? "connected"
+ : "not connected");
+ }
+
+ for (int i=0; i < 4; i++) {
+ if (led_pins[i] != NC && bus_out[0].is_connected() == 0) {
+ break;
+ }
+ }
+
+ // Write mask all LEDs
+ bus_out.write(mask); // Set all LED's pins in high state
+ if (bus_out.read() != mask) {
+ break;
+ }
+ // Zero all LEDs and see if mask is correctly cleared on all bits
+ bus_out.write(~mask);
+ if (bus_out.read() != 0x00) {
+ break;
+ }
+
+ result = true;
+ break;
+ }
+
+ printf("MBED: Blinking LEDs: \r\n");
+
+ // Just a quick LED blinking...
+ for (int i=0; i<4; i++) {
+ if (led_pins[i] != NC && bus_out[i].is_connected()) {
+ bus_out[i] = 1;
+ printf("%c", 'A' + i);
+ } else {
+ printf(".");
+ }
+ wait(0.2);
+ if (led_pins[i] != NC && bus_out[i].is_connected()) {
+ bus_out[i] = 0;
+ printf("%c", 'a' + i);
+ } else {
+ printf(".");
+ }
+ }
+ printf("\r\n");
+
+ notify_completion(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/call_before_main/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/call_before_main/main.cpp
new file mode 100644
index 0000000000..7b3bac203f
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/call_before_main/main.cpp
@@ -0,0 +1,21 @@
+#include "test_env.h"
+
+namespace {
+ bool mbed_main_called = false;
+}
+
+extern "C" void mbed_main() {
+ printf("MBED: mbed_main() call before main()\r\n");
+ mbed_main_called = true;
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(Call function mbed_main before main);
+ MBED_HOSTTEST_START("MBED_A21");
+
+ printf("MBED: main() starts now!\r\n");
+
+ MBED_HOSTTEST_RESULT(mbed_main_called);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/can/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/can/main.cpp
new file mode 100644
index 0000000000..a05321a907
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/can/main.cpp
@@ -0,0 +1,53 @@
+#include "mbed.h"
+
+Ticker ticker;
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+
+#if defined(TARGET_LPC1549)
+// LPC1549 support only single CAN channel
+CAN can1(D2, D3);
+#else
+CAN can1(p9, p10);
+#endif
+
+#if defined(TARGET_LPC4088) || defined(TARGET_LPC4088_DM)
+CAN can2(p34, p33);
+#elif defined (TARGET_LPC1768)
+CAN can2(p30, p29);
+#endif
+char counter = 0;
+
+void printmsg(char *title, CANMessage *msg) {
+ printf("%s [%03X]", title, msg->id);
+ for(char i = 0; i < msg->len; i++) {
+ printf(" %02X", msg->data[i]);
+ }
+ printf("\n");
+}
+
+void send() {
+ printf("send()\n");
+ CANMessage msg = CANMessage(1337, &counter, 1);
+ if(can1.write(msg)) {
+ printmsg("Tx message:", &msg);
+ counter++;
+ }
+ led1 = !led1;
+}
+
+int main() {
+ printf("main()\n");
+ ticker.attach(&send, 1);
+ CANMessage msg;
+ while(1) {
+#if !defined(TARGET_LPC1549)
+ printf("loop()\n");
+ if(can2.read(msg)) {
+ printmsg("Rx message:", &msg);
+ led2 = !led2;
+ }
+#endif
+ wait(0.2);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/can_interrupt/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/can_interrupt/main.cpp
new file mode 100644
index 0000000000..3fad7ff625
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/can_interrupt/main.cpp
@@ -0,0 +1,60 @@
+#include "mbed.h"
+
+Ticker ticker;
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+
+#if defined(TARGET_LPC1549)
+// LPC1549 support only single CAN channel
+CAN can1(D2, D3);
+#else
+CAN can1(p9, p10);
+#endif
+
+#if defined(TARGET_LPC4088)
+CAN can2(p34, p33);
+#elif defined (TARGET_LPC1768)
+CAN can2(p30, p29);
+#endif
+char counter = 0;
+
+void printmsg(char *title, CANMessage *msg) {
+ printf("%s [%03X]", title, msg->id);
+ for(char i = 0; i < msg->len; i++) {
+ printf(" %02X", msg->data[i]);
+ }
+ printf("\n");
+}
+
+void send() {
+ printf("send()\n");
+ CANMessage msg = CANMessage(1337, &counter, 1);
+ if(can1.write(msg)) {
+ printmsg("Tx message:", &msg);
+ counter++;
+ }
+ led1 = !led1;
+}
+
+#if !defined (TARGET_LPC1549)
+void read() {
+ CANMessage msg;
+ printf("rx()\n");
+ if(can2.read(msg)) {
+ printmsg("Rx message:", &msg);
+ led2 = !led2;
+ }
+}
+#endif
+
+int main() {
+ printf("main()\n");
+ ticker.attach(&send, 1);
+#if !defined (TARGET_LPC1549)
+ can2.attach(&read);
+#endif
+ while(1) {
+ printf("loop()\n");
+ wait(1);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/cpp/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/cpp/main.cpp
new file mode 100644
index 0000000000..48254315a6
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/cpp/main.cpp
@@ -0,0 +1,86 @@
+#include "test_env.h"
+
+#define PATTERN_CHECK_VALUE 0xF0F0ADAD
+
+class Test {
+
+private:
+ const char* name;
+ const int pattern;
+
+public:
+ Test(const char* _name) : name(_name), pattern(PATTERN_CHECK_VALUE) {
+ print("init");
+ }
+
+ void print(const char *message) {
+ printf("%s::%s\n", name, message);
+ }
+
+ bool check_init(void) {
+ bool result = (pattern == PATTERN_CHECK_VALUE);
+ print(result ? "check_init: OK" : "check_init: ERROR");
+ return result;
+ }
+
+ void stack_test(void) {
+ print("stack_test");
+ Test t("Stack");
+ t.hello();
+ }
+
+ void hello(void) {
+ print("hello");
+ }
+
+ ~Test() {
+ print("destroy");
+ }
+};
+
+/* Check C++ startup initialisation */
+Test s("Static");
+
+/* EXPECTED OUTPUT:
+*******************
+Static::init
+Static::stack_test
+Stack::init
+Stack::hello
+Stack::destroy
+Static::check_init: OK
+Heap::init
+Heap::hello
+Heap::destroy
+*******************/
+int main (void) {
+ MBED_HOSTTEST_TIMEOUT(10);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(C++);
+ MBED_HOSTTEST_START("MBED_12");
+
+ bool result = true;
+ for (;;)
+ {
+ // Global stack object simple test
+ s.stack_test();
+ if (s.check_init() == false)
+ {
+ result = false;
+ break;
+ }
+
+ // Heap test object simple test
+ Test *m = new Test("Heap");
+ m->hello();
+
+ if (m->check_init() == false)
+ {
+ result = false;
+ }
+ delete m;
+ break;
+ }
+
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/cstring/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/cstring/main.cpp
new file mode 100644
index 0000000000..69f89735de
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/cstring/main.cpp
@@ -0,0 +1,100 @@
+#include "mbed.h"
+#include "test_env.h"
+#include <string.h>
+
+#define BUFFER_SIZE 256
+#define CLEAN_BUFFER(BUFF) memset(BUFF, 0x00, BUFFER_SIZE)
+
+#define NEGATIVE_INTEGERS -32768,-3214,-999,-100,-1,0,-1,-4231,-999,-4123,-32760,-99999
+#define POSITIVE_INTEGERS 32768,3214,999,100,1,0,1,4231,999,4123,32760,99999
+#define FLOATS 0.002,0.92430,15.91320,791.77368,6208.2,25719.4952,426815.982588,6429271.046,42468024.93,212006462.910
+
+
+int main()
+{
+ char buffer[BUFFER_SIZE] = {0};
+ bool result = true;
+ bool cmp_result;
+
+ {
+ CLEAN_BUFFER(buffer);
+ sprintf(buffer, "%i %d %i %d %i %d %i %d %i %d %i %i", NEGATIVE_INTEGERS);
+ cmp_result = TESTENV_STRCMP(buffer, "-32768 -3214 -999 -100 -1 0 -1 -4231 -999 -4123 -32760 -99999");
+ printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer);
+ result = result && cmp_result;
+ }
+
+ {
+ CLEAN_BUFFER(buffer);
+ sprintf(buffer, "%u %d %u %d %u %d %u %d %u %d %u %d", POSITIVE_INTEGERS);
+ cmp_result = TESTENV_STRCMP(buffer, "32768 3214 999 100 1 0 1 4231 999 4123 32760 99999");
+ printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer);
+ result = result && cmp_result;
+ }
+
+ {
+ CLEAN_BUFFER(buffer);
+ sprintf(buffer, "%x %X %x %X %x %X %x %X %x %X %x %X", POSITIVE_INTEGERS);
+ cmp_result = TESTENV_STRCMP(buffer, "8000 C8E 3e7 64 1 0 1 1087 3e7 101B 7ff8 1869F");
+ printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer);
+ result = result && cmp_result;
+ }
+
+ {
+ CLEAN_BUFFER(buffer);
+ sprintf(buffer, "%f %f %f %f %f %f %f %f %f %f", FLOATS);
+ cmp_result = TESTENV_STRCMP(buffer, "0.002000 0.924300 15.913200 791.773680 6208.200000 25719.495200 426815.982588 6429271.046000 42468024.930000 212006462.910000");
+ printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer);
+ result = result && cmp_result;
+ }
+
+ {
+ CLEAN_BUFFER(buffer);
+ sprintf(buffer, "%g %g %g %g %g %g %g %g %g %g", FLOATS);
+ cmp_result = TESTENV_STRCMP(buffer, "0.002 0.9243 15.9132 791.774 6208.2 25719.5 426816 6.42927e+006 4.2468e+007 2.12006e+008");
+ cmp_result = cmp_result || TESTENV_STRCMP(buffer, "0.002 0.9243 15.9132 791.774 6208.2 25719.5 426816 6.42927e+06 4.2468e+07 2.12006e+08");
+ printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer);
+ result = result && cmp_result;
+ }
+
+ {
+ CLEAN_BUFFER(buffer);
+ sprintf(buffer, "%e %E %e %E %e %E %e %E %e %E", FLOATS);
+ cmp_result = TESTENV_STRCMP(buffer, "2.000000e-003 9.243000E-001 1.591320e+001 7.917737E+002 6.208200e+003 2.571950E+004 4.268160e+005 6.429271E+006 4.246802e+007 2.120065E+008");
+ cmp_result = cmp_result || TESTENV_STRCMP(buffer, "2.000000e-03 9.243000E-01 1.591320e+01 7.917737E+02 6.208200e+03 2.571950E+04 4.268160e+05 6.429271E+06 4.246802e+07 2.120065E+08");
+ printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer);
+ result = result && cmp_result;
+ }
+
+ {
+ CLEAN_BUFFER(buffer);
+ char str[] ="- This, a sample string.";
+ char * pch = strtok (str," ,.-");
+ while (pch != NULL) {
+ strcat(buffer, pch);
+ pch = strtok (NULL, " ,.-");
+ }
+ cmp_result = TESTENV_STRCMP(buffer, "Thisasamplestring");
+ printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer);
+ result = result && cmp_result;
+ }
+
+ {
+ CLEAN_BUFFER(buffer);
+ char str[] = "This is a sample string";
+ char key[] = "aeiou";
+ char *pch = strpbrk(str, key);
+ while (pch != NULL)
+ {
+ char buf[2] = {*pch, '\0'};
+ strcat(buffer, buf);
+ pch = strpbrk(pch + 1,key);
+ }
+ cmp_result = TESTENV_STRCMP(buffer, "iiaaei");
+ printf("[%s] %s\r\n", cmp_result ? "OK" : "FAIL", buffer);
+ result = result && cmp_result;
+ }
+
+ notify_completion(result);
+ return 0;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/detect/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/detect/main.cpp
new file mode 100644
index 0000000000..1508a13cbf
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/detect/main.cpp
@@ -0,0 +1,15 @@
+#include "mbed.h"
+#include "test_env.h"
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(10);
+ MBED_HOSTTEST_SELECT(detect_auto);
+ MBED_HOSTTEST_DESCRIPTION(Simple detect test);
+ MBED_HOSTTEST_START("DTCT_1");
+
+ notify_start();
+ printf("MBED: Target '%s'\r\n", TEST_SUITE_TARGET_NAME);
+ printf("MBED: Test ID '%s'\r\n", TEST_SUITE_TEST_ID);
+ printf("MBED: UUID '%s'\r\n", TEST_SUITE_UUID);
+ MBED_HOSTTEST_RESULT(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/dev_null/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/dev_null/main.cpp
new file mode 100644
index 0000000000..adde6b8d22
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/dev_null/main.cpp
@@ -0,0 +1,30 @@
+#include "mbed.h"
+#include "test_env.h"
+
+class DevNull : public Stream {
+public:
+ DevNull(const char *name = NULL) : Stream(name) {}
+
+protected:
+ virtual int _getc() {
+ return 0;
+ }
+ virtual int _putc(int c) {
+ return c;
+ }
+};
+
+DevNull null("null");
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(dev_null_auto);
+ MBED_HOSTTEST_DESCRIPTION(stdout redirected to dev null);
+ MBED_HOSTTEST_START("EXAMPLE_1");
+
+ printf("MBED: re-routing stdout to /null\r\n");
+ freopen("/null", "w", stdout);
+ printf("MBED: printf redirected to /null\r\n"); // This shouldn't appear
+ // If failure message can be seen test should fail :)
+ MBED_HOSTTEST_RESULT(false); // This is 'false' on purpose
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/digitalin_digitalout/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/digitalin_digitalout/main.cpp
new file mode 100644
index 0000000000..08fc12b784
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/digitalin_digitalout/main.cpp
@@ -0,0 +1,74 @@
+#include "test_env.h"
+
+#if defined(TARGET_LPC1114)
+DigitalOut out(dp1);
+DigitalIn in(dp2);
+
+#elif defined(TARGET_LPC1549)
+// TARGET_FF_ARDUINO cannot be used, because D0 is used as USBRX (USB serial
+// port pin), D1 is used as USBTX
+DigitalOut out(D7);
+DigitalIn in(D2);
+
+#elif defined(TARGET_NUCLEO_F030R8) || \
+ defined(TARGET_NUCLEO_F070RB) || \
+ defined(TARGET_NUCLEO_F072RB) || \
+ defined(TARGET_NUCLEO_F091RC) || \
+ defined(TARGET_NUCLEO_F103RB) || \
+ defined(TARGET_NUCLEO_F302R8) || \
+ defined(TARGET_NUCLEO_F303RE) || \
+ defined(TARGET_NUCLEO_F334R8) || \
+ defined(TARGET_NUCLEO_F401RE) || \
+ defined(TARGET_NUCLEO_F411RE) || \
+ defined(TARGET_NUCLEO_L053R8) || \
+ defined(TARGET_NUCLEO_L073RZ) || \
+ defined(TARGET_NUCLEO_L152RE)
+DigitalOut out(PC_7);
+DigitalIn in(PB_8);
+
+#elif defined(TARGET_ARCH_MAX) || \
+ defined(TARGET_DISCO_F407VG) || \
+ defined(TARGET_DISCO_F429ZI)|| \
+ defined(TARGET_DISCO_F401VC)
+DigitalOut out(PC_12);
+DigitalIn in(PD_0);
+
+#elif defined(TARGET_FF_ARDUINO)
+DigitalOut out(D7);
+DigitalIn in(D0);
+
+#elif defined(TARGET_MAXWSNENV)
+DigitalOut out(TP3);
+DigitalIn in(TP4);
+
+#elif defined(TARGET_MAX32600MBED)
+DigitalOut out(P1_0);
+DigitalIn in(P4_7);
+
+#else
+DigitalOut out(p5);
+DigitalIn in(p25);
+
+#endif
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(10);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(DigitalIn DigitalOut);
+ MBED_HOSTTEST_START("MBED_A5");
+
+ out = 0;
+ wait(0.1);
+ if (in != 0) {
+ printf("ERROR: in != 0\n");
+ MBED_HOSTTEST_RESULT(false);
+ }
+ out = 1;
+ wait(0.1);
+ if (in != 1) {
+ printf("ERROR: in != 1\n");
+ MBED_HOSTTEST_RESULT(false);
+ }
+
+ MBED_HOSTTEST_RESULT(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/digitalinout/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/digitalinout/main.cpp
new file mode 100644
index 0000000000..9335651769
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/digitalinout/main.cpp
@@ -0,0 +1,95 @@
+#include "test_env.h"
+
+#if defined(TARGET_LPC1114)
+DigitalInOut d1(dp1);
+DigitalInOut d2(dp2);
+
+#elif defined(TARGET_LPC1549)
+// TARGET_FF_ARDUINO cannot be used, because D0 is used as USBRX (USB serial
+// port pin), D1 is used as USBTX
+DigitalInOut d1(D2);
+DigitalInOut d2(D7);
+
+#elif defined(TARGET_NUCLEO_F030R8) || \
+ defined(TARGET_NUCLEO_F070RB) || \
+ defined(TARGET_NUCLEO_F072RB) || \
+ defined(TARGET_NUCLEO_F091RC) || \
+ defined(TARGET_NUCLEO_F103RB) || \
+ defined(TARGET_NUCLEO_F302R8) || \
+ defined(TARGET_NUCLEO_F303RE) || \
+ defined(TARGET_NUCLEO_F334R8) || \
+ defined(TARGET_NUCLEO_F401RE) || \
+ defined(TARGET_NUCLEO_F411RE) || \
+ defined(TARGET_NUCLEO_L053R8) || \
+ defined(TARGET_NUCLEO_L073RZ) || \
+ defined(TARGET_NUCLEO_L152RE)
+DigitalInOut d1(PC_7);
+DigitalInOut d2(PB_8);
+
+#elif defined(TARGET_ARCH_MAX) || \
+ defined(TARGET_DISCO_F407VG) || \
+ defined(TARGET_DISCO_F429ZI)|| \
+ defined(TARGET_DISCO_F401VC)
+DigitalInOut d1(PC_12);
+DigitalInOut d2(PD_0);
+
+#elif defined(TARGET_FF_ARDUINO)
+DigitalInOut d1(D0);
+DigitalInOut d2(D7);
+
+#elif defined(TARGET_MAXWSNENV)
+DigitalInOut d1(TP3);
+DigitalInOut d2(TP4);
+
+#elif defined(TARGET_MAX32600MBED)
+DigitalInOut d1(P1_0);
+DigitalInOut d2(P4_7);
+
+#else
+DigitalInOut d1(p5);
+DigitalInOut d2(p25);
+
+#endif
+
+
+int main()
+{
+ MBED_HOSTTEST_TIMEOUT(10);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(DigitalInOut);
+ MBED_HOSTTEST_START("MBED_A6");
+
+ bool check = true;
+
+ d1.output();
+ d2.input();
+ d1 = 1;
+ wait(0.1);
+ if (d2 != 1) {
+ printf("MBED: First check failed! d2 is %d\n", (int)d2);
+ check = false;
+ }
+ d1 = 0;
+ wait(0.1);
+ if (d2 != 0) {
+ printf("MBED: Second check failed! d2 is %d\n", (int)d2);
+ check = false;
+ }
+
+ d1.input();
+ d2.output();
+ d2 = 1;
+ wait(0.1);
+ if (d1 != 1) {
+ printf("MBED: Third check failed! d1 is %d\n", (int)d1);
+ check = false;
+ }
+ d2 = 0;
+ wait(0.1);
+ if (d1 != 0) {
+ printf("MBED: Fourth check failed! d1 is %d\n", (int)d1);
+ check = false;
+ }
+
+ MBED_HOSTTEST_RESULT(check);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/dir/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/dir/main.cpp
new file mode 100644
index 0000000000..feb3241057
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/dir/main.cpp
@@ -0,0 +1,78 @@
+#include "mbed.h"
+
+void led_blink(PinName led) {
+ DigitalOut myled(led);
+ while (1) {
+ myled = !myled;
+ wait(1.0);
+ }
+}
+
+void notify_completion(bool success) {
+ if (success) {
+ printf("{success}\n");
+ } else {
+ printf("{failure}\n");
+ }
+
+ printf("{end}\n");
+ led_blink(success ? LED1 : LED4);
+}
+
+#define TEST_STRING "Hello World!"
+
+FILE* test_open(char* path, const char* mode) {
+ FILE *f;
+ f = fopen(path, mode);
+ if (f == NULL) {
+ printf("Error opening file\n");
+ notify_completion(false);
+ }
+
+ return f;
+}
+
+void test_write(FILE* f, const char* str) {
+ int n = fprintf(f, str);
+ if (n != strlen(str)) {
+ printf("Error writing file\n");
+ notify_completion(false);
+ }
+}
+
+void test_close(FILE* f) {
+ int rc = fclose(f);
+ if (rc != 0) {
+ printf("Error closing file\n");
+ notify_completion(false);
+ }
+}
+
+int main() {
+ LocalFileSystem local("local");
+
+ FILE *f;
+ char* str = TEST_STRING;
+ char* buffer = (char*) malloc(sizeof(unsigned char)*strlen(TEST_STRING));
+ int str_len = strlen(TEST_STRING);
+
+ printf("Write files\n");
+ char filename[32];
+ for (int i=0; i<10; i++) {
+ sprintf(filename, "/local/test_%d.txt", i);
+ printf("Creating file: %s\n", filename);
+ f = test_open(filename, "w");
+ test_write(f, str);
+ test_close(f);
+ }
+
+ printf("List files:\n");
+ DIR *d = opendir("/local");
+ struct dirent *p;
+ while((p = readdir(d)) != NULL) {
+ printf("%s\n", p->d_name);
+ }
+ closedir(d);
+
+ notify_completion(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/dir_sd/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/dir_sd/main.cpp
new file mode 100644
index 0000000000..f28c45fea3
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/dir_sd/main.cpp
@@ -0,0 +1,119 @@
+#include "mbed.h"
+#include "SDFileSystem.h"
+
+void led_blink(PinName led)
+{
+ DigitalOut myled(led);
+
+ while (1) {
+ myled = !myled;
+ wait(1.0);
+ }
+}
+
+void notify_completion(bool success)
+{
+ if (success)
+ printf("{success}\n");
+ else
+ printf("{failure}\n");
+
+ printf("{end}\n");
+ led_blink(success ? LED1 : LED4);
+}
+
+#define TEST_STRING "Hello World!"
+
+FILE *test_open(char *path, const char *mode)
+{
+ FILE *f;
+
+ f = fopen(path, mode);
+ if (f == NULL) {
+ printf("Error opening file\n");
+ notify_completion(false);
+ }
+
+ return f;
+}
+
+void test_write(FILE *f, const char *str)
+{
+ int n = fprintf(f, str);
+
+ if (n != strlen(str)) {
+ printf("Error writing file\n");
+ notify_completion(false);
+ }
+}
+
+void test_close(FILE *f)
+{
+ int rc = fclose(f);
+
+ if (rc != 0) {
+ printf("Error closing file\n");
+ notify_completion(false);
+ }
+}
+
+DigitalOut led2(LED2);
+
+int main()
+{
+#if defined(TARGET_KL25Z)
+ SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd");
+#elif defined(TARGET_nRF51822)
+//SDFileSystem sd(p20, p22, p25, p24, "sd");
+ SDFileSystem sd(p12, p13, p15, p14, "sd");
+#elif defined(TARGET_NUCLEO_F030R8) || \
+ defined(TARGET_NUCLEO_F070RB) || \
+ defined(TARGET_NUCLEO_F072RB) || \
+ defined(TARGET_NUCLEO_F091RC) || \
+ defined(TARGET_NUCLEO_F103RB) || \
+ defined(TARGET_NUCLEO_F302R8) || \
+ defined(TARGET_NUCLEO_F303RE) || \
+ defined(TARGET_NUCLEO_F334R8) || \
+ defined(TARGET_NUCLEO_F401RE) || \
+ defined(TARGET_NUCLEO_F411RE) || \
+ defined(TARGET_NUCLEO_L053R8) || \
+ defined(TARGET_NUCLEO_L073RZ) || \
+ defined(TARGET_NUCLEO_L152RE)
+ SDFileSystem sd(D11, D12, D13, D10, "sd");
+#elif defined(TARGET_LPC11U37H_401)
+ SDFileSystem sd(SDMOSI, SDMISO, SDSCLK, SDSSEL, "sd");
+#else
+ SDFileSystem sd(p11, p12, p13, p14, "sd");
+#endif
+ led2 = 1;
+ wait(0.5);
+ FILE *f;
+ char *str = TEST_STRING;
+ char *buffer = (char *)malloc(sizeof(unsigned char) * strlen(TEST_STRING));
+ int str_len = strlen(TEST_STRING);
+
+ printf("Write files\n");
+ char filename[32];
+ for (int i = 0; i < 10; i++) {
+ sprintf(filename, "/sd/test_%d.txt", i);
+ printf("Creating file: %s\n", filename);
+ f = test_open(filename, "w");
+ led2 = 0;
+ test_write(f, str);
+ test_close(f);
+ }
+
+ printf("List files:\n");
+ DIR *d = opendir("/sd");
+ if (d == NULL) {
+ printf("Error opening directory\n");
+ notify_completion(false);
+ }
+
+ struct dirent *p;
+ while ((p = readdir(d)) != NULL)
+ printf("%s\n", p->d_name);
+ closedir(d);
+
+ notify_completion(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/div/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/div/main.cpp
new file mode 100644
index 0000000000..951e5ab8c5
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/div/main.cpp
@@ -0,0 +1,44 @@
+#include <utility> // std::pair
+#include "mbed.h"
+#include "test_env.h"
+
+uint32_t test_64(uint64_t ticks) {
+ ticks >>= 3; // divide by 8
+ if (ticks > 0xFFFFFFFF) {
+ ticks /= 3;
+ } else {
+ ticks = (ticks * 0x55555556) >> 32; // divide by 3
+ }
+ return (uint32_t)(0xFFFFFFFF & ticks);
+}
+
+const char *result_str(bool result) {
+ return result ? "[OK]" : "[FAIL]";
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(Integer constant division);
+ MBED_HOSTTEST_START("MBED_26");
+
+ bool result = true;
+
+ { // 0xFFFFFFFF * 8 = 0x7fffffff8
+ std::pair<uint32_t, uint64_t> values = std::make_pair(0x55555555, 0x7FFFFFFF8);
+ uint32_t test_ret = test_64(values.second);
+ bool test_res = values.first == test_ret;
+ result = result && test_res;
+ printf("64bit: 0x7FFFFFFF8: expected 0x%lX got 0x%lX ... %s\r\n", values.first, test_ret, result_str(test_res));
+ }
+
+ { // 0xFFFFFFFF * 24 = 0x17ffffffe8
+ std::pair<uint32_t, uint64_t> values = std::make_pair(0xFFFFFFFF, 0x17FFFFFFE8);
+ uint32_t test_ret = test_64(values.second);
+ bool test_res = values.first == test_ret;
+ result = result && test_res;
+ printf("64bit: 0x17FFFFFFE8: expected 0x%lX got 0x%lX ... %s\r\n", values.first, test_ret, result_str(test_res));
+ }
+
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/echo/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/echo/main.cpp
new file mode 100644
index 0000000000..ccd882560c
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/echo/main.cpp
@@ -0,0 +1,26 @@
+#include "mbed.h"
+#include "test_env.h"
+
+#define TXPIN USBTX
+#define RXPIN USBRX
+
+
+namespace {
+ const int BUFFER_SIZE = 48;
+ char buffer[BUFFER_SIZE] = {0};
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(echo);
+ MBED_HOSTTEST_DESCRIPTION(Serial Echo at 115200);
+ MBED_HOSTTEST_START("MBED_A9");
+
+ Serial pc(TXPIN, RXPIN);
+ pc.baud(115200);
+
+ while (1) {
+ pc.gets(buffer, BUFFER_SIZE - 1);
+ pc.printf("%s", buffer);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/echo_flow_control/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/echo_flow_control/main.cpp
new file mode 100644
index 0000000000..327bca62d4
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/echo_flow_control/main.cpp
@@ -0,0 +1,34 @@
+#include "mbed.h"
+
+#if defined(TARGET_LPC1768)
+#define UART_TX p9
+#define UART_RX p10
+#define FLOW_CONTROL_RTS p30
+#define FLOW_CONTROL_CTS p29
+#define RTS_CHECK_PIN p8
+#else
+#error This test is not supported on this target
+#endif
+
+Serial pc(UART_TX, UART_RX);
+
+#ifdef RTS_CHECK_PIN
+InterruptIn in(RTS_CHECK_PIN);
+DigitalOut led(LED1);
+static void checker(void) {
+ led = !led;
+}
+#endif
+
+int main() {
+ char buf[256];
+
+ pc.set_flow_control(Serial::RTSCTS, FLOW_CONTROL_RTS, FLOW_CONTROL_CTS);
+#ifdef RTS_CHECK_PIN
+ in.fall(checker);
+#endif
+ while (1) {
+ pc.gets(buf, 256);
+ pc.printf("%s", buf);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/env/test_env.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/env/test_env.cpp
new file mode 100644
index 0000000000..a7d3185e54
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/env/test_env.cpp
@@ -0,0 +1,92 @@
+#include "test_env.h"
+
+// Const strings used in test_end
+const char* TEST_ENV_START = "start";
+const char* TEST_ENV_SUCCESS = "success";
+const char* TEST_ENV_FAILURE = "failure";
+const char* TEST_ENV_MEASURE = "measure";
+const char* TEST_ENV_END = "end";
+
+
+static void led_blink(PinName led, float delay)
+{
+ if (led != NC) {
+ DigitalOut myled(led);
+ while (1) {
+ myled = !myled;
+ wait(delay);
+ }
+ }
+ while(1);
+}
+
+void notify_start()
+{
+ printf("{{%s}}" NL, TEST_ENV_START);
+}
+
+void notify_performance_coefficient(const char* measurement_name, const int value)
+{
+ printf("{{%s;%s;%d}}" RCNL, TEST_ENV_MEASURE, measurement_name, value);
+}
+
+void notify_performance_coefficient(const char* measurement_name, const unsigned int value)
+{
+ printf("{{%s;%s;%u}}" RCNL, TEST_ENV_MEASURE, measurement_name, value);
+}
+
+void notify_performance_coefficient(const char* measurement_name, const double value)
+{
+ printf("{{%s;%s;%f}}" RCNL, TEST_ENV_MEASURE, measurement_name, value);
+}
+
+void notify_completion(bool success)
+{
+ printf("{{%s}}" NL "{{%s}}" NL, success ? TEST_ENV_SUCCESS : TEST_ENV_FAILURE, TEST_ENV_END);
+ led_blink(LED1, success ? 1.0 : 0.1);
+}
+
+bool notify_completion_str(bool success, char* buffer)
+{
+ bool result = false;
+ if (buffer) {
+ sprintf(buffer, "{{%s}}" NL "{{%s}}" NL, success ? TEST_ENV_SUCCESS : TEST_ENV_FAILURE, TEST_ENV_END);
+ result = true;
+ }
+ return result;
+}
+
+// Host test auto-detection API
+void notify_host_test_name(const char *host_test) {
+ if (host_test) {
+ printf("{{host_test_name;%s}}" NL, host_test);
+ }
+}
+
+void notify_timeout(int timeout) {
+ printf("{{timeout;%d}}" NL, timeout);
+}
+
+void notify_test_id(const char *test_id) {
+ if (test_id) {
+ printf("{{test_id;%s}}" NL, test_id);
+ }
+}
+
+void notify_test_description(const char *description) {
+ if (description) {
+ printf("{{description;%s}}" NL, description);
+ }
+}
+
+
+// -DMBED_BUILD_TIMESTAMP=1406208182.13
+unsigned int testenv_randseed()
+{
+ unsigned int seed = 0;
+#ifdef MBED_BUILD_TIMESTAMP
+ long long_seed = static_cast<long>(MBED_BUILD_TIMESTAMP);
+ seed = long_seed & 0xFFFFFFFF;
+#endif /* MBED_BUILD_TIMESTAMP */
+ return seed;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/env/test_env.h b/tool/mbed/mbed-sdk/libraries/tests/mbed/env/test_env.h
new file mode 100644
index 0000000000..bfb2c44d2d
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/env/test_env.h
@@ -0,0 +1,74 @@
+#ifndef TEST_ENV_H_
+#define TEST_ENV_H_
+
+#include <stdio.h>
+#include "mbed.h"
+
+#define NL "\n"
+#define RCNL "\r\n"
+
+// Const strings used in test_end
+extern const char* TEST_ENV_START;
+extern const char* TEST_ENV_SUCCESS;
+extern const char* TEST_ENV_FAILURE;
+extern const char* TEST_ENV_MEASURE;
+extern const char* TEST_ENV_END;
+
+// Test result related notification functions
+void notify_start();
+void notify_completion(bool success);
+bool notify_completion_str(bool success, char* buffer);
+void notify_performance_coefficient(const char* measurement_name, const int value);
+void notify_performance_coefficient(const char* measurement_name, const unsigned int value);
+void notify_performance_coefficient(const char* measurement_name, const double value);
+
+// Host test auto-detection API
+void notify_host_test_name(const char *host_test);
+void notify_timeout(int timeout);
+void notify_test_id(const char *test_id);
+void notify_test_description(const char *description);
+
+// Host test auto-detection API
+#define MBED_HOSTTEST_START(TESTID) notify_test_id(TESTID); notify_start()
+#define MBED_HOSTTEST_SELECT(NAME) notify_host_test_name(#NAME)
+#define MBED_HOSTTEST_TIMEOUT(SECONDS) notify_timeout(SECONDS)
+#define MBED_HOSTTEST_DESCRIPTION(DESC) notify_test_description(#DESC)
+#define MBED_HOSTTEST_RESULT(RESULT) notify_completion(RESULT)
+
+/**
+ Test auto-detection preamble example:
+ main() {
+ MBED_HOSTTEST_TIMEOUT(10);
+ MBED_HOSTTEST_SELECT( host_test );
+ MBED_HOSTTEST_DESCRIPTION(Hello World);
+ MBED_HOSTTEST_START("MBED_10");
+ // Proper 'host_test.py' should take over supervising of this test
+
+ // Test code
+ bool result = ...;
+
+ MBED_HOSTTEST_RESULT(result);
+ }
+*/
+
+
+// Test functionality useful during testing
+unsigned int testenv_randseed();
+
+// Macros, unit test like to provide basic comparisons
+#define TESTENV_STRCMP(GIVEN,EXPECTED) (strcmp(GIVEN,EXPECTED) == 0)
+
+// macros passed via test suite
+#ifndef TEST_SUITE_TARGET_NAME
+#define TEST_SUITE_TARGET_NAME "Unknown"
+#endif
+
+#ifndef TEST_SUITE_TEST_ID
+#define TEST_SUITE_TEST_ID "Unknown"
+#endif
+
+#ifndef TEST_SUITE_UUID
+#define TEST_SUITE_UUID "Unknown"
+#endif
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/file/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/file/main.cpp
new file mode 100644
index 0000000000..8f573f4e30
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/file/main.cpp
@@ -0,0 +1,78 @@
+#include "test_env.h"
+#include "semihost_api.h"
+
+Serial pc(USBTX, USBRX);
+
+#define FILENAME "/local/out.txt"
+#define TEST_STRING "Hello World!"
+
+FILE *test_open(const char *mode) {
+ FILE *f = fopen(FILENAME, mode);
+ if (f == NULL) {
+ printf("Error opening file"NL);
+ notify_completion(false);
+ }
+ return f;
+}
+
+void test_write(FILE *f, char *str, int str_len) {
+ int n = fprintf(f, str);
+
+ if (n != str_len) {
+ printf("Error writing file"NL);
+ notify_completion(false);
+ }
+}
+
+void test_read(FILE *f, char *str, int str_len) {
+ int n = fread(str, sizeof(unsigned char), str_len, f);
+
+ if (n != str_len) {
+ printf("Error reading file"NL);
+ notify_completion(false);
+ }
+}
+
+void test_close(FILE *f) {
+ int rc = fclose(f);
+
+ if (rc != 0) {
+ printf("Error closing file"NL);
+ notify_completion(false);
+ }
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(Semihost file system);
+ MBED_HOSTTEST_START("MBED_A2");
+
+ pc.printf("Test the Stream class\n");
+
+ printf("connected: %s\n", (semihost_connected()) ? ("Yes") : ("No"));
+
+ char mac[16];
+ mbed_mac_address(mac);
+ printf("mac address: %02x,%02x,%02x,%02x,%02x,%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
+
+ LocalFileSystem local("local");
+
+ FILE *f;
+ char *str = TEST_STRING;
+ char *buffer = (char *)malloc(sizeof(unsigned char) * strlen(TEST_STRING));
+ int str_len = strlen(TEST_STRING);
+
+ // Write
+ f = test_open("w");
+ test_write(f, str, str_len);
+ test_close(f);
+
+ // Read
+ f = test_open("r");
+ test_read(f, buffer, str_len);
+ test_close(f);
+
+ // Check the two strings are equal
+ MBED_HOSTTEST_RESULT((strncmp(buffer, str, str_len) == 0));
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextDisplay.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextDisplay.cpp
new file mode 100644
index 0000000000..0eb30f56cd
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextDisplay.cpp
@@ -0,0 +1,57 @@
+/* mbed TextDisplay Display Library Base Class
+ * Copyright (c) 2007-2009 sford
+ * Released under the MIT License: http://mbed.org/license/mit
+ */
+
+#include "TextDisplay.h"
+
+TextDisplay::TextDisplay(const char *name) : Stream(name) {
+ _row = 0;
+ _column = 0;
+}
+
+int TextDisplay::_putc(int value) {
+ if(value == '\n') {
+ _column = 0;
+ _row++;
+ if(_row >= rows()) {
+ _row = 0;
+ }
+ } else {
+ character(_column, _row, value);
+ _column++;
+ if(_column >= columns()) {
+ _column = 0;
+ _row++;
+ if(_row >= rows()) {
+ _row = 0;
+ }
+ }
+ }
+ return value;
+}
+
+// crude cls implementation, should generally be overwritten in derived class
+void TextDisplay::cls() {
+ locate(0, 0);
+ for(int i=0; i<columns()*rows(); i++) {
+ putc(' ');
+ }
+}
+
+void TextDisplay::locate(int column, int row) {
+ _column = column;
+ _row = row;
+}
+
+int TextDisplay::_getc() {
+ return -1;
+}
+
+void TextDisplay::foreground(int colour) {
+ _foreground = colour;
+}
+
+void TextDisplay::background(int colour) {
+ _background = colour;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextDisplay.h b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextDisplay.h
new file mode 100644
index 0000000000..51694ab1be
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextDisplay.h
@@ -0,0 +1,52 @@
+/* mbed TextDisplay Library Base Class
+ * Copyright (c) 2007-2009 sford
+ * Released under the MIT License: http://mbed.org/license/mit
+ *
+ * A common base class for Text displays
+ * To port a new display, derive from this class and implement
+ * the constructor (setup the display), character (put a character
+ * at a location), rows and columns (number of rows/cols) functions.
+ * Everything else (locate, printf, putc, cls) will come for free
+ *
+ * The model is the display will wrap at the right and bottom, so you can
+ * keep writing and will always get valid characters. The location is
+ * maintained internally to the class to make this easy
+ */
+
+#ifndef MBED_TEXTDISPLAY_H
+#define MBED_TEXTDISPLAY_H
+
+#include "mbed.h"
+
+class TextDisplay : public Stream {
+public:
+
+ // functions needing implementation in derived implementation class
+ TextDisplay(const char *name = NULL);
+ virtual void character(int column, int row, int c) = 0;
+ virtual int rows() = 0;
+ virtual int columns() = 0;
+
+ // functions that come for free, but can be overwritten
+ virtual void cls();
+ virtual void locate(int column, int row);
+ virtual void foreground(int colour);
+ virtual void background(int colour);
+ // putc (from Stream)
+ // printf (from Stream)
+
+protected:
+
+ virtual int _putc(int value);
+ virtual int _getc();
+
+ // character location
+ short _column;
+ short _row;
+
+ // colours
+ int _foreground;
+ int _background;
+};
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextLCD.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextLCD.cpp
new file mode 100644
index 0000000000..8e70c3c299
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextLCD.cpp
@@ -0,0 +1,98 @@
+/* mbed TextLCD Library
+ * Copyright (c) 2007-2009 sford
+ * Released under the MIT License: http://mbed.org/license/mit
+ */
+
+#include "TextLCD.h"
+#include "mbed.h"
+
+/*
+ * useful info found at http://www.a-netz.de/lcd.en.php
+ *
+ * Initialisation
+ * ==============
+ *
+ * After attaching the supply voltage/after a reset, the display needs to be brought in to a defined state
+ *
+ * - wait approximately 15 ms so the display is ready to execute commands
+ * - Execute the command 0x30 ("Display Settings") three times (wait 1,64ms after each command, the busy flag cannot be queried now).
+ * - The display is in 8 bit mode, so if you have only connected 4 data pins you should only transmit the higher nibble of each command.
+ * - If you want to use the 4 bit mode, now you can execute the command to switch over to this mode now.
+ * - Execute the "clear display" command
+ *
+ * Timing
+ * ======
+ *
+ * Nearly all commands transmitted to the display need 40us for execution.
+ * Exceptions are the commands "Clear Display and Reset" and "Set Cursor to Start Position"
+ * These commands need 1.64ms for execution. These timings are valid for all displays working with an
+ * internal clock of 250kHz. But I do not know any displays that use other frequencies. Any time you
+ * can use the busy flag to test if the display is ready to accept the next command.
+ *
+ * _e is kept high apart from calling clock
+ * _rw is kept 0 (write) apart from actions that uyse it differently
+ * _rs is set by the data/command writes
+ */
+
+TextLCD::TextLCD(PinName rs, PinName rw, PinName e, PinName d0, PinName d1,
+ PinName d2, PinName d3, const char *name) : TextDisplay(name), _rw(rw), _rs(rs),
+ _e(e), _d(d0, d1, d2, d3) {
+
+ _rw = 0;
+ _e = 1;
+ _rs = 0; // command mode
+
+ // Should theoretically wait 15ms, but most things will be powered up pre-reset
+ // so i'll disable that for the minute. If implemented, could wait 15ms post reset
+ // instead
+ // wait(0.015);
+
+ // send "Display Settings" 3 times (Only top nibble of 0x30 as we've got 4-bit bus)
+ for(int i=0; i<3; i++) {
+ writeByte(0x3);
+ wait(0.00164); // this command takes 1.64ms, so wait for it
+ }
+ writeByte(0x2); // 4-bit mode
+
+ writeCommand(0x28); // Function set 001 BW N F - -
+ writeCommand(0x0C);
+ writeCommand(0x6); // Cursor Direction and Display Shift : 0000 01 CD S (CD 0-left, 1-right S(hift) 0-no, 1-yes
+ cls();
+}
+
+void TextLCD::character(int column, int row, int c) {
+ int address = 0x80 + (row * 40) + column; // memory starts at 0x80, and is 40 chars long per row
+ writeCommand(address);
+ writeData(c);
+}
+
+int TextLCD::columns() {
+ return 16;
+}
+
+int TextLCD::rows() {
+ return 2;
+}
+
+void TextLCD::writeByte(int value) {
+ _d = value >> 4;
+ wait(0.000040f); // most instructions take 40us
+ _e = 0;
+ wait(0.000040f);
+ _e = 1;
+ _d = value >> 0;
+ wait(0.000040f);
+ _e = 0;
+ wait(0.000040f); // most instructions take 40us
+ _e = 1;
+}
+
+void TextLCD::writeCommand(int command) {
+ _rs = 0;
+ writeByte(command);
+}
+
+void TextLCD::writeData(int data) {
+ _rs = 1;
+ writeByte(data);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextLCD.h b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextLCD.h
new file mode 100644
index 0000000000..9a29792183
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/TextLCD.h
@@ -0,0 +1,30 @@
+/* mbed TextLCD Library Base Class
+ * Copyright (c) 2007-2009 sford
+ * Released under the MIT License: http://mbed.org/license/mit
+ */
+#include "TextDisplay.h"
+
+#ifndef MBED_TEXTLCD_H
+#define MBED_TEXTLCD_H
+
+class TextLCD : public TextDisplay {
+public:
+
+ TextLCD(PinName rs, PinName rw, PinName e, PinName d0, PinName d1, PinName d2, PinName d3, const char *name = NULL);
+ virtual void character(int column, int row, int c);
+ virtual int rows();
+ virtual int columns();
+
+ // locate, cls, putc, printf come from derived class
+
+protected:
+
+ void writeByte(int value);
+ void writeCommand(int command);
+ void writeData(int data);
+
+ DigitalOut _rw, _rs, _e;
+ BusOut _d;
+};
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/main.cpp
new file mode 100644
index 0000000000..145a684a7e
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/freopen/main.cpp
@@ -0,0 +1,30 @@
+#include "mbed.h"
+#include "TextLCD.h"
+
+int main() {
+ printf("printf to stdout\n");
+
+ // printf to specific peripherals
+ Serial pc(USBTX, USBRX);
+ pc.printf("Serial(USBTX, USBRX).printf\n");
+
+ TextLCD lcd(p14, p15, p16, p17, p18, p19, p20, "lcd"); // rs, rw, e, d0-d3, name
+ lcd.printf("TextLCD.printf\n");
+
+ // change stdout to file
+ LocalFileSystem local("local");
+ freopen("/local/output.txt", "w", stdout);
+ printf("printf redirected to LocalFileSystem\n");
+ fclose(stdout);
+
+ // change stdout to LCD
+ freopen("/lcd", "w", stdout);
+ printf("printf redirected to TextLCD\n");
+ fclose(stdout);
+
+ DigitalOut led(LED1);
+ while (true) {
+ led = !led;
+ wait(1);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/fs/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/fs/main.cpp
new file mode 100644
index 0000000000..2dc525cd08
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/fs/main.cpp
@@ -0,0 +1,32 @@
+#include "mbed.h"
+#include "rtos.h"
+#include "SDFileSystem.h"
+
+#define FILE_LOC "/sd/test.txt"
+
+Serial pc(USBTX, USBRX);
+Serial gps(p28, p27);
+Serial test(p9,p10);
+
+SDFileSystem sd(p11, p12, p13, p14, "sd");
+
+DigitalOut myled(LED1);
+DigitalOut sdled(LED2);
+
+void sd_thread(void const *argument) {
+ while (true) {
+ sdled = !sdled;
+ FILE *fp = NULL;
+ fp = fopen(FILE_LOC, "w");
+ if( fp != NULL ) fclose(fp);
+ Thread::wait(1000);
+ }
+}
+
+int main() {
+ Thread sdTask(sd_thread, NULL, osPriorityNormal, DEFAULT_STACK_SIZE * 2.25);
+ while (true) {
+ myled = !myled;
+ Thread::wait(1000);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/heap_and_stack/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/heap_and_stack/main.cpp
new file mode 100644
index 0000000000..a127efedb4
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/heap_and_stack/main.cpp
@@ -0,0 +1,76 @@
+#include "test_env.h"
+
+static char *initial_stack_p;
+static char *initial_heap_p;
+
+static char line[256];
+static unsigned int iterations = 0;
+
+void report_iterations(void) {
+ unsigned int tot = (0x100 * iterations)*2;
+ printf("\nAllocated (%d)Kb in (%u) iterations\n", tot/1024, iterations);
+#if !defined(TOOLCHAIN_GCC_CR)
+ // EA: This causes a crash when compiling with GCC_CR???
+ printf("%.2f\n", ((float)(tot)/(float)(initial_stack_p - initial_heap_p))*100.);
+#endif
+#ifdef TOOLCHAIN_ARM
+#ifndef __MICROLIB
+ __heapvalid((__heapprt) fprintf, stdout, 1);
+#endif
+#endif
+}
+
+void stack_test(char *latest_heap_pointer) {
+ char stack_line[256];
+ iterations++;
+
+ sprintf(stack_line, "\nstack pointer: %p", &stack_line[255]);
+ puts(stack_line);
+
+ char *heap_pointer = (char*)malloc(0x100);
+
+ if (heap_pointer == NULL) {
+ int diff = (&stack_line[255] - latest_heap_pointer);
+ if (diff > 0x200) {
+ sprintf(stack_line, "\n[WARNING] Malloc failed to allocate memory too soon. There are (0x%x) free bytes", diff);
+ report_iterations();
+ puts(stack_line);
+ } else {
+ puts("\n[SUCCESS] Stack/Heap collision detected");
+ report_iterations();
+ }
+ return;
+ } else {
+ heap_pointer += 0x100;
+ sprintf(line, "heap pointer: %p", heap_pointer);
+ puts(line);
+ }
+
+ if ((&stack_line[255]) > heap_pointer) {
+ stack_test(heap_pointer);
+ } else {
+ puts("\n[WARNING] The Stack/Heap collision was not detected");
+ report_iterations();
+ }
+}
+
+
+int main (void) {
+ char c;
+ initial_stack_p = &c;
+
+ initial_heap_p = (char*)malloc(1);
+ if (initial_heap_p == NULL) {
+ printf("Unable to malloc a single byte\n");
+ notify_completion(false);
+ }
+
+ printf("Initial stack/heap geometry:\n");
+ printf(" stack pointer:V %p\n", initial_stack_p);
+ printf(" heap pointer :^ %p\n", initial_heap_p);
+
+ initial_heap_p++;
+ stack_test(initial_heap_p);
+
+ notify_completion(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/hello/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/hello/main.cpp
new file mode 100644
index 0000000000..9e1e195e9a
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/hello/main.cpp
@@ -0,0 +1,13 @@
+#include "test_env.h"
+
+int main()
+{
+ MBED_HOSTTEST_TIMEOUT(5);
+ MBED_HOSTTEST_SELECT(hello_auto);
+ MBED_HOSTTEST_DESCRIPTION(Hello World);
+ MBED_HOSTTEST_START("MBED_10");
+
+ printf("Hello World\r\n");
+
+ while(1);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_MMA8451Q/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_MMA8451Q/main.cpp
new file mode 100644
index 0000000000..2e17aea5a4
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_MMA8451Q/main.cpp
@@ -0,0 +1,56 @@
+#include "mbed.h"
+#include "MMA8451Q.h"
+#include "test_env.h"
+
+#ifdef TARGET_KL05Z
+#define SDA PTB4
+#define SCL PTB3
+
+#elif TARGET_K20D50M
+#define SDA PTB1
+#define SCL PTB0
+
+#else
+#define SDA PTE25
+#define SCL PTE24
+#endif
+
+namespace {
+ const int MMA8451_I2C_ADDRESS = 0x1D << 1; // I2C bus address
+ const float MMA8451_DIGITAL_SENSITIVITY = 4096.0; // Counts/g
+}
+
+float calc_3d_vector_len(float x, float y, float z) {
+ return sqrt(x*x + y*y + z*z);
+}
+
+#define TEST_ITERATIONS 25
+#define TEST_ITERATIONS_SKIP 5
+#define MEASURE_DEVIATION_TOLERANCE 0.025 // 2.5%
+
+int main(void) {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(MMA8451Q accelerometer);
+ MBED_HOSTTEST_START("KL25Z_5");
+
+ DigitalOut led(LED_GREEN);
+ MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);
+ bool result = true;
+ printf("WHO AM I: 0x%2X\r\n\n", acc.getWhoAmI());
+
+ for (int i = 0; i < TEST_ITERATIONS; i++) {
+ if (i < TEST_ITERATIONS_SKIP) {
+ // Skip first 5 measurements
+ continue;
+ }
+ const float g_vect_len = calc_3d_vector_len(acc.getAccX(), acc.getAccY(), acc.getAccZ()) / MMA8451_DIGITAL_SENSITIVITY;
+ const float deviation = fabs(g_vect_len - 1.0);
+ const char *succes_str = deviation <= MEASURE_DEVIATION_TOLERANCE ? "[OK]" : "[FAIL]";
+ result = result && (deviation <= MEASURE_DEVIATION_TOLERANCE);
+ printf("X:% 6d Y:% 6d Z:% 5d GF:%0.3fg, dev:%0.3f ... %s\r\n", acc.getAccX(), acc.getAccY(), acc.getAccZ(), g_vect_len, deviation, succes_str);
+ wait(0.5);
+ led = !led;
+ }
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_SRF08/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_SRF08/main.cpp
new file mode 100644
index 0000000000..7923e926ff
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_SRF08/main.cpp
@@ -0,0 +1,15 @@
+#include "mbed.h"
+#include "SRF08.h"
+
+DigitalOut led(LED1);
+
+SRF08 srf08(p28, p27, 0xE0); // SDA, SCL pin and I2C address
+
+int main() {
+ printf("started\n");
+ while (1) {
+ printf("Measured range : %.2f cm\n",srf08.read());
+ wait(1.0);
+ led = !led;
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_TMP102/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_TMP102/main.cpp
new file mode 100644
index 0000000000..163ea88d2b
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_TMP102/main.cpp
@@ -0,0 +1,51 @@
+#include "test_env.h"
+#include "TMP102.h"
+
+#if defined(TARGET_KL25Z)
+TMP102 temperature(PTC9, PTC8, 0x90);
+
+#elif defined(TARGET_LPC812)
+TMP102 temperature(D10, D11, 0x90);
+
+#elif defined(TARGET_LPC4088)
+TMP102 temperature(p9, p10, 0x90);
+
+#elif defined(TARGET_LPC2368)
+TMP102 temperature(p28, p27, 0x90);
+
+#elif defined(TARGET_NUCLEO_F030R8) || \
+ defined(TARGET_NUCLEO_F070RB) || \
+ defined(TARGET_NUCLEO_F072RB) || \
+ defined(TARGET_NUCLEO_F091RC) || \
+ defined(TARGET_NUCLEO_F103RB) || \
+ defined(TARGET_NUCLEO_F302R8) || \
+ defined(TARGET_NUCLEO_F303RE) || \
+ defined(TARGET_NUCLEO_F334R8) || \
+ defined(TARGET_NUCLEO_F401RE) || \
+ defined(TARGET_NUCLEO_F411RE) || \
+ defined(TARGET_NUCLEO_L053R8) || \
+ defined(TARGET_NUCLEO_L073RZ) || \
+ defined(TARGET_NUCLEO_L152RE) || \
+ defined(TARGET_LPC824) || \
+ defined(TARGET_FF_ARDUINO) || \
+ defined(TARGET_MAXWSNENV)
+TMP102 temperature(I2C_SDA, I2C_SCL, 0x90);
+
+#else
+TMP102 temperature(p28, p27, 0x90);
+#endif
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(10);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(DigitalIn DigitalOut);
+ MBED_HOSTTEST_START("MBED_A4");
+
+ float t = temperature.read();
+
+ printf("TMP102: Temperature: %f\n\r", t);
+ // In our test environment (ARM office) we should get a temperature within
+ // the range ]15, 30[C
+ bool result = (t > 15.0) && (t < 30.0);
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_eeprom/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_eeprom/main.cpp
new file mode 100644
index 0000000000..e6fd0d0d75
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_eeprom/main.cpp
@@ -0,0 +1,155 @@
+#include "test_env.h"
+
+/******************************************************************************
+* This will test an I2C EEPROM connected to mbed by writing a predefined byte at
+* address 0 and then reading it back and comparing it with the known byte value a
+* number of times. This test was written specifically for reproducing the bug
+* reported here:
+*
+* https://mbed.org/forum/bugs-suggestions/topic/4128/
+*
+* Test configuration:
+*
+* set 'ntests' to the number of iterations
+* set 'i2c_speed_hz' to the desired speed of the I2C interface
+* set 'i2c_delay_us' to the delay that will be inserted between 'write' and
+* 'read' I2C operations (https://mbed.org/users/mbed_official/code/mbed/issues/1
+* for more details). '0' disables the delay.
+* define I2C_EEPROM_VERBOSE to get verbose output
+*
+* The test ran with a 24LC256 external EEPROM memory, but any I2C EEPROM memory
+* that uses two byte addresses should work.
+******************************************************************************/
+
+#if defined(TARGET_KL25Z)
+I2C i2c(PTC9, PTC8);
+
+#elif defined(TARGET_KL46Z)
+I2C i2c(PTC9, PTC8);
+
+#elif defined(TARGET_K64F)
+I2C i2c(PTE25, PTE24);
+
+#elif defined(TARGET_K22F)
+I2C i2c(PTE0, PTE1);
+
+#elif defined(TARGET_K20D50M)
+I2C i2c(PTB3, PTB2);
+
+#elif defined(TARGET_LPC812)
+I2C i2c(P0_10, P0_11);
+
+#elif defined(TARGET_LPC1549)
+I2C i2c(P0_23, P0_22);
+
+#elif defined(TARGET_LPC11U68)
+I2C i2c(SDA, SCL);
+
+#elif defined(TARGET_DELTA_DFCM_NNN40)
+I2C i2c(I2C_SDA0, I2C_SCL0);
+
+#elif defined(TARGET_NUCLEO_F030R8) || \
+ defined(TARGET_NUCLEO_F070RB) || \
+ defined(TARGET_NUCLEO_F072RB) || \
+ defined(TARGET_NUCLEO_F091RC) || \
+ defined(TARGET_NUCLEO_F103RB) || \
+ defined(TARGET_NUCLEO_F302R8) || \
+ defined(TARGET_NUCLEO_F303RE) || \
+ defined(TARGET_NUCLEO_F334R8) || \
+ defined(TARGET_NUCLEO_F401RE) || \
+ defined(TARGET_NUCLEO_F411RE) || \
+ defined(TARGET_NUCLEO_L053R8) || \
+ defined(TARGET_NUCLEO_L073RZ) || \
+ defined(TARGET_NUCLEO_L152RE) || \
+ defined(TARGET_FF_ARDUINO)
+I2C i2c(I2C_SDA, I2C_SCL);
+
+#else
+I2C i2c(p28, p27);
+#endif
+
+namespace {
+const int ntests = 10000;
+const int i2c_freq_hz = 400000;
+const int i2c_delay_us = 0;
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(I2C EEPROM read write test);
+ MBED_HOSTTEST_START("MBED_A19");
+
+ const int EEPROM_MEM_ADDR = 0xA0;
+ const char MARK = 0x66;
+ int fw = 0;
+ int fr = 0;
+ int fc = 0;
+ int i2c_stat = 0;
+ bool result = true;
+
+ i2c.frequency(i2c_freq_hz);
+ printf("I2C: I2C Frequency: %d Hz\r\n", i2c_freq_hz);
+
+ printf("I2C: Write 0x%2X at address 0x0000 test ... \r\n", MARK);
+ // Data write
+ {
+ char data[] = { 0, 0, MARK };
+ if ((i2c_stat = i2c.write(EEPROM_MEM_ADDR, data, sizeof(data))) != 0) {
+ printf("Unable to write data to EEPROM (i2c_stat = 0x%02X), aborting\r\n", i2c_stat);
+ notify_completion(false);
+ return 1;
+ }
+
+ // ACK polling (assumes write will be successful eventually)
+ while (i2c.write(EEPROM_MEM_ADDR, data, 0) != 0)
+ ;
+ }
+
+ printf("I2C: Read data from address 0x0000 test ... \r\n");
+ // Data read (actual test)
+ for (int i = 0; i < ntests; i++) {
+ // Write data to EEPROM memory
+ {
+ char data[] = { 0, 0 };
+ if ((i2c_stat = i2c.write(EEPROM_MEM_ADDR, data, 2, true)) != 0) {
+ printf("Test %d failed at write, i2c_stat is 0x%02X\r\n", i, i2c_stat);
+ fw++;
+ continue;
+ }
+ }
+
+ // us delay if specified
+ if (i2c_delay_us != 0)
+ wait_us(i2c_delay_us);
+
+ // Read data
+ {
+ char data[1] = { 0 };
+ if ((i2c_stat = i2c.read(EEPROM_MEM_ADDR, data, 1)) != 0) {
+ printf("Test %d failed at read, i2c_stat is 0x%02X\r\n", i, i2c_stat);
+ fr++;
+ continue;
+ }
+
+ if (data[0] != MARK) {
+ printf("Test %d failed at data match\r\n", i);
+ fc++;
+ }
+ }
+ }
+
+ result = (fw + fr + fc == 0);
+ printf("EEPROM: Test result ... [%s]\r\n", result ? "OK" : "FAIL");
+
+ if (!result) {
+ printf("Test Statistics:\r\n");
+ printf("\tTotal tests: %d\r\n", ntests);
+ printf("\tFailed at write: %d\r\n", fw);
+ printf("\tFailed at read: %d\r\n", fr);
+ printf("\tData mismatch: %d\r\n", fc);
+ printf("\tTotal failures: %d\r\n", fw + fr + fc);
+ }
+
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_eeprom_line/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_eeprom_line/main.cpp
new file mode 100644
index 0000000000..26459e874f
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_eeprom_line/main.cpp
@@ -0,0 +1,147 @@
+#include "test_env.h"
+
+/******************************************************************************
+* This will test an I2C EEPROM connected to mbed by writing a predefined byte at
+* address 0 and then reading it back and comparing it with the known byte value a
+* number of times. This test was written specifically for reproducing the bug
+* reported here:
+*
+* https://mbed.org/forum/bugs-suggestions/topic/4128/
+*
+* Test configuration:
+*
+* set 'ntests' to the number of iterations
+* set 'i2c_speed_hz' to the desired speed of the I2C interface
+* set 'i2c_delay_us' to the delay that will be inserted between 'write' and
+* 'read' I2C operations (https://mbed.org/users/mbed_official/code/mbed/issues/1
+* for more details). '0' disables the delay.
+* define I2C_EEPROM_VERBOSE to get verbose output
+*
+* The test ran with a 24LC256 external EEPROM memory, but any I2C EEPROM memory
+* that uses two byte addresses should work.
+******************************************************************************/
+
+// Test configuration block
+namespace {
+const int ntests = 1000;
+const int i2c_freq_hz = 400000;
+const int i2c_delay_us = 0;
+// const int EEPROM_24LC256_SIZE = (256 * 1024 / 8); // 256 kbit memory
+}
+
+// End of test configuration block
+
+#if defined(TARGET_KL25Z)
+I2C i2c(PTC9, PTC8);
+
+#elif defined(TARGET_KL46Z)
+I2C i2c(PTC9, PTC8);
+
+#elif defined(TARGET_K64F)
+I2C i2c(PTE25, PTE24);
+
+#elif defined(TARGET_K22F)
+I2C i2c(PTE0, PTE1);
+
+#elif defined(TARGET_K20D50M)
+I2C i2c(PTB3, PTB2);
+
+#elif defined(TARGET_LPC812)
+I2C i2c(P0_10, P0_11);
+
+#elif defined(TARGET_LPC1549)
+I2C i2c(P0_23, P0_22);
+
+#elif defined(TARGET_LPC11U68)
+I2C i2c(SDA, SCL);
+
+#elif defined(TARGET_DELTA_DFCM_NNN40)
+I2C i2c(I2C_SDA0, I2C_SCL0);
+
+#elif defined(TARGET_NUCLEO_F030R8) || \
+ defined(TARGET_NUCLEO_F070RB) || \
+ defined(TARGET_NUCLEO_F072RB) || \
+ defined(TARGET_NUCLEO_F091RC) || \
+ defined(TARGET_NUCLEO_F103RB) || \
+ defined(TARGET_NUCLEO_F302R8) || \
+ defined(TARGET_NUCLEO_F303RE) || \
+ defined(TARGET_NUCLEO_F334R8) || \
+ defined(TARGET_NUCLEO_F401RE) || \
+ defined(TARGET_NUCLEO_F411RE) || \
+ defined(TARGET_NUCLEO_L053R8) || \
+ defined(TARGET_NUCLEO_L073RZ) || \
+ defined(TARGET_NUCLEO_L152RE) || \
+ defined(TARGET_FF_ARDUINO)
+I2C i2c(I2C_SDA, I2C_SCL);
+
+#else
+I2C i2c(p28, p27);
+#endif
+
+#define PATTERN_MASK 0x66, ~0x66, 0x00, 0xFF, 0xA5, 0x5A, 0xF0, 0x0F
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(I2C EEPROM line read write test);
+ MBED_HOSTTEST_START("MBED_A25");
+
+ const int EEPROM_MEM_ADDR = 0xA0;
+ bool result = true;
+
+ i2c.frequency(i2c_freq_hz);
+ printf("I2C: I2C Frequency: %d Hz\r\n", i2c_freq_hz);
+
+ printf("I2C: Lines pattern write test ... ");
+ int write_errors = 0;
+ for (int i = 0; i < ntests; i++) {
+ char data[] = { 0 /*MSB*/, 0 /*LSB*/, PATTERN_MASK };
+ const int addr = i * 8; // 8 bytes of data in data array
+ data[0] = ((0xFF00 & addr) >> 8) & 0x00FF;
+ data[1] = (addr & 0x00FF);
+
+ if (i2c.write(EEPROM_MEM_ADDR, data, sizeof(data)) != 0) {
+ write_errors++;
+ }
+
+ while (i2c.write(EEPROM_MEM_ADDR, NULL, 0)) ; // wait to complete
+
+ // us delay if specified
+ if (i2c_delay_us != 0) {
+ wait_us(i2c_delay_us);
+ }
+ }
+
+ printf("[%s]\r\n", write_errors ? "FAIL" : "OK");
+ printf("I2C: Write errors: %d ... [%s]\r\n", write_errors, write_errors ? "FAIL" : "OK");
+
+ printf("I2C: Lines pattern read test ... ");
+ int read_errors = 0;
+ int pattern_errors = 0;
+ for (int i = 0; i < ntests; i++) {
+ char data[8] = { 0 }; // General puspose buffer
+ const int addr = i * 8; // 8 bytes of data in data array
+ data[0] = ((0xFF00 & addr) >> 8) & 0x00FF;
+ data[1] = (addr & 0x00FF);
+
+ // Set address for read
+ if (i2c.write(EEPROM_MEM_ADDR, data, 2, true) != 0) {
+ }
+
+ if (i2c.read(EEPROM_MEM_ADDR, data, 8) != 0) {
+ read_errors++;
+ }
+
+ static char pattern[] = { PATTERN_MASK };
+ if (memcmp(pattern, data, sizeof(data))) {
+ pattern_errors++;
+ }
+ }
+
+ printf("[%s]\r\n", read_errors ? "FAIL" : "OK");
+ printf("I2C: Read errors: %d/%d ... [%s]\r\n", read_errors, ntests, read_errors ? "FAIL" : "OK");
+ printf("EEPROM: Pattern match errors: %d/%d ... [%s]\r\n", pattern_errors, ntests, pattern_errors ? "FAIL" : "OK");
+
+ result = write_errors == 0 && read_errors == 0;
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_master/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_master/main.cpp
new file mode 100644
index 0000000000..392be3218c
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_master/main.cpp
@@ -0,0 +1,45 @@
+#include "mbed.h"
+#include "test_env.h"
+
+#define SIZE (10)
+#define ADDR (0x90)
+
+#if defined(TARGET_KL25Z)
+I2C i2c(PTE0, PTE1);
+#elif defined(TARGET_nRF51822)
+I2C i2c(p22,p20);
+#elif defined(TARGET_FF_ARDUINO) || defined(TARGET_MAXWSNENV)
+I2C i2c(I2C_SDA, I2C_SCL);
+#else
+I2C i2c(p28, p27);
+#endif
+
+int main() {
+ bool success = true;
+ char buf[] = {3, 2, 1, 4, 5, 6, 7, 8, 9, 10};
+ char res[SIZE];
+
+ i2c.write(ADDR, buf, SIZE);
+ i2c.read(ADDR, res, SIZE);
+
+ // here should be buf[all]++
+ i2c.write(ADDR, res, SIZE);
+ i2c.read(ADDR, res, SIZE);
+
+ // here should be buf[all]+=2
+ i2c.write(ADDR, res, SIZE);
+ i2c.write(ADDR, res, SIZE);
+
+ // here should be buf[all]+=3
+ i2c.read(ADDR, res, SIZE);
+ i2c.read(ADDR, res, SIZE);
+
+ for(int i = 0; i < SIZE; i++) {
+ if (res[i] != (buf[i] + 3)) {
+ success = false;
+ break;
+ }
+ }
+
+ notify_completion(success);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_master_slave/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_master_slave/main.cpp
new file mode 100644
index 0000000000..f94b59f3db
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_master_slave/main.cpp
@@ -0,0 +1,60 @@
+#include "mbed.h"
+#include "test_env.h"
+#include <stdio.h>
+
+#define ADDR (0xA0)
+#define FREQ 100000
+
+// ********************************************************
+// This tests data transfer between two I2C interfaces on
+// the same chip, one configured as master, the other as
+// slave. Works on the LPC1768 mbed.
+//
+// Wiring:
+// p28 <-> p9
+// p27 <-> p10
+// pull-up resistors on both lines
+// ********************************************************
+
+I2CSlave slave(p9, p10);
+I2C master(p28, p27);
+
+int main()
+{
+ char sent = 'T', received;
+
+ master.frequency(FREQ);
+ slave.frequency(FREQ);
+ slave.address(ADDR);
+
+ // First transfer: master to slave
+ master.start();
+ master.write(ADDR);
+ master.write(sent);
+ if(slave.receive() != I2CSlave::WriteAddressed)
+ {
+ notify_completion(false);
+ return 1;
+ }
+ slave.read(&received, 1);
+ if(sent != received)
+ {
+ notify_completion(false);
+ return 1;
+ }
+ master.stop();
+
+ // Second transfer: slave to master
+ master.start();
+ master.write(ADDR | 1);
+ if(slave.receive() != I2CSlave::ReadAddressed)
+ {
+ notify_completion(false);
+ return 1;
+ }
+ slave.write(received);
+ received = master.read(0);
+ slave.stop();
+ notify_completion(received == sent);
+}
+
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_mma7660/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_mma7660/main.cpp
new file mode 100644
index 0000000000..54b1687aa9
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_mma7660/main.cpp
@@ -0,0 +1,26 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "MMA7660.h"
+
+#if defined(TARGET_FF_ARDUINO)
+MMA7660 MMA(I2C_SDA, I2C_SCL);
+#else
+MMA7660 MMA(p28, p27);
+#endif
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(I2C MMA7660 accelerometer);
+ MBED_HOSTTEST_START("MBED_A13");
+
+ if (!MMA.testConnection())
+ MBED_HOSTTEST_RESULT(false);
+
+ for(int i = 0; i < 5; i++) {
+ printf("x: %f, y: %f, z: %f\r\n", MMA.x(), MMA.y(), MMA.z());
+ wait(0.2);
+ }
+
+ MBED_HOSTTEST_RESULT(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_slave/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_slave/main.cpp
new file mode 100644
index 0000000000..1b24b3cd4b
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/i2c_slave/main.cpp
@@ -0,0 +1,36 @@
+#include "mbed.h"
+#include "test_env.h"
+
+#define SIZE (10)
+#define ADDR (0x90)
+
+#if defined(TARGET_KL25Z)
+I2CSlave slave(PTE0, PTE1);
+#elif defined(TARGET_LPC4088)
+I2CSlave slave(p9, p10);
+#else
+I2CSlave slave(p28, p27);
+#endif
+
+ int main() {
+ char buf[SIZE];
+
+ slave.address(ADDR);
+
+ while (1) {
+ int i = slave.receive();
+ switch (i) {
+ case I2CSlave::ReadAddressed:
+ slave.write(buf, SIZE);
+ for(int i = 0; i < SIZE; i++){
+ }
+ break;
+ case I2CSlave::WriteAddressed:
+ slave.read(buf, SIZE);
+ for(int i = 0; i < SIZE; i++){
+ buf[i]++;
+ }
+ break;
+ }
+ }
+ }
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/interrupt_chaining/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/interrupt_chaining/main.cpp
new file mode 100644
index 0000000000..65bc3ef699
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/interrupt_chaining/main.cpp
@@ -0,0 +1,111 @@
+#include "mbed.h"
+#include "InterruptManager.h"
+#include "cmsis.h"
+#include "test_env.h"
+
+#if defined(TARGET_LPC1768) || defined(TARGET_LPC4088)
+#define TIMER_IRQ TIMER3_IRQn
+#elif defined(TARGET_LPC11U24) || defined(TARGET_LPC1114)
+#define TIMER_IRQ TIMER_32_1_IRQn
+#elif defined(TARGET_KL25Z)
+#define TIMER_IRQ LPTimer_IRQn
+#elif defined(TARGET_LPC2368)
+#define TIMER_IRQ TIMER3_IRQn
+#else
+#error This test can't run on this target.
+#endif
+
+Serial pc(USBTX, USBRX);
+
+Ticker flipper_1;
+DigitalOut led1(LED1);
+int led1_state = 0;
+void flip_1() {
+ if (led1_state) {
+ led1 = 0; led1_state = 0;
+ } else {
+ led1 = 1; led1_state = 1;
+ }
+}
+
+class Sender {
+public:
+ Sender(Serial&s, char c): _s(s), _c(c) {}
+ void send() { _s.putc(_c); }
+private:
+ Serial& _s;
+ char _c;
+};
+Ticker flipper_2;
+Sender s1(pc, '1');
+Sender s2(pc, '2');
+
+#if defined(TARGET_LPC1768) || defined(TARGET_LPC11U24) || defined(TARGET_LPC4088) || defined(TARGET_LPC2368) || defined(TARGET_LPC1114)
+# define LED_NAME LED2
+#elif defined(TARGET_KL05Z)
+# define LED_NAME LED2
+#else
+# define LED_NAME PTE31
+#endif
+
+DigitalOut led2(LED_NAME);
+int led2_state = 0;
+void flip_2() {
+ if (led2_state) {
+ led2 = 0; led2_state = 0;
+ } else {
+ led2 = 1; led2_state = 1;
+ }
+}
+
+void testme(void) {
+ pc.putc('!');
+}
+
+class Counter {
+public:
+ void inc(void) {
+ count ++;
+ }
+ int get_count(void) const {
+ return count;
+ }
+private:
+ static int count;
+};
+
+int Counter::count = 0;
+
+int main() {
+ led1 = 0;
+ led2 = 0;
+ uint32_t initial_handler, final_handler;
+ Counter c;
+
+ // Test chaining inside Serial class
+ flipper_1.attach(&flip_1, 1.0); // the address of the function to be attached (flip) and the interval (1 second)
+ flipper_2.attach(&flip_2, 2.0); // the address of the function to be attached (flip) and the interval (2 seconds)
+
+ // Test global chaining (InterruptManager)
+ printf("Handler initially: %08X\n", initial_handler = NVIC_GetVector(TIMER_IRQ));
+ InterruptManager *pManager = InterruptManager::get();
+ pFunctionPointer_t ptm = pManager->add_handler(testme, TIMER_IRQ);
+ pFunctionPointer_t pinc = pManager->add_handler_front(&c, &Counter::inc, TIMER_IRQ);
+ printf("Handler after calling InterruptManager: %08X\n", NVIC_GetVector(TIMER_IRQ));
+
+ wait(4.0);
+
+ if (!pManager->remove_handler(ptm, TIMER_IRQ) || !pManager->remove_handler(pinc, TIMER_IRQ)) {
+ printf ("remove handler failed.\n");
+ notify_completion(false);
+ }
+ printf("Interrupt handler calls: %d\n", c.get_count());
+ printf("Handler after removing previously added functions: %08X\n", final_handler = NVIC_GetVector(TIMER_IRQ));
+
+ if (initial_handler != final_handler) {
+ printf( "InteruptManager test failed.\n");
+ notify_completion(false);
+ }
+
+ while(1);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/interruptin/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/interruptin/main.cpp
new file mode 100644
index 0000000000..53da68f5b6
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/interruptin/main.cpp
@@ -0,0 +1,146 @@
+#include "test_env.h"
+
+DigitalOut myled(LED1);
+DigitalOut led2(LED2);
+
+volatile int checks = 0;
+void in_handler() {
+ checks++;
+ led2 = !led2;
+}
+
+#if defined(TARGET_KL25Z)
+#define PIN_OUT PTC6
+#define PIN_IN PTA5
+
+#elif defined(TARGET_KL05Z)
+#define PIN_OUT PTB11
+#define PIN_IN PTB1
+
+#elif defined(TARGET_LPC812)
+#define PIN_OUT D10
+#define PIN_IN D11
+
+#elif defined(TARGET_LPC1114)
+#define PIN_OUT dp1
+#define PIN_IN dp2
+
+#elif defined(TARGET_LPC1549)
+// TARGET_FF_ARDUINO cannot be used, because D0 is used as USBRX (USB serial
+// port pin), D1 is used as USBTX
+#define PIN_OUT D2
+#define PIN_IN D7
+
+#elif defined(TARGET_LPC4088)
+#define PIN_IN (p11)
+#define PIN_OUT (p12)
+
+#elif defined(TARGET_NUCLEO_F030R8) || \
+ defined(TARGET_NUCLEO_F070RB) || \
+ defined(TARGET_NUCLEO_F072RB) || \
+ defined(TARGET_NUCLEO_F091RC) || \
+ defined(TARGET_NUCLEO_F103RB) || \
+ defined(TARGET_NUCLEO_F302R8) || \
+ defined(TARGET_NUCLEO_F303RE) || \
+ defined(TARGET_NUCLEO_F334R8) || \
+ defined(TARGET_NUCLEO_F401RE) || \
+ defined(TARGET_NUCLEO_F411RE) || \
+ defined(TARGET_NUCLEO_L053R8) || \
+ defined(TARGET_NUCLEO_L073RZ) || \
+ defined(TARGET_NUCLEO_L152RE)
+#define PIN_IN PB_8
+#define PIN_OUT PC_7
+
+#elif defined(TARGET_ARCH_MAX) || \
+ defined(TARGET_DISCO_F407VG) || \
+ defined(TARGET_DISCO_F429ZI)|| \
+ defined(TARGET_DISCO_F401VC)
+#define PIN_OUT PC_12
+#define PIN_IN PD_0
+
+#elif defined(TARGET_RZ_A1H)
+#define PIN_OUT D1
+#define PIN_IN D5
+
+#elif defined(TARGET_FF_ARDUINO)
+#define PIN_OUT D0
+#define PIN_IN D7
+
+#elif defined(TARGET_MAXWSNENV)
+#define PIN_OUT P0_0
+#define PIN_IN P0_1
+
+#elif defined(TARGET_MAX32600MBED)
+#define PIN_OUT P1_0
+#define PIN_IN P4_7
+
+#else
+#define PIN_IN (p5)
+#define PIN_OUT (p25)
+
+#endif
+
+DigitalOut out(PIN_OUT);
+InterruptIn in(PIN_IN);
+
+#define IN_OUT_SET out = 1; myled = 1;
+#define IN_OUT_CLEAR out = 0; myled = 0;
+
+void flipper() {
+ for (int i = 0; i < 5; i++) {
+ IN_OUT_SET;
+ wait(0.2);
+ IN_OUT_CLEAR;
+ wait(0.2);
+ }
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(InterruptIn);
+ MBED_HOSTTEST_START("MBED_A7");
+
+ IN_OUT_CLEAR;
+ //Test falling edges first
+ in.rise(NULL);
+ in.fall(in_handler);
+ flipper();
+
+ if(checks != 5) {
+ printf("MBED: falling edges test failed: %d\r\n",checks);
+ MBED_HOSTTEST_RESULT(false);
+ }
+
+ //Now test rising edges
+ in.rise(in_handler);
+ in.fall(NULL);
+ flipper();
+
+ if (checks != 10) {
+ printf("MBED: raising edges test failed: %d\r\n", checks);
+ MBED_HOSTTEST_RESULT(false);
+ }
+
+ //Now test switch off edge detection
+ in.rise(NULL);
+ in.fall(NULL);
+ flipper();
+
+ if (checks != 10) {
+ printf("MBED: edge detection switch off test failed: %d\r\n", checks);
+ MBED_HOSTTEST_RESULT(false);
+ }
+
+ //Finally test both
+ in.rise(in_handler);
+ in.fall(in_handler);
+ flipper();
+
+ if (checks != 20) {
+ printf("MBED: Simultaneous rising and falling edges failed: %d\r\n", checks);
+ MBED_HOSTTEST_RESULT(false);
+ }
+
+ MBED_HOSTTEST_RESULT(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/interruptin_2/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/interruptin_2/main.cpp
new file mode 100644
index 0000000000..0f12f6e976
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/interruptin_2/main.cpp
@@ -0,0 +1,71 @@
+#include "mbed.h"
+
+#if defined(TARGET_LPC4088)
+InterruptIn button(p18);
+InterruptIn button1(p17);
+InterruptIn button2(p16);
+InterruptIn button3(p15);
+InterruptIn button4(p14);
+InterruptIn button5(p13);
+InterruptIn button6(p12);
+InterruptIn button7(p11);
+InterruptIn button8(p10);
+InterruptIn button9(p9);
+DigitalOut led(LED1);
+DigitalOut flash(LED4);
+
+#elif defined(TARGET_LPC1114)
+InterruptIn button(p30); // SW2 (User switch)
+InterruptIn button1(p5);
+InterruptIn button2(p6);
+InterruptIn button3(p7);
+InterruptIn button4(p9);
+InterruptIn button5(p10);
+InterruptIn button6(p12);
+InterruptIn button7(p13);
+InterruptIn button8(p14);
+InterruptIn button9(p15);
+DigitalOut led(LED1);
+DigitalOut flash(LED2);
+
+#else
+InterruptIn button(p30);
+InterruptIn button1(p29);
+InterruptIn button2(p28);
+InterruptIn button3(p27);
+InterruptIn button4(p26);
+InterruptIn button5(p25);
+InterruptIn button6(p24);
+InterruptIn button7(p23);
+InterruptIn button8(p22);
+InterruptIn button9(p21);
+DigitalOut led(LED1);
+DigitalOut flash(LED4);
+#endif
+
+void flip() {
+ led = !led;
+}
+
+int main() {
+ flash = 0;
+ led = 0;
+#if defined(TARGET_LPC1114)
+ button.mode(PullUp);
+#endif
+ button.rise(&flip); // attach the address of the flip function to the rising edge
+ button1.rise(&flip);
+ button2.rise(&flip);
+ button3.rise(&flip);
+ button4.rise(&flip);
+ button5.rise(&flip);
+ button6.rise(&flip);
+ button7.rise(&flip);
+ button8.rise(&flip);
+ button9.rise(&flip);
+
+ while(1) { // wait around, interrupts will interrupt this!
+ flash = !flash;
+ wait(0.25);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/modserial/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/modserial/main.cpp
new file mode 100644
index 0000000000..7db8c6876d
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/modserial/main.cpp
@@ -0,0 +1,115 @@
+/*
+ * To run this test program, link p9 to p10 so the Serial loops
+ * back and receives characters it sends.
+ */
+#include "mbed.h"
+#include "MODSERIAL.h"
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+
+MODSERIAL pc(USBTX, USBRX);
+
+/*
+ * As experiement, you can define MODSERIAL as show here and see what
+ * effects it has on the LEDs.
+ *
+ * MODSERIAL uart(TX_PIN, RX_PIN, 512);
+ * With this, the 512 characters sent can straight into the buffer
+ * vary quickly. This means LED1 is only on briefly as the TX buffer
+ * fills.
+ *
+ * MODSERIAL uart(TX_PIN, RX_PIN, 32);
+ * With this, the buffer is smaller than the default 256 bytes and
+ * therefore LED1 stays on much longer while the system waits for
+ * room in the TX buffer.
+ */
+MODSERIAL uart(p9, p10);
+
+// This function is called when a character goes from the TX buffer
+// to the Uart THR FIFO register.
+void txCallback(MODSERIAL_IRQ_INFO *q) {
+ led2 = !led2;
+}
+
+// This function is called when TX buffer goes empty
+void txEmpty(MODSERIAL_IRQ_INFO *q) {
+ led2 = 0;
+ pc.puts(" Done. ");
+}
+
+// This function is called when a character goes into the RX buffer.
+void rxCallback(MODSERIAL_IRQ_INFO *q) {
+ led3 = !led3;
+ pc.putc(uart.getc());
+}
+
+int main() {
+ int c = 'A';
+
+ // Ensure the baud rate for the PC "USB" serial is much
+ // higher than "uart" baud rate below. (default: 9600)
+ // pc.baud(9600);
+
+ // Use a deliberatly slow baud to fill up the TX buffer
+ uart.baud(1200);
+
+ uart.attach(&txCallback, MODSERIAL::ModTxIrq);
+ uart.attach(&rxCallback, MODSERIAL::ModRxIrq);
+ uart.attach(&txEmpty, MODSERIAL::ModTxEmpty);
+
+ // Loop sending characters. We send 512
+ // which is twice the default TX/RX buffer size.
+
+ led1 = 1; // Show start of sending with LED1.
+
+ for (int loop = 0; loop < 512; loop++) {
+ uart.printf("%c", c);
+ c++;
+ if (c > 'Z') c = 'A';
+ }
+
+ led1 = 0; // Show the end of sending by switching off LED1.
+
+ // End program. Flash LED4. Notice how LED 2 and 3 continue
+ // to flash for a short period while the interrupt system
+ // continues to send the characters left in the TX buffer.
+
+ while(1) {
+ led4 = !led4;
+ wait(0.25);
+ }
+}
+
+/*
+ * Notes. Here is the sort of output you can expect on your PC/Mac/Linux host
+ * machine that is connected to the "pc" USB serial port.
+ *
+ * ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUV
+ * WXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQR
+ * STUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMN
+ * OPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ
+ * KLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF
+ * GHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZAB
+ * CDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQ Done. R
+ *
+ * Of interest is that last "R" character after the system has said "Done."
+ * This comes from the fact that the TxEmpty callback is made when the TX buffer
+ * becomes empty. MODSERIAL makes use of the fact that the Uarts built into the
+ * LPC17xx device use a 16 byte FIFO on both RX and TX channels. This means that
+ * when the TxEmpty callback is made, the TX buffer is empty, but that just means
+ * the "last few characters" were written to the TX FIFO. So although the TX
+ * buffer has gone empty, the Uart's transmit system is still sending any remaining
+ * characters from it's TX FIFO. If you want to be truely sure all the characters
+ * you have sent have left the Mbed then call txIsBusy(); This function will
+ * return true if characters are still being sent. If it returns false after
+ * the Tx buffer is empty then all your characters have been sent.
+ *
+ * In a similar way, when characters are received into the RX FIFO, the entire
+ * FIFO contents is moved to the RX buffer, assuming there is room left in the
+ * RX buffer. If there is not, any remaining characters are left in the RX FIFO
+ * and will be moved to the RX buffer on the next interrupt or when the running
+ * program removes a character(s) from the RX buffer with the getc() method.
+ */
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/pin_toggling/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/pin_toggling/main.cpp
new file mode 100644
index 0000000000..5eb809a2ff
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/pin_toggling/main.cpp
@@ -0,0 +1,10 @@
+#include "mbed.h"
+
+DigitalOut out(p5);
+
+int main() {
+ while (true) {
+ out = 1;
+ out = 0;
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/portinout/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/portinout/main.cpp
new file mode 100644
index 0000000000..22f2c66b3b
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/portinout/main.cpp
@@ -0,0 +1,139 @@
+#include "test_env.h"
+
+#if defined(TARGET_K64F)
+#define P1_1 (1 << 16)
+#define P1_2 (1 << 17)
+#define PORT_1 PortC
+
+#define P2_1 (1 << 2)
+#define P2_2 (1 << 3)
+#define PORT_2 PortC
+
+#elif defined(TARGET_LPC11U24)
+#define P1_1 (1 << 9) // p0.9
+#define P1_2 (1 << 8) // p0.8
+#define PORT_1 Port0
+
+#define P2_1 (1 << 24) // p1.24
+#define P2_2 (1 << 25) // p1.25
+#define PORT_2 Port1
+
+#elif defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
+#define P1_1 (1 << 9) // p0.9 -> p5
+#define P1_2 (1 << 8) // p0.8 -> p6
+#define PORT_1 Port0
+
+#define P2_1 (1 << 1) // p2.1 -> p25
+#define P2_2 (1 << 0) // p2.0 -> p26
+#define PORT_2 Port2
+
+#elif defined(TARGET_LPC4088)
+#define P1_1 (1 << 7) // p0.7 -> p13
+#define P1_2 (1 << 6) // p0.6 -> p14
+#define PORT_1 Port0
+
+#define P2_1 (1 << 2) // p1.2 -> p30
+#define P2_2 (1 << 3) // p1.3 -> p29
+#define PORT_2 Port1
+
+#elif defined(TARGET_LPC1114)
+#define P1_1 (1 << 9) // p0.9
+#define P1_2 (1 << 8) // p0.8
+#define PORT_1 Port0
+
+#define P2_1 (1 << 1) // p1.1
+#define P2_2 (1 << 0) // p1.0
+#define PORT_2 Port1
+
+#elif defined(TARGET_KL25Z)
+#define P1_1 (1 << 4) // PTA4
+#define P1_2 (1 << 5) // PTA5
+#define PORT_1 PortA
+
+#define P2_1 (1 << 5) // PTC5
+#define P2_2 (1 << 6) // PTC6
+#define PORT_2 PortC
+
+#elif defined(TARGET_nRF51822)
+#define P1_1 (1 << 4) // p4
+#define P1_2 (1 << 5) // p5
+#define PORT_1 Port0
+
+#define P2_1 (1 << 24) // p24
+#define P2_2 (1 << 25) // p25
+#define PORT_2 Port0
+
+#elif defined(TARGET_MAXWSNENV)
+#define P1_1 (1 << 0)
+#define P1_2 (1 << 1)
+#define PORT_1 Port0
+
+#define P2_1 (1 << 0)
+#define P2_2 (1 << 1)
+#define PORT_2 Port1
+
+#elif defined(TARGET_MAX32600MBED)
+#define P1_1 (1 << 0) // P1_0
+#define P1_2 (1 << 1) // P1_1
+#define PORT_1 Port1
+
+#define P2_1 (1 << 7) // P4_7
+#define P2_2 (1 << 6) // P4_6
+#define PORT_2 Port4
+
+#elif defined(TARGET_NUCLEO_F030R8) || \
+ defined(TARGET_NUCLEO_F070RB) || \
+ defined(TARGET_NUCLEO_F072RB) || \
+ defined(TARGET_NUCLEO_F091RC) || \
+ defined(TARGET_NUCLEO_F103RB) || \
+ defined(TARGET_NUCLEO_F302R8) || \
+ defined(TARGET_NUCLEO_F303RE) || \
+ defined(TARGET_NUCLEO_F334R8) || \
+ defined(TARGET_NUCLEO_F401RE) || \
+ defined(TARGET_NUCLEO_F411RE) || \
+ defined(TARGET_NUCLEO_L053R8) || \
+ defined(TARGET_NUCLEO_L073RZ) || \
+ defined(TARGET_NUCLEO_L152RE)
+#define P1_1 (1 << 6) // PC_6
+#define P1_2 (1 << 5) // PC_5
+#define PORT_1 PortC
+
+#define P2_1 (1 << 8) // PB_8
+#define P2_2 (1 << 9) // PB_9
+#define PORT_2 PortB
+#endif
+
+#define MASK_1 (P1_1 | P1_2)
+#define MASK_2 (P2_1 | P2_2)
+
+PortInOut port1(PORT_1, MASK_1);
+PortInOut port2(PORT_2, MASK_2);
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(PortInOut);
+ MBED_HOSTTEST_START("MBED_A11");
+
+ bool check = true;
+
+ port1.output();
+ port2.input();
+
+ port1 = MASK_1; wait(0.1);
+ if (port2 != MASK_2) check = false;
+
+ port1 = 0; wait(0.1);
+ if (port2 != 0) check = false;
+
+ port1.input();
+ port2.output();
+
+ port2 = MASK_2; wait(0.1);
+ if (port1 != MASK_1) check = false;
+
+ port2 = 0; wait(0.1);
+ if (port1 != 0) check = false;
+
+ MBED_HOSTTEST_RESULT(check);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/portout/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/portout/main.cpp
new file mode 100644
index 0000000000..cf8f4d2ba6
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/portout/main.cpp
@@ -0,0 +1,47 @@
+#include "mbed.h"
+
+# if defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC4088)
+# define LED_PORT Port1
+# define LED1 (1 << 18) // P1.18
+# define LED2 (1 << 20) // P1.20
+# define LED3 (1 << 21) // P1.21
+# define LED4 (1 << 23) // P1.23
+# elif defined(TARGET_LPC11U24) || defined(TARGET_LPC1114)
+# define LED_PORT Port1
+# define LED1 (1 << 8) // P1.8
+# define LED2 (1 << 9) // P1.9
+# define LED3 (1 << 10) // P1.10
+# define LED4 (1 << 11) // P1.11
+# elif defined(TARGET_MAXWSNENV)
+# define LED_PORT Port1
+# define LED1 (1 << 4) // P1.4
+# define LED2 (1 << 6) // P1.6
+# define LED3 (1 << 7) // P1.7
+# define LED4 0
+# elif defined(TARGET_MAX32600MBED)
+# define LED_PORT Port7
+# define LED1 (1 << 0) // P7.0
+# define LED2 (1 << 6) // P7.6
+# define LED3 (1 << 4) // P7.4
+# define LED4 0
+# endif
+
+#define LED_MASK (LED1|LED2|LED3|LED4)
+
+int mask[4] = {
+ (LED1 | LED3),
+ (LED2 | LED4),
+ (LED1 | LED2),
+ (LED3 | LED4)
+};
+
+PortOut ledport(LED_PORT, LED_MASK);
+
+int main() {
+ while (1) {
+ for (int i=0; i<4; i++) {
+ ledport = mask[i];
+ wait(1);
+ }
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/portout_portin/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/portout_portin/main.cpp
new file mode 100644
index 0000000000..6fb02990e6
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/portout_portin/main.cpp
@@ -0,0 +1,135 @@
+#include "test_env.h"
+
+#if defined(TARGET_K64F) || defined(TARGET_KL05Z)
+#define P1_1 (1 << 16)
+#define P1_2 (1 << 17)
+#define PORT_1 PortC
+
+#define P2_1 (1 << 2)
+#define P2_2 (1 << 3)
+#define PORT_2 PortC
+
+#elif defined(TARGET_LPC11U24)
+#define P1_1 (1 << 9) // p0.9
+#define P1_2 (1 << 8) // p0.8
+#define PORT_1 Port0
+
+#define P2_1 (1 << 24) // p1.24
+#define P2_2 (1 << 25) // p1.25
+#define PORT_2 Port1
+
+#elif defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
+#define P1_1 (1 << 9) // p0.9 -> p5
+#define P1_2 (1 << 8) // p0.8 -> p6
+#define PORT_1 Port0
+
+#define P2_1 (1 << 1) // p2.1 -> p25
+#define P2_2 (1 << 0) // p2.0 -> p26
+#define PORT_2 Port2
+
+#elif defined(TARGET_LPC4088)
+#define P1_1 (1 << 7) // p0.7 -> p13
+#define P1_2 (1 << 6) // p0.6 -> p14
+#define PORT_1 Port0
+
+#define P2_1 (1 << 2) // p1.2 -> p30
+#define P2_2 (1 << 3) // p1.3 -> p29
+#define PORT_2 Port1
+
+#elif defined(TARGET_LPC1114)
+#define P1_1 (1 << 9) // p0.9
+#define P1_2 (1 << 8) // p0.8
+#define PORT_1 Port0
+
+#define P2_1 (1 << 1) // p1.1
+#define P2_2 (1 << 0) // p1.0
+#define PORT_2 Port1
+
+#elif defined(TARGET_KL25Z)
+#define P1_1 (1 << 4) // PTA4
+#define P1_2 (1 << 5) // PTA5
+#define PORT_1 PortA
+
+#define P2_1 (1 << 5) // PTC5
+#define P2_2 (1 << 6) // PTC6
+#define PORT_2 PortC
+
+#elif defined(TARGET_nRF51822)
+#define P1_1 (1 << 4) // p4
+#define P1_2 (1 << 5) // p5
+#define PORT_1 Port0
+
+#define P2_1 (1 << 24) // p24
+#define P2_2 (1 << 25) // p25
+#define PORT_2 Port0
+
+#elif defined(TARGET_MAXWSNENV)
+#define P1_1 (1 << 0)
+#define P1_2 (1 << 1)
+#define PORT_1 Port0
+
+#define P2_1 (1 << 0)
+#define P2_2 (1 << 1)
+#define PORT_2 Port1
+
+#elif defined(TARGET_MAX32600MBED)
+#define P1_1 (1 << 0) // P1_0
+#define P1_2 (1 << 1) // P1_1
+#define PORT_1 Port1
+
+#define P2_1 (1 << 7) // P4_7
+#define P2_2 (1 << 6) // P4_6
+#define PORT_2 Port4
+
+#elif defined(TARGET_NUCLEO_F030R8) || \
+ defined(TARGET_NUCLEO_F070RB) || \
+ defined(TARGET_NUCLEO_F072RB) || \
+ defined(TARGET_NUCLEO_F091RC) || \
+ defined(TARGET_NUCLEO_F103RB) || \
+ defined(TARGET_NUCLEO_F302R8) || \
+ defined(TARGET_NUCLEO_F303RE) || \
+ defined(TARGET_NUCLEO_F334R8) || \
+ defined(TARGET_NUCLEO_F401RE) || \
+ defined(TARGET_NUCLEO_F411RE) || \
+ defined(TARGET_NUCLEO_L053R8) || \
+ defined(TARGET_NUCLEO_L073RZ) || \
+ defined(TARGET_NUCLEO_L152RE)
+#define P1_1 (1 << 6) // PC_6
+#define P1_2 (1 << 5) // PC_5
+#define PORT_1 PortC
+
+#define P2_1 (1 << 8) // PB_8
+#define P2_2 (1 << 9) // PB_9
+#define PORT_2 PortB
+#endif
+
+#define MASK_1 (P1_1 | P1_2)
+#define MASK_2 (P2_1 | P2_2)
+
+PortOut port_out(PORT_1, MASK_1);
+PortIn port_in (PORT_2, MASK_2);
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(PortOut PortIn);
+ MBED_HOSTTEST_START("MBED_A10");
+
+ port_out = MASK_1;
+ wait(0.1);
+ int value = port_in.read();
+ if (value != MASK_2) {
+ printf("[Test high] expected (0x%x) received (0x%x)\n", MASK_2, value);
+ notify_completion(false);
+ }
+
+ port_out = 0;
+ wait(0.1);
+ value = port_in.read();
+ if (value != 0) {
+ printf("[Test low] expected (0x%x) received (0x%x)\n", 0, value);
+ notify_completion(false);
+ }
+
+ notify_completion(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/pwm/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/pwm/main.cpp
new file mode 100644
index 0000000000..b7b3550098
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/pwm/main.cpp
@@ -0,0 +1,174 @@
+#include "test_env.h"
+
+/* Timer/Match Register Pinout Options
+
+CT16B0/MR0 p5 (P0_9)
+CT16B0/MR1 p6 (P0_8)
+CT16B0/MR2 p34 (P1_15)
+
+CT16B1/MR0 p36 (P0_21)
+CT16B1/MR1 p20 (P0_22) and p14 (P1_23)
+
+CT32B0/MR0 p25 (P1_24)
+CT32B0/MR1 p26 (P1_25) and USBTX (P0_19)
+CT32B0/MR2 p10 (P1_26)
+ */
+
+float value = 0.75;
+
+int main() {
+#if defined(TARGET_FF_ARDUINO)
+ PwmOut pwm(D9);
+
+ pwm.period_ms(10);
+ pwm.write(value);
+
+ float result = floor(pwm.read() * 100 + 0.5) / 100; // round it to 0.xx
+ printf("Initialize PWM on pin D9 with duty cycle: %.2f\n", result);
+
+ notify_completion(result == value ? true : false);
+
+#elif defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC11U24) || defined(TARGET_LPC4088)
+ PwmOut pwm_p25(p25);
+ PwmOut pwm_p26(p26);
+
+ pwm_p25.write(0.75);
+ pwm_p26.write(0.50);
+
+ printf("Initialize PWM on pin 25 with duty cycle: %.2f\n", pwm_p25.read());
+ printf("Initialize PWM on pin 26 with duty cycle: %.2f\n", pwm_p26.read());
+
+#elif defined(TARGET_LPC1114)
+ PwmOut pwm_dp24(dp24); // P0_1
+ PwmOut pwm_dp18(dp18); // P1_9
+
+ pwm_dp24.write(0.75);
+ pwm_dp18.write(0.50);
+
+ printf("Initialize PWM on pin 24 with duty cycle: %.2f\n", pwm_dp24.read());
+ printf("Initialize PWM on pin 18 with duty cycle: %.2f\n", pwm_dp18.read());
+
+#elif defined(TARGET_nRF51822)
+ PwmOut pwm_p24(p24);
+ PwmOut pwm_p25(p25);
+
+ pwm_p24.write(0.75);
+ pwm_p25.write(0.50);
+
+ printf("Initialize PWM on pin 24 with duty cycle: %.2f\n", pwm_p24.read());
+ printf("Initialize PWM on pin 25 with duty cycle: %.2f\n", pwm_p25.read());
+
+#elif defined(TARGET_DISCO_F100RB)
+ PwmOut pwm_1(PB_3);
+ PwmOut pwm_2(PB_4);
+
+ pwm_1.write(0.75);
+ pwm_2.write(0.50);
+
+ printf("Initialize PWM on pin PB_3 with duty cycle: %.2f\n", pwm_1.read());
+ printf("Initialize PWM on pin PB_4 with duty cycle: %.2f\n", pwm_2.read());
+#elif defined(TARGET_DISCO_F051R8)
+ PwmOut pwm_1(PA_7);
+ PwmOut pwm_2(PC_7);
+
+ pwm_1.write(0.75);
+ pwm_2.write(0.50);
+
+ printf("Initialize PWM on pin PA_7 with duty cycle: %.2f\n", pwm_1.read());
+ printf("Initialize PWM on pin PC_7 with duty cycle: %.2f\n", pwm_2.read());
+#elif defined(TARGET_DISCO_F303VC)
+ PwmOut pwm_1(PA_8);
+ PwmOut pwm_2(PA_9);
+
+ pwm_1.write(0.75);
+ pwm_2.write(0.50);
+
+ printf("Initialize PWM on pin PA_7 with duty cycle: %.2f\n", pwm_1.read());
+ printf("Initialize PWM on pin PC_7 with duty cycle: %.2f\n", pwm_2.read());
+#elif defined(TARGET_MAXWSNENV)
+ PwmOut pwm_1(TP2);
+ PwmOut pwm_2(TP4);
+
+ pwm_1.write(0.75);
+ pwm_2.write(0.50);
+
+ printf("Initialize PWM on pin TP2 with duty cycle: %.2f\n", pwm_1.read());
+ printf("Initialize PWM on pin TP4 with duty cycle: %.2f\n", pwm_2.read());
+#elif defined(TARGET_DISCO_F407VG)
+ PwmOut pwm_1(PD_12);
+ PwmOut pwm_2(PD_13);
+
+ pwm_1.write(value);
+ pwm_2.write(0.50);
+
+ float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx
+
+ printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result);
+ printf("Initialize PWM on pin PD_13 with duty cycle: %.2f\n", pwm_2.read());
+
+ notify_completion(result == value ? true : false);
+#elif defined(TARGET_DISCO_F429ZI)
+ PwmOut pwm_1(PA_0);
+
+ pwm_1.write(value);
+
+ float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx
+
+ printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result);
+
+ notify_completion(result == value ? true : false);
+#elif defined(TARGET_MTS_MDOT_F405RG)
+ PwmOut pwm_1(PA_0);
+
+ pwm_1.write(value);
+
+ float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx
+
+ printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result);
+
+ notify_completion(result == value ? true : false);
+#elif defined(TARGET_MTS_DRAGONFLY_F411RE)
+ PwmOut pwm_1(PA_0);
+
+ pwm_1.write(value);
+
+ float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx
+
+ printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result);
+
+ notify_completion(result == value ? true : false);
+#elif defined(TARGET_MTS_MDOT_F411RE)
+ PwmOut pwm_1(PA_0);
+
+ pwm_1.write(value);
+
+ float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx
+
+ printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result);
+
+ notify_completion(result == value ? true : false);
+#elif defined(TARGET_UBLOX_C029)
+ PwmOut pwm_1(PA_0);
+
+ pwm_1.write(value);
+
+ float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx
+
+ printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result);
+
+ notify_completion(result == value ? true : false);
+#elif defined(TARGET_MAX32600MBED)
+ PwmOut pwm_1(P1_2);
+ PwmOut pwm_2(P1_3);
+
+ pwm_1.write(0.75);
+ pwm_2.write(0.50);
+
+ printf("Initialize PWM on pin P1.2 with duty cycle: %.2f\n", pwm_1.read());
+ printf("Initialize PWM on pin P1.3 with duty cycle: %.2f\n", pwm_2.read());
+#else
+#error This test is not supported on this target.
+#endif
+
+ notify_completion(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/pwm_led/pwm.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/pwm_led/pwm.cpp
new file mode 100644
index 0000000000..c30dfc4fbd
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/pwm_led/pwm.cpp
@@ -0,0 +1,54 @@
+#include "mbed.h"
+
+#if defined(TARGET_K64F)
+#define TEST_LED D9
+
+#elif defined(TARGET_NUCLEO_F030R8) || \
+ defined(TARGET_NUCLEO_F070RB) || \
+ defined(TARGET_NUCLEO_F072RB) || \
+ defined(TARGET_NUCLEO_F091RC) || \
+ defined(TARGET_NUCLEO_F103RB) || \
+ defined(TARGET_NUCLEO_F302R8) || \
+ defined(TARGET_NUCLEO_F303RE) || \
+ defined(TARGET_NUCLEO_F334R8) || \
+ defined(TARGET_NUCLEO_F401RE) || \
+ defined(TARGET_NUCLEO_F411RE) || \
+ defined(TARGET_NUCLEO_L053R8) || \
+ defined(TARGET_NUCLEO_L073RZ) || \
+ defined(TARGET_NUCLEO_L152RE)
+#define TEST_LED D3
+
+#elif defined (TARGET_K22F) || \
+ defined (TARGET_LPC824)
+#define TEST_LED LED_GREEN
+
+#elif defined (TARGET_MAXWSNENV)
+#define TEST_LED LED_GREEN
+
+#elif defined (TARGET_DISCO_F407VG)
+#define TEST_LED LED1
+
+#else
+#error This test is not supported on this target.
+#endif
+
+PwmOut led(TEST_LED);
+
+int main() {
+ float crt = 1.0, delta = 0.05;
+
+ led.period_ms(2); // 500Hz
+ while (true) {
+ led.write(crt);
+ wait_ms(50);
+ crt = crt + delta;
+ if (crt > 1.0) {
+ crt = 1.0;
+ delta = -delta;
+ }
+ else if (crt < 0) {
+ crt = 0;
+ delta = -delta;
+ }
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/reset/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/reset/main.cpp
new file mode 100644
index 0000000000..b38218e706
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/reset/main.cpp
@@ -0,0 +1,17 @@
+#include "mbed.h"
+
+Serial pc(USBTX, USBRX);
+
+extern "C" void mbed_reset();
+
+int main() {
+ pc.printf("start\n");
+ wait(1);
+
+ unsigned int counter = 0;
+ while(1) {
+ pc.printf("%u\n",counter++);
+ wait(1);
+ mbed_reset();
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/rpc/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/rpc/main.cpp
new file mode 100644
index 0000000000..9912c671b6
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/rpc/main.cpp
@@ -0,0 +1,67 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "mbed_rpc.h"
+
+void foo(Arguments *args, Reply *reply) {
+ reply->putData<float>(args->getArg<float>() * 3.3);
+}
+
+bool rpc_test(const char *input, const char *expected) {
+ char outbuf[RPC_MAX_STRING] = {0};
+ bool result = RPC::call(input, outbuf);
+ printf("RPC: %s -> ", input);
+
+ if (result == false) {
+ printf("Procedure call ... [FAIL]\r\n");
+ } else if (strncmp(outbuf, expected, RPC_MAX_STRING) != 0) {
+ printf("'%s' != '%s' ... [FAIL]\r\n", outbuf, expected);
+ result = false;
+ } else {
+ printf("'%s' ... [OK]\r\n", outbuf);
+ }
+ return result;
+}
+
+#define RPC_TEST(INPUT,EXPECTED) result = result && rpc_test(INPUT,EXPECTED); if (result == false) { notify_completion(result); exit(1); }
+
+int main() {
+ float f = 0;
+ bool result = true;
+ // Variable
+ RPCVariable<float> rpc_f(&f, "f");
+ RPC_TEST("/f/write 1", "");
+ RPC_TEST("/f/read", "1");
+
+ // Function
+ RPCFunction rpc_foo(&foo, "foo");
+#if defined(TOOLCHAIN_ARM_MICRO)
+ RPC_TEST("/foo/run 1", "3.299999952316284");
+#else
+ RPC_TEST("/foo/run 1", "3.2999999523162842");
+#endif
+
+ // Class
+ RPC::add_rpc_class<RpcDigitalOut>();
+ RPC_TEST("/DigitalOut/new LED2 led2", "led2");
+ RPC_TEST("/led2/write 1", "");
+ RPC_TEST("/led2/read", "1");
+
+ // Instance
+ RpcDigitalOut rpc_led(LED1, "led1");
+ RPC_TEST("/led1/write 1", "");
+ RPC_TEST("/led1/read", "1");
+
+ // Introspection
+ RPC_TEST("/", "led1 led2 foo f DigitalOut RPC");
+ RPC_TEST("/f", "read write delete");
+ RPC_TEST("/foo", "run delete");
+ RPC_TEST("/DigitalOut", "new");
+ RPC_TEST("/led1", "write read delete");
+
+ // Delete instance
+ RPC_TEST("/led2/delete", "");
+ RPC_TEST("/", "led1 foo f DigitalOut RPC");
+
+ notify_completion(result);
+ return 0;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/rtc/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/rtc/main.cpp
new file mode 100644
index 0000000000..505e70b5af
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/rtc/main.cpp
@@ -0,0 +1,20 @@
+#include "mbed.h"
+#include "test_env.h"
+
+#define CUSTOM_TIME 1256729737
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(rtc_auto);
+ MBED_HOSTTEST_DESCRIPTION(RTC);
+ MBED_HOSTTEST_START("MBED_16");
+
+ char buffer[32] = {0};
+ set_time(CUSTOM_TIME); // Set RTC time to Wed, 28 Oct 2009 11:35:37
+ while(1) {
+ time_t seconds = time(NULL);
+ strftime(buffer, 32, "%Y-%m-%d %H:%M:%S %p", localtime(&seconds));
+ printf("MBED: [%ld] [%s]\r\n", seconds, buffer);
+ wait(1);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/sd/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd/main.cpp
new file mode 100644
index 0000000000..2d1b5a19cf
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd/main.cpp
@@ -0,0 +1,112 @@
+#include "mbed.h"
+#include "SDFileSystem.h"
+#include "test_env.h"
+
+#if defined(TARGET_KL25Z)
+SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd");
+
+#elif defined(TARGET_KL46Z)
+SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd");
+
+#elif defined(TARGET_K64F)
+SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd");
+
+#elif defined(TARGET_K22F)
+SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd");
+
+#elif defined(TARGET_K20D50M)
+SDFileSystem sd(PTD2, PTD3, PTD1, PTC2, "sd");
+
+#elif defined(TARGET_nRF51822)
+SDFileSystem sd(p12, p13, p15, p14, "sd");
+
+#elif defined(TARGET_NUCLEO_F030R8) || \
+ defined(TARGET_NUCLEO_F070RB) || \
+ defined(TARGET_NUCLEO_F072RB) || \
+ defined(TARGET_NUCLEO_F091RC) || \
+ defined(TARGET_NUCLEO_F103RB) || \
+ defined(TARGET_NUCLEO_F302R8) || \
+ defined(TARGET_NUCLEO_F303RE) || \
+ defined(TARGET_NUCLEO_F334R8) || \
+ defined(TARGET_NUCLEO_F401RE) || \
+ defined(TARGET_NUCLEO_F411RE) || \
+ defined(TARGET_NUCLEO_L053R8) || \
+ defined(TARGET_NUCLEO_L073RZ) || \
+ defined(TARGET_NUCLEO_L152RE)
+SDFileSystem sd(D11, D12, D13, D10, "sd");
+
+#elif defined(TARGET_DISCO_F051R8)
+SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd");
+
+#elif defined(TARGET_LPC2368)
+SDFileSystem sd(p11, p12, p13, p14, "sd");
+
+#elif defined(TARGET_LPC11U68)
+SDFileSystem sd(D11, D12, D13, D10, "sd");
+
+#elif defined(TARGET_LPC1549)
+SDFileSystem sd(D11, D12, D13, D10, "sd");
+
+#elif defined(TARGET_RZ_A1H)
+SDFileSystem sd(P8_5, P8_6, P8_3, P8_4, "sd");
+
+#elif defined(TARGET_LPC11U37H_401)
+SDFileSystem sd(SDMOSI, SDMISO, SDSCLK, SDSSEL, "sd");
+
+#else
+SDFileSystem sd(p11, p12, p13, p14, "sd");
+#endif
+
+namespace {
+const char *sd_file_path = "/sd/out.txt";
+const int DATA_SIZE = 256;
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(SD File System);
+ MBED_HOSTTEST_START("MBED_A12");
+
+ uint8_t data_written[DATA_SIZE] = { 0 };
+ bool result = false;
+
+ // Fill data_written buffer with random data
+ // Write these data into the file
+ bool write_result = false;
+ {
+ printf("SD: Writing ... ");
+ FILE *f = fopen(sd_file_path, "w");
+ if (f) {
+ for (int i = 0; i < DATA_SIZE; i++) {
+ data_written[i] = rand() % 0XFF;
+ fprintf(f, "%c", data_written[i]);
+ }
+ write_result = true;
+ fclose(f);
+ }
+ printf("[%s]\r\n", write_result ? "OK" : "FAIL");
+ }
+
+ // Read back the data from the file and store them in data_read
+ bool read_result = false;
+ {
+ printf("SD: Reading data ... ");
+ FILE *f = fopen(sd_file_path, "r");
+ if (f) {
+ read_result = true;
+ for (int i = 0; i < DATA_SIZE; i++) {
+ uint8_t data = fgetc(f);
+ if (data != data_written[i]) {
+ read_result = false;
+ break;
+ }
+ }
+ fclose(f);
+ }
+ printf("[%s]\r\n", read_result ? "OK" : "FAIL");
+ }
+
+ result = write_result && read_result;
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_fatfs/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_fatfs/main.cpp
new file mode 100644
index 0000000000..6e95fec97a
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_fatfs/main.cpp
@@ -0,0 +1,161 @@
+#include "mbed.h"
+#include "SDFileSystem.h"
+#include "test_env.h"
+#include <algorithm>
+#include <stdlib.h>
+
+#if defined(TARGET_KL25Z)
+SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd");
+
+#elif defined(TARGET_KL46Z)
+SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd");
+
+#elif defined(TARGET_K64F)
+SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd");
+
+#elif defined(TARGET_K22F)
+SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd");
+
+#elif defined(TARGET_K20D50M)
+SDFileSystem sd(PTD2, PTD3, PTD1, PTC2, "sd");
+
+#elif defined(TARGET_nRF51822)
+SDFileSystem sd(p12, p13, p15, p14, "sd");
+
+#elif defined(TARGET_NUCLEO_F030R8) || \
+ defined(TARGET_NUCLEO_F070RB) || \
+ defined(TARGET_NUCLEO_F072RB) || \
+ defined(TARGET_NUCLEO_F091RC) || \
+ defined(TARGET_NUCLEO_F103RB) || \
+ defined(TARGET_NUCLEO_F302R8) || \
+ defined(TARGET_NUCLEO_F303RE) || \
+ defined(TARGET_NUCLEO_F334R8) || \
+ defined(TARGET_NUCLEO_F401RE) || \
+ defined(TARGET_NUCLEO_F411RE) || \
+ defined(TARGET_NUCLEO_L053R8) || \
+ defined(TARGET_NUCLEO_L073RZ) || \
+ defined(TARGET_NUCLEO_L152RE)
+SDFileSystem sd(D11, D12, D13, D10, "sd");
+
+#elif defined(TARGET_DISCO_F051R8)
+SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd");
+
+#elif defined(TARGET_LPC2368)
+SDFileSystem sd(p11, p12, p13, p14, "sd");
+
+#elif defined(TARGET_LPC11U68)
+SDFileSystem sd(D11, D12, D13, D10, "sd");
+
+#elif defined(TARGET_LPC1549)
+SDFileSystem sd(D11, D12, D13, D10, "sd");
+
+#elif defined(TARGET_LPC11U37H_401)
+SDFileSystem sd(SDMOSI, SDMISO, SDSCLK, SDSSEL, "sd");
+
+#else
+SDFileSystem sd(p11, p12, p13, p14, "sd");
+#endif
+
+namespace {
+char buffer[1024];
+const int KIB_RW = 128;
+Timer timer;
+const char *bin_filename = "0:testfile.bin";
+}
+
+bool test_sf_file_write_fatfs(const char *filename, const int kib_rw) {
+ FIL file;
+ bool result = true;
+ FRESULT res = f_open(&file, filename, FA_WRITE | FA_CREATE_ALWAYS);
+ if (res == FR_OK) {
+ int byte_write = 0;
+ unsigned int bytes = 0;
+ timer.start();
+ for (int i = 0; i < kib_rw; i++) {
+ if (f_write(&file, buffer, sizeof(buffer), &bytes) != FR_OK) {
+ result = false;
+ f_close(&file);
+ printf("Write error!\r\n");
+ break;
+ } else {
+ byte_write++;
+ }
+ }
+ timer.stop();
+ f_close(&file);
+ double test_time_sec = timer.read_us() / 1000000.0;
+ double speed = kib_rw / test_time_sec;
+ printf("%d KiB write in %.3f sec with speed of %.4f KiB/s\r\n", byte_write, test_time_sec, speed);
+ notify_performance_coefficient("write_kibps", speed);
+ } else {
+ printf("File '%s' not opened\r\n", filename);
+ result = false;
+ }
+ timer.reset();
+ return result;
+}
+
+bool test_sf_file_read_fatfs(const char *filename, const int kib_rw) {
+ FIL file;
+ bool result = true;
+ FRESULT res = f_open(&file, filename, FA_READ | FA_OPEN_EXISTING);
+ if (res == FR_OK) {
+ timer.start();
+ int byte_read = 0;
+ unsigned int bytes = 0;
+ do {
+ res = f_read(&file, buffer, sizeof(buffer), &bytes);
+ byte_read++;
+ } while (res == FR_OK && bytes == sizeof(buffer));
+ timer.stop();
+ f_close(&file);
+ double test_time_sec = timer.read_us() / 1000000.0;
+ double speed = kib_rw / test_time_sec;
+ printf("%d KiB read in %.3f sec with speed of %.4f KiB/s\r\n", byte_read, test_time_sec, speed);
+ notify_performance_coefficient("fs_read_kibps", speed);
+ } else {
+ printf("File '%s' not opened\r\n", filename);
+ result = false;
+ }
+ timer.reset();
+ return result;
+}
+
+char RandomChar() {
+ return rand() % 100;
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(SD FatFS RW Speed);
+ MBED_HOSTTEST_START("PERF_3");
+
+ // Test header
+ printf("\r\n");
+ printf("SD Card FatFS Performance Test\r\n");
+ printf("File name: %s\r\n", bin_filename);
+ printf("Buffer size: %d KiB\r\n", (KIB_RW * sizeof(buffer)) / 1024);
+
+ // Initialize buffer
+ srand(testenv_randseed());
+ char *buffer_end = buffer + sizeof(buffer);
+ std::generate (buffer, buffer_end, RandomChar);
+
+ bool result = true;
+ for (;;) {
+ printf("Write test...\r\n");
+ if (test_sf_file_write_fatfs(bin_filename, KIB_RW) == false) {
+ result = false;
+ break;
+ }
+
+ printf("Read test...\r\n");
+ if (test_sf_file_read_fatfs(bin_filename, KIB_RW) == false) {
+ result = false;
+ break;
+ }
+ break;
+ }
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_fhandle/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_fhandle/main.cpp
new file mode 100644
index 0000000000..209c948145
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_fhandle/main.cpp
@@ -0,0 +1,156 @@
+#include "mbed.h"
+#include "SDFileSystem.h"
+#include "test_env.h"
+#include <algorithm>
+#include <stdlib.h>
+
+#if defined(TARGET_KL25Z)
+SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd");
+
+#elif defined(TARGET_KL46Z)
+SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd");
+
+#elif defined(TARGET_K64F)
+SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd");
+
+#elif defined(TARGET_K22F)
+SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd");
+
+#elif defined(TARGET_K20D50M)
+SDFileSystem sd(PTD2, PTD3, PTD1, PTC2, "sd");
+
+#elif defined(TARGET_nRF51822)
+SDFileSystem sd(p12, p13, p15, p14, "sd");
+
+#elif defined(TARGET_NUCLEO_F030R8) || \
+ defined(TARGET_NUCLEO_F070RB) || \
+ defined(TARGET_NUCLEO_F072RB) || \
+ defined(TARGET_NUCLEO_F091RC) || \
+ defined(TARGET_NUCLEO_F103RB) || \
+ defined(TARGET_NUCLEO_F302R8) || \
+ defined(TARGET_NUCLEO_F303RE) || \
+ defined(TARGET_NUCLEO_F334R8) || \
+ defined(TARGET_NUCLEO_F401RE) || \
+ defined(TARGET_NUCLEO_F411RE) || \
+ defined(TARGET_NUCLEO_L053R8) || \
+ defined(TARGET_NUCLEO_L073RZ) || \
+ defined(TARGET_NUCLEO_L152RE)
+SDFileSystem sd(D11, D12, D13, D10, "sd");
+
+#elif defined(TARGET_DISCO_F051R8)
+SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd");
+
+#elif defined(TARGET_LPC2368)
+SDFileSystem sd(p11, p12, p13, p14, "sd");
+
+#elif defined(TARGET_LPC11U68)
+SDFileSystem sd(D11, D12, D13, D10, "sd");
+
+#elif defined(TARGET_LPC1549)
+SDFileSystem sd(D11, D12, D13, D10, "sd");
+
+#elif defined(TARGET_LPC11U37H_401)
+SDFileSystem sd(SDMOSI, SDMISO, SDSCLK, SDSSEL, "sd");
+
+#else
+SDFileSystem sd(p11, p12, p13, p14, "sd");
+#endif
+
+namespace {
+char buffer[1024];
+const int KIB_RW = 128;
+Timer timer;
+const char *bin_filename = "testfile.bin";
+}
+
+bool test_sf_file_write_fhandle(const char *filename, const int kib_rw) {
+ bool result = true;
+ FileHandle* file = sd.open(filename, O_WRONLY | O_CREAT | O_TRUNC);
+ if (file != NULL) {
+ int byte_write = 0;
+ timer.start();
+ for (int i = 0; i < kib_rw; i++) {
+ if (file->write(buffer, sizeof(buffer)) != sizeof(buffer)) {
+ result = false;
+ file->close();
+ printf("Write error!\r\n");
+ break;
+ } else {
+ byte_write++;
+ }
+ }
+ timer.stop();
+ file->close();
+ double test_time_sec = timer.read_us() / 1000000.0;
+ double speed = kib_rw / test_time_sec;
+ printf("%d KiB write in %.3f sec with speed of %.4f KiB/s\r\n", byte_write, test_time_sec, speed);
+ notify_performance_coefficient("write_kibps", speed);
+ } else {
+ printf("File '%s' not opened\r\n", filename);
+ result = false;
+ }
+ timer.reset();
+ return result;
+}
+
+bool test_sf_file_read_fhandle(const char *filename, const int kib_rw) {
+ bool result = true;
+ FileHandle* file = sd.open(filename, O_RDONLY);
+ if (file) {
+ timer.start();
+ int byte_read = 0;
+ while (file->read(buffer, sizeof(buffer)) == sizeof(buffer)) {
+ byte_read++;
+ }
+ timer.stop();
+ file->close();
+ double test_time_sec = timer.read_us() / 1000000.0;
+ double speed = kib_rw / test_time_sec;
+ printf("%d KiB read in %.3f sec with speed of %.4f KiB/s\r\n", byte_read, test_time_sec, speed);
+ notify_performance_coefficient("fs_read_kibps", speed);
+ } else {
+ printf("File '%s' not opened\r\n", filename);
+ result = false;
+ }
+ timer.reset();
+ return result;
+}
+
+char RandomChar() {
+ return rand() % 100;
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(SD FileHandle RW Speed);
+ MBED_HOSTTEST_START("PERF_2");
+
+ // Test header
+ printf("\r\n");
+ printf("SD Card FileHandle Performance Test\r\n");
+ printf("File name: %s\r\n", bin_filename);
+ printf("Buffer size: %d KiB\r\n", (KIB_RW * sizeof(buffer)) / 1024);
+
+ // Initialize buffer
+ srand(testenv_randseed());
+ char *buffer_end = buffer + sizeof(buffer);
+ std::generate (buffer, buffer_end, RandomChar);
+
+ bool result = true;
+ for (;;) {
+ printf("Write test...\r\n");
+ if (test_sf_file_write_fhandle(bin_filename, KIB_RW) == false) {
+ result = false;
+ break;
+ }
+
+ printf("Read test...\r\n");
+ if (test_sf_file_read_fhandle(bin_filename, KIB_RW) == false) {
+ result = false;
+ break;
+ }
+ break;
+ }
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_stdio/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_stdio/main.cpp
new file mode 100644
index 0000000000..46c14bcb66
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/sd_perf_stdio/main.cpp
@@ -0,0 +1,156 @@
+#include "mbed.h"
+#include "SDFileSystem.h"
+#include "test_env.h"
+#include <algorithm>
+#include <stdlib.h>
+
+#if defined(TARGET_KL25Z)
+SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd");
+
+#elif defined(TARGET_KL46Z)
+SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd");
+
+#elif defined(TARGET_K64F)
+SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd");
+
+#elif defined(TARGET_K22F)
+SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd");
+
+#elif defined(TARGET_K20D50M)
+SDFileSystem sd(PTD2, PTD3, PTD1, PTC2, "sd");
+
+#elif defined(TARGET_nRF51822)
+SDFileSystem sd(p12, p13, p15, p14, "sd");
+
+#elif defined(TARGET_NUCLEO_F030R8) || \
+ defined(TARGET_NUCLEO_F070RB) || \
+ defined(TARGET_NUCLEO_F072RB) || \
+ defined(TARGET_NUCLEO_F091RC) || \
+ defined(TARGET_NUCLEO_F103RB) || \
+ defined(TARGET_NUCLEO_F302R8) || \
+ defined(TARGET_NUCLEO_F303RE) || \
+ defined(TARGET_NUCLEO_F334R8) || \
+ defined(TARGET_NUCLEO_F401RE) || \
+ defined(TARGET_NUCLEO_F411RE) || \
+ defined(TARGET_NUCLEO_L053R8) || \
+ defined(TARGET_NUCLEO_L073RZ) || \
+ defined(TARGET_NUCLEO_L152RE)
+SDFileSystem sd(D11, D12, D13, D10, "sd");
+
+#elif defined(TARGET_DISCO_F051R8)
+SDFileSystem sd(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS, "sd");
+
+#elif defined(TARGET_LPC2368)
+SDFileSystem sd(p11, p12, p13, p14, "sd");
+
+#elif defined(TARGET_LPC11U68)
+SDFileSystem sd(D11, D12, D13, D10, "sd");
+
+#elif defined(TARGET_LPC1549)
+SDFileSystem sd(D11, D12, D13, D10, "sd");
+
+#elif defined(TARGET_LPC11U37H_401)
+SDFileSystem sd(SDMOSI, SDMISO, SDSCLK, SDSSEL, "sd");
+
+#else
+SDFileSystem sd(p11, p12, p13, p14, "sd");
+#endif
+
+namespace {
+char buffer[1024];
+const int KIB_RW = 128;
+Timer timer;
+const char *bin_filename = "/sd/testfile.bin";
+}
+
+bool test_sf_file_write_stdio(const char *filename, const int kib_rw) {
+ bool result = true;
+ FILE* file = fopen(filename, "w");
+ if (file != NULL) {
+ int byte_write = 0;
+ timer.start();
+ for (int i = 0; i < kib_rw; i++) {
+ if (fwrite(buffer, sizeof(char), sizeof(buffer), file) != sizeof(buffer)) {
+ result = false;
+ fclose(file);
+ printf("Write error!\r\n");
+ break;
+ } else {
+ byte_write++;
+ }
+ }
+ timer.stop();
+ fclose(file);
+ double test_time_sec = timer.read_us() / 1000000.0;
+ double speed = kib_rw / test_time_sec;
+ printf("%d KiB write in %.3f sec with speed of %.4f KiB/s\r\n", byte_write, test_time_sec, speed);
+ notify_performance_coefficient("write_kibps", speed);
+ } else {
+ printf("File '%s' not opened\r\n", filename);
+ result = false;
+ }
+ timer.reset();
+ return result;
+}
+
+bool test_sf_file_read_stdio(const char *filename, const int kib_rw) {
+ bool result = true;
+ FILE* file = fopen(filename, "r");
+ if (file) {
+ timer.start();
+ int byte_read = 0;
+ while (fread(buffer, sizeof(char), sizeof(buffer), file) == sizeof(buffer)) {
+ byte_read++;
+ }
+ timer.stop();
+ fclose(file);
+ double test_time_sec = timer.read_us() / 1000000.0;
+ double speed = kib_rw / test_time_sec;
+ printf("%d KiB read in %.3f sec with speed of %.4f KiB/s\r\n", byte_read, test_time_sec, speed);
+ notify_performance_coefficient("fs_read_kibps", speed);
+ } else {
+ printf("File '%s' not opened\r\n", filename);
+ result = false;
+ }
+ timer.reset();
+ return result;
+}
+
+char RandomChar() {
+ return rand() % 100;
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(SD stdio RW Speed);
+ MBED_HOSTTEST_START("PERF_1");
+
+ // Test header
+ printf("\r\n");
+ printf("SD Card Stdio Performance Test\r\n");
+ printf("File name: %s\r\n", bin_filename);
+ printf("Buffer size: %d KiB\r\n", (KIB_RW * sizeof(buffer)) / 1024);
+
+ // Initialize buffer
+ srand(testenv_randseed());
+ char *buffer_end = buffer + sizeof(buffer);
+ std::generate (buffer, buffer_end, RandomChar);
+
+ bool result = true;
+ for (;;) {
+ printf("Write test...\r\n");
+ if (test_sf_file_write_stdio(bin_filename, KIB_RW) == false) {
+ result = false;
+ break;
+ }
+
+ printf("Read test...\r\n");
+ if (test_sf_file_read_stdio(bin_filename, KIB_RW) == false) {
+ result = false;
+ break;
+ }
+ break;
+ }
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/semihost/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/semihost/main.cpp
new file mode 100644
index 0000000000..2ef91d12a4
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/semihost/main.cpp
@@ -0,0 +1,38 @@
+#include "test_env.h"
+#include "semihost_api.h"
+
+#define MAC_VENDOR_ARM_0 0x00
+#define MAC_VENDOR_ARM_1 0x02
+#define MAC_VENDOR_ARM_2 0xF7
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(10);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(Semihost);
+ MBED_HOSTTEST_START("MBED_22");
+
+ printf("Semihost connected: %s\n", (semihost_connected()) ? ("Yes") : ("No"));
+
+ char uid[DEVICE_ID_LENGTH + 1] = {0};
+ bool result = true;
+
+ const int ret = mbed_interface_uid(uid);
+ if (ret == 0) {
+ printf("UID: %s\r\n", uid);
+ }
+ else {
+ result = false;
+ }
+
+ char mac[6] = {0}; // @param mac A 6-byte array to write the MAC address
+ mbed_mac_address(mac);
+ printf("MAC Address: %02X:%02X:%02X:%02X:%02X:%02X\r\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
+
+ if (mac[0] == MAC_VENDOR_ARM_0 &&
+ mac[1] == MAC_VENDOR_ARM_1 &&
+ mac[2] == MAC_VENDOR_ARM_2) {
+ printf("MAC Address Prefix: 00:02:F7, Vendor: ARM\r\n");
+ }
+
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/serial_interrupt/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/serial_interrupt/main.cpp
new file mode 100644
index 0000000000..50b55e6e3b
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/serial_interrupt/main.cpp
@@ -0,0 +1,26 @@
+#include "mbed.h"
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+
+Serial computer(USBTX, USBRX);
+
+// This function is called when a character goes into the TX buffer.
+void txCallback() {
+ led1 = !led1;
+}
+
+// This function is called when a character goes into the RX buffer.
+void rxCallback() {
+ led2 = !led2;
+ computer.putc(computer.getc());
+}
+
+int main() {
+ printf("start test\n");
+ computer.attach(&txCallback, Serial::TxIrq);
+ computer.attach(&rxCallback, Serial::RxIrq);
+ while (true) {
+ wait(1);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/serial_interrupt_2/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/serial_interrupt_2/main.cpp
new file mode 100644
index 0000000000..8833c36da7
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/serial_interrupt_2/main.cpp
@@ -0,0 +1,42 @@
+#include "mbed.h"
+
+Serial pc(USBTX, USBRX);
+
+#if defined(TARGET_LPC4088)
+Serial uart(P4_22, P4_23);
+#elif defined(TARGET_MAXWSNENV)
+Serial uart(P0_1, P0_0);
+#else
+Serial uart(p9, p10);
+#endif
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+
+// This function is called when a character goes into the RX buffer.
+void rxCallback(void) {
+ led1 = !led1;
+ pc.putc(uart.getc());
+}
+
+
+int main() {
+ // Use a deliberatly slow baud to fill up the TX buffer
+ uart.baud(1200);
+ uart.attach(&rxCallback, Serial::RxIrq);
+
+ printf("Starting test loop:\n");
+ wait(1);
+
+ int c = 'A';
+ for (int loop = 0; loop < 512; loop++) {
+ uart.printf("%c", c);
+ c++;
+ if (c > 'Z') c = 'A';
+ }
+
+ while (true) {
+ led2 = !led2;
+ wait(1);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/sleep/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/sleep/main.cpp
new file mode 100644
index 0000000000..ef8772da18
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/sleep/main.cpp
@@ -0,0 +1,27 @@
+#include "test_env.h"
+
+#if defined(TARGET_LPC4088)
+InterruptIn wkp(P2_10);
+#elif defined(TARGET_K22F)
+InterruptIn wkp(D0);
+#elif defined(TARGET_LPC11U68)
+InterruptIn wkp(P0_16);
+#else
+InterruptIn wkp(p14);
+#endif
+
+void flip() {
+ printf("button pressed\n");
+}
+
+int main() {
+#if defined(TARGET_LPC11U68)
+ wkp.mode(PullUp);
+#endif
+ wkp.rise(&flip);
+
+ while (true) {
+ // sleep();
+ deepsleep();
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/sleep_timeout/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/sleep_timeout/main.cpp
new file mode 100644
index 0000000000..0f8adbfb87
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/sleep_timeout/main.cpp
@@ -0,0 +1,28 @@
+#include "mbed.h"
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+Timeout to1;
+Timeout to2;
+
+void led1_on() {
+ led1 = !led1;
+ printf("led1\n\r");
+ fflush(stdout);
+}
+void led2_on() {
+ led2 = !led2;
+ printf("led2\n\r");
+ fflush(stdout);
+}
+
+int main() {
+ led1 = 0;
+ led2 = 0;
+ to1.attach_us(led1_on, 1000000);
+ to2.attach_us(led2_on, 2000000);
+ while (1) {
+ printf("Entering sleep.\n");
+ sleep();
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spi/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi/main.cpp
new file mode 100644
index 0000000000..ce571cf1d9
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi/main.cpp
@@ -0,0 +1,16 @@
+#include "mbed.h"
+
+SPI spi(p11, p12, p13);
+DigitalOut latchpin(p10);
+
+int main() {
+ spi.format(8, 0);
+ spi.frequency(16 * 1000 * 1000);
+
+ latchpin = 0;
+ while (1) {
+ latchpin = 1;
+ spi.write(0);
+ latchpin = 0;
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_ADXL345/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_ADXL345/main.cpp
new file mode 100644
index 0000000000..11055ebfa1
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_ADXL345/main.cpp
@@ -0,0 +1,62 @@
+#include "test_env.h"
+#include "ADXL345.h"
+
+#if defined(TARGET_LPC812)
+ADXL345 accelerometer(D10, D11, D12, D13);
+
+#else
+ADXL345 accelerometer(p5, p6, p7, p8);
+#endif
+
+// Assume test configuration on a plane (small x and y, z ~ g)
+#define MAX_X_Y (50)
+#define MIN_Z (200)
+#define MAX_Z (300)
+
+void check_X_Y(int v) {
+ int16_t a = (int16_t)v;
+ if (abs(a) > MAX_X_Y) {
+ printf("X/Y acceleration is too big: %d\n", a);
+ notify_completion(false);
+ }
+}
+
+
+int main() {
+ int readings[3] = {0, 0, 0};
+
+ printf("Starting ADXL345 test...\n");
+ printf("Device ID is: 0x%02x\n", accelerometer.getDevId());
+
+ //Go into standby mode to configure the device.
+ accelerometer.setPowerControl(0x00);
+
+ //Full resolution, +/-16g, 4mg/LSB.
+ accelerometer.setDataFormatControl(0x0B);
+
+ //3.2kHz data rate.
+ accelerometer.setDataRate(ADXL345_3200HZ);
+
+ //Measurement mode.
+ accelerometer.setPowerControl(0x08);
+
+ for (int i=0; i<3; i++) {
+ wait(0.1);
+
+ //13-bit, sign extended values.
+ accelerometer.getOutput(readings);
+
+ // X and Y
+ check_X_Y(readings[0]);
+ check_X_Y(readings[1]);
+
+ // Z
+ int16_t z = (int16_t)readings[2];
+ if ((z < MIN_Z) || (z > MAX_Z)) {
+ printf("Z acceleration not within expected range\n", z);
+ notify_completion(false);
+ }
+ }
+
+ notify_completion(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_master/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_master/main.cpp
new file mode 100644
index 0000000000..9392072438
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_master/main.cpp
@@ -0,0 +1,38 @@
+#include "mbed.h"
+#include "test_env.h"
+
+#if defined(TARGET_KL25Z)
+SPI spi(PTD2, PTD3, PTD1); // mosi, miso, sclk
+DigitalOut cs(PTA13);
+#elif defined(TARGET_KL05Z)
+SPI spi(PTA7, PTA6, PTB0); // mosi, miso, sclk
+DigitalOut cs(PTB1);
+#elif defined(TARGET_KL46Z)
+SPI spi(PTD2, PTD3, PTD1); // mosi, miso, sclk
+DigitalOut cs(PTA13);
+#elif defined(TARGET_FF_ARDUINO)
+SPI spi(D11, D12, D13); // mosi, miso, sclk
+DigitalOut cs(D10);
+#else
+SPI spi(p5, p6, p7); // mosi, miso, sclk
+DigitalOut cs(p8);
+#endif
+
+int main() {
+ int data = 0;
+ int res = 0;
+
+ for(int i = 0; i < 30; i++) {
+
+ cs = 0;
+ res = spi.write(data++);
+ cs = 1;
+
+ wait_ms(0.001);
+
+ if ((i > 1) && ((res + 2) != data))
+ notify_completion(false);
+ }
+
+ notify_completion(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_slave/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_slave/main.cpp
new file mode 100644
index 0000000000..d8a8a75707
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spi_slave/main.cpp
@@ -0,0 +1,29 @@
+#include "mbed.h"
+
+#if defined(TARGET_KL25Z)
+SPISlave device(PTD2, PTD3, PTD1, PTD0); // mosi, miso, sclk, ssel
+#elif defined(TARGET_nRF51822)
+SPISlave device(p12, p13, p15, p14); // mosi, miso, sclk, ssel
+#elif defined(TARGET_LPC812)
+SPISlave device(P0_14, P0_15, P0_12, P0_13); // mosi, miso, sclk, ssel
+#elif defined(TARGET_FF_ARDUINO)
+SPISlave device(D11, D12, D13, D10); // mosi, miso, sclk, ssel
+#elif defined(TARGET_LPC1114)
+SPISlave device(dp2, dp1, dp6, dp25); // mosi, miso, sclk, ssel
+#else
+SPISlave device(p5, p6, p7, p8); // mosi, miso, sclk, ssel
+#endif
+
+
+int main() {
+ uint8_t resp = 0;
+
+ device.reply(resp); // Prime SPI with first reply
+
+ while(1) {
+ if(device.receive()) {
+ resp = device.read(); // Read byte from master and add 1
+ device.reply(resp); // Make this the next reply
+ }
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi1/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi1/main.cpp
new file mode 100644
index 0000000000..97e6469b71
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi1/main.cpp
@@ -0,0 +1,107 @@
+#include "test_env.h"
+#include "mbed.h"
+#include "spifi_rom_api.h"
+
+__attribute__((section("SPIFI_MEM"))) const unsigned char cube_image[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,0,150,0,0,0,200,8,2,0,0,0,133,231,143,
+50,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,195,0,0,14,195,1,199,
+111,168,100,0,0,156,193,73,68,65,84,120,94,236,253,103,
+124,27,233,125,54,140,14,48,24,0,51,24,244,94,9,246,
+0,0,0,0,73,69,78,68,174,66,96,130};
+
+int cube_image_sz = sizeof(cube_image);
+
+const unsigned char cube_image_ref[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,0,150,0,0,0,200,8,2,0,0,0,133,231,143,
+50,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,195,0,0,14,195,1,199,
+111,168,100,0,0,156,193,73,68,65,84,120,94,236,253,103,
+124,27,233,125,54,140,14,48,24,0,51,24,244,94,9,246,
+0,0,0,0,73,69,78,68,174,66,96,130};
+
+int cube_image_ref_sz = sizeof(cube_image_ref);
+
+/*
+ * The SPIFI_ROM_PTR (0x1FFF1FF8) points to an area where the pointers to
+ * different drivers in ROM are stored.
+ */
+typedef struct {
+ /*const*/ unsigned p_usbd; // USBROMD
+ /*const*/ unsigned p_clib;
+ /*const*/ unsigned p_cand;
+ /*const*/ unsigned p_pwrd; // PWRROMD
+ /*const*/ unsigned p_promd; // DIVROMD
+ /*const*/ SPIFI_RTNS *pSPIFID; // SPIFIROMD
+ /*const*/ unsigned p_dev3;
+ /*const*/ unsigned p_dev4;
+} ROM;
+
+#define ROM_DRIVERS_PTR ((ROM *)(*((unsigned int *)SPIFI_ROM_PTR)))
+#define IS_ADDR_IN_SPIFI(__addr) ( (((uint32_t)(__addr)) & 0xff000000) == SPIFI_MEM_BASE )
+#define IS_ADDR_IN_IFLASH(__addr) ( (((uint32_t)(__addr)) & 0xff000000) == 0x10000000 )
+
+static void initialize_spifi(void)
+{
+ SPIFIobj* obj = (SPIFIobj*)malloc(sizeof(SPIFIobj));
+ if (obj == NULL) {
+ // Failed to allocate memory for ROM data
+ notify_completion(false);
+ }
+
+ // Turn on SPIFI block as it is disabled on reset
+ LPC_SC->PCONP |= 0x00010000;
+
+ // pinsel for SPIFI
+ LPC_IOCON->P2_7 = 5; /* SPIFI_CSN @ P2.7 */
+ LPC_IOCON->P0_22 = 5; /* SPIFI_CLK @ P0.22 */
+ LPC_IOCON->P0_15 = 5; /* SPIFI_IO2 @ P0.15 */
+ LPC_IOCON->P0_16 = 5; /* SPIFI_IO3 @ P0.16 */
+ LPC_IOCON->P0_17 = 5; /* SPIFI_IO1 @ P0.17 */
+ LPC_IOCON->P0_18 = 5; /* SPIFI_IO0 @ P0.18 */
+
+ uint32_t spifi_clk_div = (*((volatile uint32_t*)0x400FC1B4)) & 0x1f;
+ uint32_t spifi_clk_mhz = (SystemCoreClock / spifi_clk_div) / 1000000;
+
+ const SPIFI_RTNS* _spifi = ROM_DRIVERS_PTR->pSPIFID;
+
+ /* Typical time tCS is 20 ns min, we give 200 ns to be on safer side */
+ int rc = _spifi->spifi_init (obj, spifi_clk_mhz/5, S_FULLCLK+S_RCVCLK, spifi_clk_mhz);
+ if (rc) {
+ // Failed to initialize SPIFI
+ notify_completion(false);
+ }
+}
+
+int main() {
+
+ initialize_spifi();
+
+ // Make sure that cube_image is placed in SPIFI
+ if (!IS_ADDR_IN_SPIFI(cube_image)) {
+ notify_completion(false);
+ }
+
+ // Make sure that cube_image_ref is in IFLASH
+ if (IS_ADDR_IN_SPIFI(cube_image_ref)) {
+ notify_completion(false);
+ }
+
+ // Compare content
+ if (cube_image_sz != cube_image_ref_sz) {
+ notify_completion(false);
+ } else {
+ int i = 0;
+ for (; i < cube_image_sz; i++) {
+ if (cube_image[i] != cube_image_ref[i]) {
+ notify_completion(false);
+ }
+ }
+ }
+
+ notify_completion(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi1/spifi_rom_api.h b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi1/spifi_rom_api.h
new file mode 100644
index 0000000000..baacb38209
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi1/spifi_rom_api.h
@@ -0,0 +1,165 @@
+/* definitions for ROM API for SPIFI in NXP MCUs
+ copyright (c) 2010 NXP Semiconductors
+ written by CAM start 4/16/10
+ first testing 5/12/10
+ OK with first SST & Winbond devices 6/8/10
+ OK with Gigadevice, Numonyx, Atmel,
+ some Macronyx 7/13/10
+ consensus with BK, performance optimized 8/24/10
+ this file is largely platform-independent */
+
+#ifndef SPIFI_ROM_API_H
+#define SPIFI_ROM_API_H
+
+
+#define SPIFI_MEM_BASE 0x28000000
+/* allocated size of the SPIFI memory area on this device */
+#define MEM_AREA_SIZE 0x00001000
+#define SPIFI_ROM_PTR 0x1FFF1FF8
+
+/* define the symbol TESTING in the environment if test output desired */
+
+/* maintain LONGEST_PROT >= the length (in bytes) of the largest
+ protection block of any serial flash that this driver handles */
+#define LONGEST_PROT 68
+
+/* protection/sector descriptors */
+typedef struct {
+ unsigned base;
+ uint8_t flags;
+ signed char log2;
+ uint16_t rept;
+} protEnt;
+
+typedef union {
+ uint16_t hw;
+ uint8_t byte[2];
+}stat_t;
+
+/* the object that init returns, and other routines use as an operand */
+typedef struct {
+ unsigned base, regbase, devSize, memSize;
+ uint8_t mfger, devType, devID, busy;
+ stat_t stat;
+ uint16_t reserved;
+ uint16_t set_prot, write_prot;
+ unsigned mem_cmd, prog_cmd;
+ uint16_t sectors, protBytes;
+ unsigned opts, errCheck;
+ uint8_t erase_shifts[4], erase_ops[4];
+ protEnt *protEnts;
+ char prot[LONGEST_PROT];
+} SPIFIobj;
+
+/* operands of program and erase */
+typedef struct {
+ char *dest; /* starting address for programming or erasing */
+ unsigned length; /* number of bytes to be programmed or erased */
+ char *scratch; /* address of work area or NULL */
+ int protect; /* protection to apply after programming/erasing is done */
+ unsigned options; /* see the table below */
+} SPIFIopers;
+
+
+/* bits in options operands (MODE3, RCVCLK, and FULLCLK
+ have the same relationship as in the Control register) */
+#define S_MODE3 1
+#define S_MODE0 0
+#define S_MINIMAL 2
+#define S_MAXIMAL 0
+#define S_FORCE_ERASE 4
+#define S_ERASE_NOT_REQD 8
+#define S_CALLER_ERASE 8
+#define S_ERASE_AS_REQD 0
+#define S_VERIFY_PROG 0x10
+#define S_VERIFY_ERASE 0x20
+#define S_NO_VERIFY 0
+#define S_RCVCLK 0x80
+#define S_INTCLK 0
+#define S_FULLCLK 0x40
+#define S_HALFCLK 0
+#define S_DUAL 0x100
+#define S_CALLER_PROT 0x200
+#define S_DRIVER_PROT 0
+
+/* the length of a standard program command is 256 on all devices */
+#define PROG_SIZE 256
+
+/* interface to ROM API */
+typedef struct {
+ int (*spifi_init) (SPIFIobj *obj, unsigned csHigh, unsigned options,
+ unsigned mhz);
+ int (*spifi_program) (SPIFIobj *obj, char *source, SPIFIopers *opers);
+ int (*spifi_erase) (SPIFIobj *obj, SPIFIopers *opers);
+ /* mode switching */
+ void (*cancel_mem_mode)(SPIFIobj *obj);
+ void (*set_mem_mode) (SPIFIobj *obj);
+
+ /* mid level functions */
+ int (*checkAd) (SPIFIobj *obj, SPIFIopers *opers);
+ int (*setProt) (SPIFIobj *obj, SPIFIopers *opers, char *change,
+ char *saveProt);
+ int (*check_block) (SPIFIobj *obj, char *source, SPIFIopers *opers,
+ unsigned check_program);
+ int (*send_erase_cmd) (SPIFIobj *obj, unsigned char op, unsigned addr);
+ unsigned (*ck_erase) (SPIFIobj *obj, unsigned *addr, unsigned length);
+ int (*prog_block) (SPIFIobj *obj, char *source, SPIFIopers *opers,
+ unsigned *left_in_page);
+ unsigned (*ck_prog) (SPIFIobj *obj, char *source, char *dest, unsigned length);
+
+ /* low level functions */
+ void(*setSize) (SPIFIobj *obj, int value);
+ int (*setDev) (SPIFIobj *obj, unsigned opts, unsigned mem_cmd,
+ unsigned prog_cmd);
+ unsigned (*cmd) (uint8_t op, uint8_t addrLen, uint8_t intLen, unsigned short len);
+ unsigned (*readAd) (SPIFIobj *obj, unsigned cmd, unsigned addr);
+ void (*send04) (SPIFIobj *obj, uint8_t op, uint8_t len, unsigned value);
+ void (*wren_sendAd) (SPIFIobj *obj, unsigned cmd, unsigned addr, unsigned value);
+ int (*write_stat) (SPIFIobj *obj, uint8_t len, uint16_t value);
+ int (*wait_busy) (SPIFIobj *obj, uint8_t prog_or_erase);
+} SPIFI_RTNS;
+
+//#define define_spifi_romPtr(name) const SPIFI_RTNS *name=*((SPIFI_RTNS **)SPIFI_ROM_PTR)
+
+/* example of using this interface:
+#include "spifi_rom_api.h"
+#define CSHIGH 4
+#define SPIFI_MHZ 80
+#define source_data_ad (char *)1234
+
+ int rc;
+ SPIFIopers opers;
+
+ define_spifi_romPtr(spifi);
+ SPIFIobj *obj = malloc(sizeof(SPIFIobj));
+ if (!obj) { can't allocate memory }
+
+ rc = spifi->spifi_init (obj, CSHIGH, S_FULLCLK+S_RCVCLK, SPIFI_MHZ);
+ if (rc) { investigate init error rc }
+ printf ("the serial flash contains %d bytes\n", obj->devSize);
+
+ opers.dest = where_to_program;
+ opers.length = how_many_bytes;
+ opers.scratch = NULL; // unprogrammed data is not saved/restored
+ opers.protect = -1; // save & restore protection
+ opers.options = S_VERIFY_PROG;
+
+ rc = spifi->spifi_program (obj, source_data_ad, &opers);
+ if (rc) { investigate program error rc }
+*/
+
+/* these are for normal users, including boot code */
+int spifi_init (SPIFIobj *obj, unsigned csHigh, unsigned options, unsigned mhz);
+int spifi_program (SPIFIobj *obj, char *source, SPIFIopers *opers);
+int spifi_erase (SPIFIobj *obj, SPIFIopers *opers);
+
+/* these are used by the manufacturer-specific init functions */
+void setSize (SPIFIobj *obj, int value);
+int setDev (SPIFIobj *obj, unsigned opts, unsigned mem_cmd, unsigned prog_cmd);
+unsigned read04(SPIFIobj *obj, uint8_t op, uint8_t len);
+int write_stat (SPIFIobj *obj, uint8_t len, uint16_t value);
+void setProtEnts(SPIFIobj *obj, const protEnt *p, unsigned protTabLen);
+
+#endif
+
+
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/main.cpp
new file mode 100644
index 0000000000..aac2a00d91
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/main.cpp
@@ -0,0 +1,100 @@
+#include "test_env.h"
+#include "mbed.h"
+#include "spifi_rom_api.h"
+
+extern const unsigned char splash_image1[]; extern int splash_image1_sz;
+extern const unsigned char splash_image2[]; extern int splash_image2_sz;
+extern const unsigned char splash_image3[]; extern int splash_image3_sz;
+extern const unsigned char splash_image4[]; extern int splash_image4_sz;
+extern const unsigned char splash_image5[]; extern int splash_image5_sz;
+extern const unsigned char splash_image6[]; extern int splash_image6_sz;
+extern const unsigned char splash_image7[]; extern int splash_image7_sz;
+extern const unsigned char splash_image8[]; extern int splash_image8_sz;
+extern const unsigned char splash_image9[]; extern int splash_image9_sz;
+extern const unsigned char splash_image10[]; extern int splash_image10_sz;
+extern const unsigned char splash_image11[]; extern int splash_image11_sz;
+extern const unsigned char splash_image12[]; extern int splash_image12_sz;
+extern const unsigned char splash_image13[]; extern int splash_image13_sz;
+extern const unsigned char splash_image14[]; extern int splash_image14_sz;
+extern const unsigned char splash_image15[]; extern int splash_image15_sz;
+
+/*
+ * The SPIFI_ROM_PTR (0x1FFF1FF8) points to an area where the pointers to
+ * different drivers in ROM are stored.
+ */
+typedef struct {
+ /*const*/ unsigned p_usbd; // USBROMD
+ /*const*/ unsigned p_clib;
+ /*const*/ unsigned p_cand;
+ /*const*/ unsigned p_pwrd; // PWRROMD
+ /*const*/ unsigned p_promd; // DIVROMD
+ /*const*/ SPIFI_RTNS *pSPIFID; // SPIFIROMD
+ /*const*/ unsigned p_dev3;
+ /*const*/ unsigned p_dev4;
+} ROM;
+
+#define ROM_DRIVERS_PTR ((ROM *)(*((unsigned int *)SPIFI_ROM_PTR)))
+#define IS_ADDR_IN_SPIFI(__addr) ( (((uint32_t)(__addr)) & 0xff000000) == SPIFI_MEM_BASE )
+#define IS_ADDR_IN_IFLASH(__addr) ( (((uint32_t)(__addr)) & 0xff000000) == 0x10000000 )
+
+static void initialize_spifi(void)
+{
+ SPIFIobj* obj = (SPIFIobj*)malloc(sizeof(SPIFIobj));
+ if (obj == NULL) {
+ // Failed to allocate memory for ROM data
+ notify_completion(false);
+ }
+
+ // Turn on SPIFI block as it is disabled on reset
+ LPC_SC->PCONP |= 0x00010000;
+
+ // pinsel for SPIFI
+ LPC_IOCON->P2_7 = 5; /* SPIFI_CSN @ P2.7 */
+ LPC_IOCON->P0_22 = 5; /* SPIFI_CLK @ P0.22 */
+ LPC_IOCON->P0_15 = 5; /* SPIFI_IO2 @ P0.15 */
+ LPC_IOCON->P0_16 = 5; /* SPIFI_IO3 @ P0.16 */
+ LPC_IOCON->P0_17 = 5; /* SPIFI_IO1 @ P0.17 */
+ LPC_IOCON->P0_18 = 5; /* SPIFI_IO0 @ P0.18 */
+
+ uint32_t spifi_clk_div = (*((volatile uint32_t*)0x400FC1B4)) & 0x1f;
+ uint32_t spifi_clk_mhz = (SystemCoreClock / spifi_clk_div) / 1000000;
+
+ const SPIFI_RTNS* _spifi = ROM_DRIVERS_PTR->pSPIFID;
+
+ /* Typical time tCS is 20 ns min, we give 200 ns to be on safer side */
+ int rc = _spifi->spifi_init (obj, spifi_clk_mhz/5, S_FULLCLK+S_RCVCLK, spifi_clk_mhz);
+ if (rc) {
+ // Failed to initialize SPIFI
+ notify_completion(false);
+ }
+}
+
+int main() {
+
+ initialize_spifi();
+
+ // Make sure that most files are placed in IFLASH
+ if (IS_ADDR_IN_SPIFI(splash_image1) ||
+ IS_ADDR_IN_SPIFI(splash_image2) ||
+ IS_ADDR_IN_SPIFI(splash_image3) ||
+ IS_ADDR_IN_SPIFI(splash_image4) ||
+ IS_ADDR_IN_SPIFI(splash_image5) ||
+ IS_ADDR_IN_SPIFI(splash_image6) ||
+ IS_ADDR_IN_SPIFI(splash_image7) ||
+ IS_ADDR_IN_SPIFI(splash_image8) ||
+ IS_ADDR_IN_SPIFI(splash_image9) ||
+ IS_ADDR_IN_SPIFI(splash_image10) ||
+ IS_ADDR_IN_SPIFI(splash_image11) ||
+ IS_ADDR_IN_SPIFI(splash_image12) ||
+ IS_ADDR_IN_SPIFI(splash_image13) ||
+ IS_ADDR_IN_SPIFI(splash_image14)) {
+ notify_completion(false);
+ }
+
+ // Make sure that splash_image15 is placed in SPIFI
+ if (!IS_ADDR_IN_SPIFI(splash_image15)) {
+ notify_completion(false);
+ }
+
+ notify_completion(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/spifi_rom_api.h b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/spifi_rom_api.h
new file mode 100644
index 0000000000..baacb38209
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/spifi_rom_api.h
@@ -0,0 +1,165 @@
+/* definitions for ROM API for SPIFI in NXP MCUs
+ copyright (c) 2010 NXP Semiconductors
+ written by CAM start 4/16/10
+ first testing 5/12/10
+ OK with first SST & Winbond devices 6/8/10
+ OK with Gigadevice, Numonyx, Atmel,
+ some Macronyx 7/13/10
+ consensus with BK, performance optimized 8/24/10
+ this file is largely platform-independent */
+
+#ifndef SPIFI_ROM_API_H
+#define SPIFI_ROM_API_H
+
+
+#define SPIFI_MEM_BASE 0x28000000
+/* allocated size of the SPIFI memory area on this device */
+#define MEM_AREA_SIZE 0x00001000
+#define SPIFI_ROM_PTR 0x1FFF1FF8
+
+/* define the symbol TESTING in the environment if test output desired */
+
+/* maintain LONGEST_PROT >= the length (in bytes) of the largest
+ protection block of any serial flash that this driver handles */
+#define LONGEST_PROT 68
+
+/* protection/sector descriptors */
+typedef struct {
+ unsigned base;
+ uint8_t flags;
+ signed char log2;
+ uint16_t rept;
+} protEnt;
+
+typedef union {
+ uint16_t hw;
+ uint8_t byte[2];
+}stat_t;
+
+/* the object that init returns, and other routines use as an operand */
+typedef struct {
+ unsigned base, regbase, devSize, memSize;
+ uint8_t mfger, devType, devID, busy;
+ stat_t stat;
+ uint16_t reserved;
+ uint16_t set_prot, write_prot;
+ unsigned mem_cmd, prog_cmd;
+ uint16_t sectors, protBytes;
+ unsigned opts, errCheck;
+ uint8_t erase_shifts[4], erase_ops[4];
+ protEnt *protEnts;
+ char prot[LONGEST_PROT];
+} SPIFIobj;
+
+/* operands of program and erase */
+typedef struct {
+ char *dest; /* starting address for programming or erasing */
+ unsigned length; /* number of bytes to be programmed or erased */
+ char *scratch; /* address of work area or NULL */
+ int protect; /* protection to apply after programming/erasing is done */
+ unsigned options; /* see the table below */
+} SPIFIopers;
+
+
+/* bits in options operands (MODE3, RCVCLK, and FULLCLK
+ have the same relationship as in the Control register) */
+#define S_MODE3 1
+#define S_MODE0 0
+#define S_MINIMAL 2
+#define S_MAXIMAL 0
+#define S_FORCE_ERASE 4
+#define S_ERASE_NOT_REQD 8
+#define S_CALLER_ERASE 8
+#define S_ERASE_AS_REQD 0
+#define S_VERIFY_PROG 0x10
+#define S_VERIFY_ERASE 0x20
+#define S_NO_VERIFY 0
+#define S_RCVCLK 0x80
+#define S_INTCLK 0
+#define S_FULLCLK 0x40
+#define S_HALFCLK 0
+#define S_DUAL 0x100
+#define S_CALLER_PROT 0x200
+#define S_DRIVER_PROT 0
+
+/* the length of a standard program command is 256 on all devices */
+#define PROG_SIZE 256
+
+/* interface to ROM API */
+typedef struct {
+ int (*spifi_init) (SPIFIobj *obj, unsigned csHigh, unsigned options,
+ unsigned mhz);
+ int (*spifi_program) (SPIFIobj *obj, char *source, SPIFIopers *opers);
+ int (*spifi_erase) (SPIFIobj *obj, SPIFIopers *opers);
+ /* mode switching */
+ void (*cancel_mem_mode)(SPIFIobj *obj);
+ void (*set_mem_mode) (SPIFIobj *obj);
+
+ /* mid level functions */
+ int (*checkAd) (SPIFIobj *obj, SPIFIopers *opers);
+ int (*setProt) (SPIFIobj *obj, SPIFIopers *opers, char *change,
+ char *saveProt);
+ int (*check_block) (SPIFIobj *obj, char *source, SPIFIopers *opers,
+ unsigned check_program);
+ int (*send_erase_cmd) (SPIFIobj *obj, unsigned char op, unsigned addr);
+ unsigned (*ck_erase) (SPIFIobj *obj, unsigned *addr, unsigned length);
+ int (*prog_block) (SPIFIobj *obj, char *source, SPIFIopers *opers,
+ unsigned *left_in_page);
+ unsigned (*ck_prog) (SPIFIobj *obj, char *source, char *dest, unsigned length);
+
+ /* low level functions */
+ void(*setSize) (SPIFIobj *obj, int value);
+ int (*setDev) (SPIFIobj *obj, unsigned opts, unsigned mem_cmd,
+ unsigned prog_cmd);
+ unsigned (*cmd) (uint8_t op, uint8_t addrLen, uint8_t intLen, unsigned short len);
+ unsigned (*readAd) (SPIFIobj *obj, unsigned cmd, unsigned addr);
+ void (*send04) (SPIFIobj *obj, uint8_t op, uint8_t len, unsigned value);
+ void (*wren_sendAd) (SPIFIobj *obj, unsigned cmd, unsigned addr, unsigned value);
+ int (*write_stat) (SPIFIobj *obj, uint8_t len, uint16_t value);
+ int (*wait_busy) (SPIFIobj *obj, uint8_t prog_or_erase);
+} SPIFI_RTNS;
+
+//#define define_spifi_romPtr(name) const SPIFI_RTNS *name=*((SPIFI_RTNS **)SPIFI_ROM_PTR)
+
+/* example of using this interface:
+#include "spifi_rom_api.h"
+#define CSHIGH 4
+#define SPIFI_MHZ 80
+#define source_data_ad (char *)1234
+
+ int rc;
+ SPIFIopers opers;
+
+ define_spifi_romPtr(spifi);
+ SPIFIobj *obj = malloc(sizeof(SPIFIobj));
+ if (!obj) { can't allocate memory }
+
+ rc = spifi->spifi_init (obj, CSHIGH, S_FULLCLK+S_RCVCLK, SPIFI_MHZ);
+ if (rc) { investigate init error rc }
+ printf ("the serial flash contains %d bytes\n", obj->devSize);
+
+ opers.dest = where_to_program;
+ opers.length = how_many_bytes;
+ opers.scratch = NULL; // unprogrammed data is not saved/restored
+ opers.protect = -1; // save & restore protection
+ opers.options = S_VERIFY_PROG;
+
+ rc = spifi->spifi_program (obj, source_data_ad, &opers);
+ if (rc) { investigate program error rc }
+*/
+
+/* these are for normal users, including boot code */
+int spifi_init (SPIFIobj *obj, unsigned csHigh, unsigned options, unsigned mhz);
+int spifi_program (SPIFIobj *obj, char *source, SPIFIopers *opers);
+int spifi_erase (SPIFIobj *obj, SPIFIopers *opers);
+
+/* these are used by the manufacturer-specific init functions */
+void setSize (SPIFIobj *obj, int value);
+int setDev (SPIFIobj *obj, unsigned opts, unsigned mem_cmd, unsigned prog_cmd);
+unsigned read04(SPIFIobj *obj, uint8_t op, uint8_t len);
+int write_stat (SPIFIobj *obj, uint8_t len, uint16_t value);
+void setProtEnts(SPIFIobj *obj, const protEnt *p, unsigned protTabLen);
+
+#endif
+
+
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage01.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage01.c
new file mode 100644
index 0000000000..a02f6be708
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage01.c
@@ -0,0 +1,2167 @@
+const unsigned char splash_image1[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82,
+146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,
+43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7,
+184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206,
+57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88,
+98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68,
+122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32,
+88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214,
+222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152,
+99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12,
+50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108,
+115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218,
+182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104,
+115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124,
+194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180,
+103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36,
+182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149,
+110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201,
+37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57,
+21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126,
+175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141,
+58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108,
+236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44,
+203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85,
+89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149,
+223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88,
+46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157,
+86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165,
+239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201,
+132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89,
+38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109,
+174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53,
+43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9,
+182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164,
+41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90,
+185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226,
+186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223,
+111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155,
+120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5,
+87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7,
+157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150,
+231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164,
+41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42,
+183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251,
+157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75,
+47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76,
+203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184,
+86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229,
+1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153,
+199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198,
+158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212,
+247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182,
+167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157,
+246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182,
+196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215,
+185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29,
+72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152,
+116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152,
+140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73,
+134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76,
+39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233,
+242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174,
+61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75,
+63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253,
+48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175,
+16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172,
+133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197,
+117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216,
+203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249,
+94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237,
+241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64,
+110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34,
+93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53,
+35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185,
+245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191,
+58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186,
+173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157,
+59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222,
+163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115,
+174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66,
+224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4,
+90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222,
+71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231,
+94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233,
+170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182,
+82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148,
+114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175,
+200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101,
+62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168,
+82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3,
+36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137,
+173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45,
+3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12,
+50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,
+200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200,
+84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51,
+196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86,
+195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247,
+122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162,
+139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91,
+88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191,
+85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159,
+105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207,
+53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211,
+142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81,
+94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182,
+41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131,
+236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27,
+109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147,
+5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151,
+140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188,
+137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173,
+166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215,
+1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61,
+246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203,
+97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181,
+0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233,
+194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92,
+69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102,
+207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226,
+124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59,
+245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103,
+88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27,
+249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73,
+180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28,
+166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239,
+180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86,
+129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254,
+190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250,
+45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83,
+116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227,
+231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223,
+178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28,
+166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254,
+58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73,
+149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89,
+231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215,
+195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201,
+211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171,
+42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50,
+215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235,
+201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152,
+6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93,
+178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255,
+111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235,
+141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159,
+233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206,
+199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116,
+137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223,
+92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49,
+25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255,
+143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147,
+209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152,
+76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79,
+207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108,
+123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231,
+99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252,
+242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12,
+245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212,
+109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220,
+181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167,
+44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219,
+61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95,
+46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99,
+73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214,
+231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73,
+101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142,
+46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45,
+24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46,
+60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122,
+142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167,
+147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140,
+227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140,
+109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249,
+157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55,
+231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178,
+184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69,
+50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241,
+107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120,
+94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165,
+190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246,
+90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211,
+242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4,
+186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61,
+200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25,
+100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,
+170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,
+12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,
+144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,
+24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,
+100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100,
+144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98,
+123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205,
+55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28,
+179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252,
+228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186,
+230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215,
+94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226,
+94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119,
+148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75,
+141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69,
+115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1,
+7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233,
+159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255,
+220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204,
+230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37,
+134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75,
+35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47,
+236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188,
+121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0,
+120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249,
+200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183,
+230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185,
+187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210,
+208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243,
+165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135,
+62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85,
+243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158,
+6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47,
+126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205,
+126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130,
+14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4,
+10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199,
+31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108,
+118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96,
+220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196,
+39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45,
+111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30,
+52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200,
+0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94,
+121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249,
+206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243,
+156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176,
+143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232,
+106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223,
+222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239,
+194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231,
+53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0,
+192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233,
+174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231,
+55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121,
+195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125,
+112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19,
+225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158,
+244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92,
+90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110,
+89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70,
+16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234,
+0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199,
+152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127,
+248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239,
+127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48,
+240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242,
+172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187,
+135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214,
+179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99,
+216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143,
+187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242,
+230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7,
+54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64,
+193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70,
+9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182,
+223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223,
+119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156,
+114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93,
+239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2,
+21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38,
+3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192,
+82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135,
+235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206,
+43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8,
+12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184,
+227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221,
+3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244,
+162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199,
+59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73,
+122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113,
+223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100,
+125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120,
+5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103,
+116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205,
+43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68,
+206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80,
+28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47,
+40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241,
+238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87,
+190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251,
+187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88,
+96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119,
+12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39,
+3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237,
+186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215,
+45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74,
+6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88,
+3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204,
+140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15,
+12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112,
+140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167,
+231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54,
+239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24,
+129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9,
+32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128,
+65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49,
+195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178,
+107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76,
+2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93,
+215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192,
+1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105,
+128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2,
+129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175,
+118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226,
+73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80,
+136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137,
+39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138,
+87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61,
+96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121,
+1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184,
+23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249,
+17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20,
+32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144,
+95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34,
+112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66,
+87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215,
+158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192,
+72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18,
+149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222,
+243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210,
+1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181,
+46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104,
+33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160,
+0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242,
+1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250,
+210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113,
+201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114,
+101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189,
+205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195,
+72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163,
+214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217,
+157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51,
+13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166,
+0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3,
+120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184,
+3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58,
+206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215,
+126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115,
+207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114,
+100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217,
+240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117,
+21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187,
+48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185,
+93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3,
+34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202,
+0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199,
+22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70,
+204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234,
+122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154,
+115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205,
+197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241,
+227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8,
+117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123,
+220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70,
+3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206,
+189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27,
+215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45,
+94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97,
+255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116,
+215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19,
+182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158,
+128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118,
+93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72,
+172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231,
+243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212,
+246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5,
+11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235,
+152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54,
+251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15,
+1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109,
+154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183,
+235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186,
+235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184,
+199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204,
+75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225,
+93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159,
+255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130,
+144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241,
+30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97,
+130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104,
+189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111,
+128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215,
+127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6,
+125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9,
+221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178,
+221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69,
+157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102,
+180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225,
+58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60,
+10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10,
+210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133,
+152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16,
+27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84,
+231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162,
+23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215,
+10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101,
+40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139,
+115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144,
+88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93,
+9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66,
+43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234,
+155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60,
+9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26,
+20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115,
+206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7,
+20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136,
+238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3,
+156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73,
+7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55,
+187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119,
+189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72,
+116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146,
+123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66,
+134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99,
+152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123,
+62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0,
+116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199,
+147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48,
+252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61,
+90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241,
+48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246,
+183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231,
+185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132,
+53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57,
+150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88,
+154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183,
+205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187,
+219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195,
+194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113,
+137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160,
+5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196,
+216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100,
+95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207,
+161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174,
+21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241,
+254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105,
+118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184,
+60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214,
+197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52,
+93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64,
+237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188,
+9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173,
+6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88,
+42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114,
+142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146,
+151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143,
+67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49,
+93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181,
+164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9,
+128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4,
+3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41,
+80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73,
+173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153,
+145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113,
+187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114,
+76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204,
+110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214,
+128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221,
+237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208,
+218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70,
+206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4,
+26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224,
+107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63,
+150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132,
+214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30,
+251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217,
+5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181,
+74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113,
+9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8,
+7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116,
+57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93,
+13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6,
+157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129,
+69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254,
+251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141,
+231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27,
+245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177,
+6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153,
+54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245,
+219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114,
+234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17,
+52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97,
+215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23,
+8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192,
+203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139,
+231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53,
+173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36,
+8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87,
+193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203,
+104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180,
+50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32,
+106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192,
+3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78,
+129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117,
+196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214,
+12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28,
+9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211,
+108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4,
+67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96,
+224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238,
+239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47,
+53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251,
+159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124,
+234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101,
+128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102,
+94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109,
+59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16,
+92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198,
+224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147,
+198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6,
+159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175,
+225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130,
+60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0,
+2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124,
+10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65,
+75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107,
+245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56,
+156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215,
+179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106,
+45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198,
+174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67,
+160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98,
+178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160,
+86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10,
+198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98,
+152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0,
+134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185,
+251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202,
+124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7,
+101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101,
+68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204,
+73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184,
+188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83,
+174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202,
+144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176,
+206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37,
+79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129,
+150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7,
+219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0,
+166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242,
+27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104,
+164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31,
+183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136,
+186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131,
+97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235,
+154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129,
+23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220,
+51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187,
+16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193,
+126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164,
+81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155,
+150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73,
+250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129,
+145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4,
+195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9,
+8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56,
+68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37,
+13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115,
+1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32,
+210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36,
+136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241,
+70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90,
+182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84,
+190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234,
+59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24,
+136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40,
+141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7,
+17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234,
+202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149,
+109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210,
+197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101,
+170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223,
+121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138,
+109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38,
+100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180,
+110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14,
+12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12,
+117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192,
+16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45,
+47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252,
+5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86,
+94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227,
+229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45,
+0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13,
+177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148,
+90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174,
+53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145,
+120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116,
+49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192,
+64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95,
+9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120,
+134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29,
+111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186,
+235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249,
+122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2,
+111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17,
+10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161,
+201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2,
+66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193,
+32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233,
+98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244,
+12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129,
+133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179,
+121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153,
+223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117,
+131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150,
+63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114,
+91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7,
+149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1,
+32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17,
+111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207,
+194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218,
+123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103,
+25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12,
+246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186,
+242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94,
+223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103,
+229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143,
+6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101,
+10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230,
+159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245,
+55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34,
+49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30,
+68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171,
+238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210,
+205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45,
+191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212,
+185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237,
+177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127,
+130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180,
+208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86,
+31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16,
+62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127,
+104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129,
+68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76,
+235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49,
+24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172,
+131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234,
+109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98,
+33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241,
+248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121,
+99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188,
+83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48,
+89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129,
+197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10,
+137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110,
+10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2,
+68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110,
+70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111,
+130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246,
+101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46,
+161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93,
+155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181,
+67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116,
+229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36,
+120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132,
+132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226,
+61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26,
+137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176,
+101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17,
+125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101,
+108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79,
+44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129,
+151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222,
+125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241,
+89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246,
+251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242,
+246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18,
+192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120,
+18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64,
+66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141,
+196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35,
+195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107,
+109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186,
+17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145,
+232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1,
+18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219,
+111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242,
+80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202,
+19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232,
+70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31,
+221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197,
+35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150,
+53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36,
+196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54,
+190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240,
+194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148,
+222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173,
+153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41,
+80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155,
+218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233,
+121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33,
+81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4,
+43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219,
+1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222,
+4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196,
+123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247,
+67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200,
+48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221,
+181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196,
+19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130,
+66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163,
+0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125,
+174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45,
+223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45,
+1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104,
+6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160,
+188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131,
+176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33,
+202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151,
+150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122,
+234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184,
+87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164,
+128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217,
+173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90,
+2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12,
+144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48,
+136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173,
+55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251,
+253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10,
+191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143,
+65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50,
+88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21,
+192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217,
+0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185,
+194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140,
+138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242,
+207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129,
+50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144,
+176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30,
+137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186,
+158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91,
+91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22,
+8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207,
+123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171,
+47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101,
+93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74,
+162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235,
+137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224,
+57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10,
+212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135,
+94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2,
+12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128,
+200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29,
+216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153,
+216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236,
+158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219,
+115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2,
+240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216,
+195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173,
+243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222,
+115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73,
+32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71,
+31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192,
+33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12,
+60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13,
+219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225,
+173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1,
+141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245,
+103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56,
+78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4,
+137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11,
+28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164,
+46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56,
+19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96,
+112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173,
+253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91,
+241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1,
+200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44,
+222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89,
+25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144,
+46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131,
+133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230,
+85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157,
+161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64,
+194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103,
+180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139,
+161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179,
+77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29,
+232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163,
+107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216,
+233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188,
+123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57,
+94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165,
+231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15,
+46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26,
+125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7,
+130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1,
+7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232,
+70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198,
+15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20,
+207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29,
+6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249,
+180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103,
+219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184,
+175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3,
+20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112,
+12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158,
+219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36,
+123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220,
+115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35,
+202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163,
+213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232,
+54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171,
+18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75,
+75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33,
+100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237,
+78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59,
+230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185,
+241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18,
+12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113,
+47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15,
+96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251,
+1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86,
+114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23,
+181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29,
+40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7,
+193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150,
+203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227,
+61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215,
+215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222,
+133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147,
+0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177,
+45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96,
+88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12,
+27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82,
+193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90,
+102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186,
+242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66,
+110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111,
+255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248,
+175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119,
+186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13,
+2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184,
+131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219,
+15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25,
+28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250,
+104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22,
+74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194,
+142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86,
+62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211,
+109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117,
+251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13,
+188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103,
+5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182,
+220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248,
+64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189,
+173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243,
+199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153,
+42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109,
+164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80,
+209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158,
+131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219,
+181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119,
+180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65,
+107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154,
+84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155,
+81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94,
+5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2,
+14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178,
+244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231,
+90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48,
+58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196,
+149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0,
+224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47,
+40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110,
+35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65,
+5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64,
+128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224,
+81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240,
+42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24,
+168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16,
+38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64,
+136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254,
+65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28,
+167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162,
+251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189,
+220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50,
+125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211,
+0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47,
+141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142,
+240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32,
+243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158,
+4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208,
+1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108,
+149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97,
+64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10,
+52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67,
+160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0,
+22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160,
+40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32,
+248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86,
+249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4,
+222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230,
+188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46,
+239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114,
+76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103,
+68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9,
+138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74,
+149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50,
+40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221,
+12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173,
+41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4,
+94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96,
+16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132,
+101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47,
+98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220,
+226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91,
+150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247,
+172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251,
+58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5,
+106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134,
+132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85,
+66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242,
+32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144,
+180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197,
+102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30,
+120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174,
+101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19,
+32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73,
+75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99,
+244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107,
+253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77,
+98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113,
+214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99,
+210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202,
+82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23,
+81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184,
+215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241,
+38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81,
+241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22,
+152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112,
+229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84,
+74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0,
+161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142,
+139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119,
+101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52,
+202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203,
+61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252,
+184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191,
+21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233,
+212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94,
+64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132,
+190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72,
+196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121,
+17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75,
+90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5,
+2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173,
+197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75,
+112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194,
+232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42,
+157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97,
+116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156,
+119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147,
+250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221,
+175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117,
+8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243,
+151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174,
+27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23,
+163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105,
+144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251,
+24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193,
+130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48,
+21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24,
+24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116,
+90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20,
+165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96,
+60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72,
+186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191,
+63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81,
+229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254,
+231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254,
+97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142,
+222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226,
+166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9,
+9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0,
+43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68,
+43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26,
+96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90,
+186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89,
+143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8,
+24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199,
+120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197,
+249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160,
+246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164,
+62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52,
+191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238,
+221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172,
+107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96,
+220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132,
+22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128,
+97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17,
+4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164,
+165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93,
+59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242,
+200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128,
+17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122,
+46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223,
+182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52,
+40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246,
+182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222,
+247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47,
+93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255,
+223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86,
+191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21,
+94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76,
+229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29,
+215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95,
+246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37,
+24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168,
+12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111,
+202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1,
+28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89,
+150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121,
+251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191,
+249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142,
+127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42,
+19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39,
+18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246,
+90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226,
+57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171,
+97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74,
+199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71,
+116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251,
+121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40,
+3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179,
+40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111,
+41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123,
+98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107,
+23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173,
+223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26,
+223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71,
+89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134,
+192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130,
+254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254,
+197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150,
+97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245,
+101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241,
+130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0,
+65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103,
+159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162,
+140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27,
+0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128,
+5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183,
+190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18,
+126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128,
+217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239,
+197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96,
+240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60,
+145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247,
+2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82,
+144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128,
+65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24,
+140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49,
+212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77,
+51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199,
+72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224,
+165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16,
+90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134,
+27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227,
+29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49,
+196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141,
+140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4,
+14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144,
+140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81,
+2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96,
+105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75,
+76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169,
+181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130,
+6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4,
+67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169,
+129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2,
+134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91,
+191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72,
+40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202,
+241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10,
+165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51,
+42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224,
+69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107,
+136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192,
+64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46,
+5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11,
+65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94,
+68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140,
+83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119,
+93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118,
+183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247,
+208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26,
+140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0,
+134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5,
+253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136,
+64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3,
+173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116,
+0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190,
+193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114,
+4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34,
+45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166,
+139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137,
+120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65,
+186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173,
+101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51,
+3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80,
+68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178,
+81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120,
+16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28,
+64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60,
+146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42,
+210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156,
+92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21,
+130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80,
+160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149,
+50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166,
+117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175,
+132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70,
+169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214,
+129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128,
+131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106,
+29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221,
+237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165,
+214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16,
+159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239,
+160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245,
+246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114,
+70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47,
+17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66,
+142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1,
+14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5,
+5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32,
+81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90,
+166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46,
+0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180,
+150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135,
+85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37,
+120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233,
+94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160,
+242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210,
+209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96,
+145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109,
+3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160,
+54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91,
+92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20,
+32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49,
+240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33,
+81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142,
+50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115,
+41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220,
+156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3,
+5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160,
+75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230,
+74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40,
+65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3,
+10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40,
+210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99,
+175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226,
+17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4,
+47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54,
+227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213,
+5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118,
+128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77,
+148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70,
+62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54,
+149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235,
+26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98,
+105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193,
+62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32,
+1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50,
+128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102,
+186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75,
+24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77,
+242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151,
+240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123,
+192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51,
+203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28,
+1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74,
+143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34,
+90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230,
+254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36,
+184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193,
+75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64,
+68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159,
+18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17,
+111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71,
+70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105,
+160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117,
+240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178,
+151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34,
+196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164,
+184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150,
+93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222,
+4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34,
+64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152,
+153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84,
+46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140,
+27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40,
+150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163,
+30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3,
+153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60,
+5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112,
+112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172,
+13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208,
+209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236,
+139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68,
+13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212,
+94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49,
+98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225,
+16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186,
+134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94,
+46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24,
+196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217,
+237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62,
+17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23,
+36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228,
+57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61,
+228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36,
+72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98,
+130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138,
+232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17,
+111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64,
+145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178,
+205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109,
+121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86,
+227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49,
+34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144,
+40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232,
+155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83,
+235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29,
+235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102,
+246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151,
+16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229,
+48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187,
+29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164,
+131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128,
+4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143,
+135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240,
+210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9,
+200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208,
+242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25,
+27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60,
+90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132,
+60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103,
+145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176,
+14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143,
+229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235,
+133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97,
+20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27,
+178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177,
+169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147,
+40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6,
+20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112,
+176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6,
+129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171,
+102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72,
+240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200,
+155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242,
+178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101,
+224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49,
+173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80,
+0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126,
+144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176,
+128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104,
+197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56,
+103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215,
+254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250,
+130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174,
+68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74,
+80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16,
+19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24,
+0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229,
+193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216,
+216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192,
+37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80,
+112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89,
+247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115,
+151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142,
+190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209,
+73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194,
+160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227,
+224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92,
+195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187,
+150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16,
+242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7,
+20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144,
+48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67,
+100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15,
+20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188,
+11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168,
+31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251,
+181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232,
+190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240,
+8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190,
+0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202,
+239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195,
+112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235,
+101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248,
+4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226,
+241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16,
+225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52,
+117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143,
+64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28,
+90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208,
+200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172,
+108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84,
+68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18,
+18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248,
+4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51,
+26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108,
+235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183,
+2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64,
+170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112,
+83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1,
+67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91,
+154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14,
+94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176,
+157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194,
+58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167,
+188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186,
+35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203,
+33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37,
+239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204,
+43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15,
+14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225,
+108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75,
+149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1,
+18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160,
+182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112,
+62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22,
+235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13,
+131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238,
+35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12,
+222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114,
+93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17,
+72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181,
+181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89,
+123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33,
+90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30,
+128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48,
+116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48,
+62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103,
+56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131,
+37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33,
+195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202,
+200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151,
+170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190,
+68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126,
+45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149,
+96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144,
+1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177,
+11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23,
+98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120,
+101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91,
+2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108,
+149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168,
+1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162,
+246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16,
+103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15,
+3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7,
+80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237,
+179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199,
+203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24,
+168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245,
+251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138,
+100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12,
+34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7,
+9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237,
+183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142,
+51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96,
+66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134,
+29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200,
+241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233,
+130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53,
+36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167,
+18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169,
+37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12,
+223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225,
+39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1,
+97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134,
+94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169,
+242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110,
+89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161,
+60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150,
+140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157,
+48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24,
+136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34,
+202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227,
+45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220,
+95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126,
+91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240,
+98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47,
+33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138,
+192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110,
+189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42,
+157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141,
+26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208,
+151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195,
+0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94,
+133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158,
+93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46,
+7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121,
+210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6,
+20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250,
+122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148,
+87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191,
+255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205,
+192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69,
+208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65,
+194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69,
+186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181,
+209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121,
+202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89,
+217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1,
+47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38,
+162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28,
+183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208,
+160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224,
+74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65,
+48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247,
+252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144,
+128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23,
+35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81,
+238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216,
+47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24,
+85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127,
+26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229,
+115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131,
+68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164,
+178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210,
+245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5,
+6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10,
+6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97,
+244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126,
+75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81,
+226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153,
+84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157,
+185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52,
+72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250,
+96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65,
+140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203,
+91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192,
+238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147,
+170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6,
+131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37,
+48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2,
+138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236,
+104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150,
+111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255,
+245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203,
+68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86,
+13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145,
+49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18,
+53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102,
+127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178,
+175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229,
+117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47,
+255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120,
+70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191,
+111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102,
+238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128,
+162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40,
+181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22,
+53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120,
+133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52,
+127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59,
+54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25,
+250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19,
+9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165,
+217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197,
+36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34,
+176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98,
+252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0,
+248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29,
+12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115,
+159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120,
+179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230,
+33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19,
+151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82,
+160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62,
+9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232,
+3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26,
+249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155,
+223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14,
+10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156,
+12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214,
+188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195,
+170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88,
+80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134,
+4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45,
+75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0,
+34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119,
+126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221,
+41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30,
+92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195,
+212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239,
+5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145,
+150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56,
+84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129,
+132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131,
+5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196,
+53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127,
+253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150,
+188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176,
+179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24,
+121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140,
+120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143,
+73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86,
+134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26,
+32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88,
+103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20,
+246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91,
+119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188,
+132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121,
+77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185,
+22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167,
+223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181,
+144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18,
+222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1,
+162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108,
+7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236,
+186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105,
+126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31,
+100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25,
+166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75,
+119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208,
+189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182,
+106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94,
+246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168,
+1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210,
+155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0,
+0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207,
+225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221,
+6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60,
+5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77,
+67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12,
+158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229,
+11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222,
+69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180,
+224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15,
+65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143,
+128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20,
+248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195,
+167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37,
+24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108,
+213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241,
+53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122,
+127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93,
+135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225,
+78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1,
+2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0,
+65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238,
+9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152,
+239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96,
+232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46,
+33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182,
+37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181,
+30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104,
+89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242,
+16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25,
+204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32,
+142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131,
+46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48,
+100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18,
+132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165,
+228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165,
+79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32,
+30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45,
+62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188,
+2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4,
+22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18,
+8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121,
+8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17,
+37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141,
+44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136,
+81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150,
+158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1,
+6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40,
+39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240,
+16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24,
+2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250,
+247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20,
+196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158,
+108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27,
+186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165,
+218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101,
+167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111,
+3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12,
+61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46,
+67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33,
+40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161,
+134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87,
+65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199,
+123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199,
+184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6,
+112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8,
+70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50,
+134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67,
+48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59,
+136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171,
+143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190,
+4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20,
+39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114,
+253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208,
+35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221,
+6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197,
+210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8,
+1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145,
+3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184,
+251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61,
+154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46,
+242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164,
+219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83,
+226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177,
+236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203,
+40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18,
+84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32,
+196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50,
+252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98,
+217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114,
+148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91,
+54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128,
+90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201,
+73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67,
+48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209,
+4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228,
+187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66,
+38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212,
+65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12,
+208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5,
+48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31,
+16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128,
+96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116,
+23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114,
+223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127,
+38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0,
+131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196,
+17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30,
+66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204,
+69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16,
+74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97,
+105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223,
+89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121,
+243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33,
+67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94,
+66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110,
+190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69,
+22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228,
+40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129,
+197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61,
+132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229,
+49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151,
+206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237,
+253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59,
+0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36,
+150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27,
+168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115,
+225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133,
+60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134,
+29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35,
+88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236,
+25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227,
+100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242,
+166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96,
+144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203,
+138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234,
+254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61,
+8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12,
+37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202,
+23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6,
+89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147,
+56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185,
+190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144,
+245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159,
+249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226,
+87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232,
+91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59,
+223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12,
+178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62,
+241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210,
+72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253,
+145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114,
+255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82,
+52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107,
+127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142,
+126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124,
+89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34,
+179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58,
+64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81,
+213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55,
+253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39,
+141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39,
+105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234,
+237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251,
+178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46,
+58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234,
+197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207,
+23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23,
+13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125,
+199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164,
+108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63,
+249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28,
+242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63,
+251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174,
+101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50,
+77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88,
+176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135,
+31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62,
+188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227,
+145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35,
+245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244,
+138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107,
+115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71,
+252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121,
+118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145,
+89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26,
+169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63,
+63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249,
+230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219,
+77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116,
+49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241,
+108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242,
+93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238,
+119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54,
+52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89,
+174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127,
+169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195,
+31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241,
+181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125,
+194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42,
+231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146,
+178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231,
+130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162,
+31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70,
+178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252,
+193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47,
+109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113,
+12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44,
+251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92,
+124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166,
+169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167,
+105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255,
+230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222,
+151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151,
+53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167,
+175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151,
+230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223,
+252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143,
+229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250,
+11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164,
+253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116,
+116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124,
+234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254,
+38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211,
+171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158,
+205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153,
+117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254,
+244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189,
+146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79,
+92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27,
+40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246,
+222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163,
+61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113,
+57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98,
+76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216,
+209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101,
+201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39,
+53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116,
+218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142,
+61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117,
+215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113,
+95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30,
+242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146,
+204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222,
+172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103,
+118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160,
+67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231,
+210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9,
+199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141,
+75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132,
+196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143,
+229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127,
+246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73,
+9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92,
+84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234,
+171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175,
+186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95,
+127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255,
+249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102,
+165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236,
+193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243,
+233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6,
+202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254,
+200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123,
+23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21,
+176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224,
+246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59,
+189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97,
+24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88,
+238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234,
+244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159,
+242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79,
+218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178,
+57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249,
+225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243,
+201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229,
+144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151,
+40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215,
+237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182,
+75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190,
+86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231,
+101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174,
+248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214,
+213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11,
+9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163,
+78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117,
+175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115,
+202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199,
+57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217,
+119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111,
+183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28,
+223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178,
+169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23,
+95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128,
+230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87,
+117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188,
+119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248,
+212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223,
+112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23,
+29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36,
+120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25,
+159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241,
+164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175,
+121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246,
+189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126,
+206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135,
+63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106,
+201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128,
+81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245,
+167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245,
+171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196,
+57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226,
+21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217,
+186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183,
+93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225,
+71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94,
+205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238,
+95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35,
+217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210,
+91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143,
+61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67,
+75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204,
+233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249,
+17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215,
+183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89,
+115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191,
+249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229,
+202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59,
+50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37,
+186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171,
+150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184,
+251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247,
+176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253,
+254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112,
+252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226,
+65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120,
+78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239,
+123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77,
+205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117,
+175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208,
+55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19,
+142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154,
+24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71,
+126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164,
+251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4,
+102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64,
+124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4,
+184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210,
+124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194,
+57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187,
+126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178,
+92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124,
+223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186,
+219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163,
+148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174,
+67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119,
+190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75,
+51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224,
+50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238,
+218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82,
+121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27,
+174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235,
+188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45,
+150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249,
+218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27,
+218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185,
+205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167,
+240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254,
+245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102,
+62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181,
+204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174,
+181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68,
+89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60,
+185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205,
+21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100,
+210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222,
+220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180,
+17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253,
+225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254,
+130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41,
+31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35,
+80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109,
+154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178,
+93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159,
+241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144,
+32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239,
+162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222,
+1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26,
+38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245,
+133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70,
+123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35,
+30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200,
+253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32,
+233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155,
+119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179,
+196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223,
+252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88,
+74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142,
+208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94,
+255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177,
+55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124,
+37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78,
+250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226,
+164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240,
+88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196,
+194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195,
+228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138,
+139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245,
+186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44,
+165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27,
+216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63,
+188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153,
+119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185,
+22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229,
+148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33,
+35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120,
+208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42,
+171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124,
+35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189,
+77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3,
+183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158,
+112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122,
+74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0,
+79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106,
+186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236,
+71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83,
+34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201,
+204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154,
+152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131,
+138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63,
+238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94,
+15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135,
+60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244,
+53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239,
+219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90,
+235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124,
+228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24,
+209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72,
+136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191,
+108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179,
+253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229,
+184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167,
+207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230,
+54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175,
+75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207,
+27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151,
+63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134,
+204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64,
+223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95,
+191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226,
+213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185,
+249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244,
+39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92,
+190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127,
+159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226,
+33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183,
+118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65,
+162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25,
+73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226,
+161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203,
+81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26,
+52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187,
+90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149,
+46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146,
+68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203,
+197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49,
+34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203,
+172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14,
+41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108,
+47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249,
+251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168,
+147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73,
+40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161,
+107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123,
+151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127,
+209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29,
+115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125,
+11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182,
+31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198,
+90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213,
+137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103,
+181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181,
+5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39,
+157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161,
+78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107,
+72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152,
+49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157,
+114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223,
+236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119,
+196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205,
+111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253,
+241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183,
+93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251,
+100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198,
+191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81,
+251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183,
+2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146,
+125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165,
+243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62,
+196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51,
+199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133,
+237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91,
+172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153,
+166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80,
+110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93,
+160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179,
+222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247,
+7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190,
+253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192,
+72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143,
+26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215,
+236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67,
+162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171,
+27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12,
+78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147,
+116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253,
+53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241,
+69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17,
+167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159,
+28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254,
+199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186,
+6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61,
+253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235,
+136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136,
+70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162,
+58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103,
+156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246,
+137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181,
+32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161,
+127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197,
+139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104,
+150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202,
+36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185,
+246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118,
+240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253,
+170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223,
+203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89,
+198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168,
+239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62,
+119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244,
+62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141,
+212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253,
+67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124,
+244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94,
+246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187,
+61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142,
+228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241,
+201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242,
+217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176,
+101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220,
+255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190,
+109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204,
+67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5,
+99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168,
+107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137,
+113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254,
+73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78,
+219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50,
+105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90,
+110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172,
+244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144,
+114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234,
+253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229,
+3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217,
+98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127,
+121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23,
+191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6,
+234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191,
+205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212,
+219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49,
+71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159,
+249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89,
+152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100,
+165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253,
+97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206,
+52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224,
+79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119,
+224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103,
+188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242,
+75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246,
+183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38,
+29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190,
+243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191,
+246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106,
+163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26,
+164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223,
+130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173,
+69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237,
+215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178,
+186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112,
+144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233,
+106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190,
+133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201,
+32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166,
+155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119,
+223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242,
+212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35,
+101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43,
+41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100,
+107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173,
+181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239,
+190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74,
+109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45,
+125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111,
+134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7,
+217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110,
+47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187,
+110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105,
+144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169,
+219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231,
+174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124,
+6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53,
+82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96,
+240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38,
+165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245,
+248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30,
+211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44,
+153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55,
+253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95,
+45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26,
+169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238,
+203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6,
+89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65,
+6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65,
+6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32,
+131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131,
+12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0,
+0,0,0,73,69,78,68,174,66,96,130};
+
+int splash_image1_sz = sizeof(splash_image1);
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage02.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage02.c
new file mode 100644
index 0000000000..2cae88c08b
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage02.c
@@ -0,0 +1,2167 @@
+const unsigned char splash_image2[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82,
+146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,
+43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7,
+184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206,
+57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88,
+98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68,
+122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32,
+88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214,
+222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152,
+99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12,
+50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108,
+115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218,
+182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104,
+115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124,
+194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180,
+103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36,
+182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149,
+110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201,
+37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57,
+21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126,
+175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141,
+58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108,
+236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44,
+203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85,
+89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149,
+223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88,
+46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157,
+86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165,
+239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201,
+132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89,
+38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109,
+174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53,
+43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9,
+182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164,
+41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90,
+185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226,
+186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223,
+111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155,
+120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5,
+87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7,
+157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150,
+231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164,
+41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42,
+183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251,
+157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75,
+47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76,
+203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184,
+86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229,
+1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153,
+199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198,
+158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212,
+247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182,
+167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157,
+246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182,
+196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215,
+185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29,
+72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152,
+116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152,
+140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73,
+134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76,
+39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233,
+242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174,
+61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75,
+63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253,
+48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175,
+16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172,
+133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197,
+117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216,
+203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249,
+94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237,
+241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64,
+110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34,
+93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53,
+35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185,
+245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191,
+58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186,
+173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157,
+59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222,
+163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115,
+174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66,
+224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4,
+90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222,
+71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231,
+94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233,
+170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182,
+82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148,
+114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175,
+200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101,
+62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168,
+82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3,
+36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137,
+173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45,
+3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12,
+50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,
+200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200,
+84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51,
+196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86,
+195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247,
+122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162,
+139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91,
+88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191,
+85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159,
+105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207,
+53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211,
+142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81,
+94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182,
+41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131,
+236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27,
+109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147,
+5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151,
+140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188,
+137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173,
+166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215,
+1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61,
+246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203,
+97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181,
+0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233,
+194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92,
+69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102,
+207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226,
+124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59,
+245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103,
+88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27,
+249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73,
+180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28,
+166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239,
+180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86,
+129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254,
+190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250,
+45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83,
+116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227,
+231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223,
+178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28,
+166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254,
+58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73,
+149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89,
+231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215,
+195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201,
+211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171,
+42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50,
+215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235,
+201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152,
+6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93,
+178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255,
+111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235,
+141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159,
+233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206,
+199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116,
+137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223,
+92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49,
+25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255,
+143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147,
+209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152,
+76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79,
+207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108,
+123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231,
+99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252,
+242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12,
+245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212,
+109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220,
+181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167,
+44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219,
+61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95,
+46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99,
+73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214,
+231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73,
+101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142,
+46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45,
+24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46,
+60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122,
+142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167,
+147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140,
+227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140,
+109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249,
+157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55,
+231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178,
+184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69,
+50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241,
+107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120,
+94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165,
+190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246,
+90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211,
+242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4,
+186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61,
+200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25,
+100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,
+170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,
+12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,
+144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,
+24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,
+100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100,
+144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98,
+123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205,
+55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28,
+179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252,
+228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186,
+230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215,
+94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226,
+94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119,
+148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75,
+141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69,
+115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1,
+7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233,
+159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255,
+220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204,
+230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37,
+134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75,
+35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47,
+236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188,
+121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0,
+120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249,
+200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183,
+230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185,
+187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210,
+208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243,
+165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135,
+62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85,
+243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158,
+6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47,
+126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205,
+126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130,
+14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4,
+10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199,
+31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108,
+118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96,
+220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196,
+39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45,
+111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30,
+52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200,
+0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94,
+121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249,
+206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243,
+156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176,
+143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232,
+106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223,
+222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239,
+194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231,
+53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0,
+192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233,
+174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231,
+55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121,
+195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125,
+112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19,
+225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158,
+244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92,
+90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110,
+89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70,
+16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234,
+0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199,
+152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127,
+248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239,
+127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48,
+240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242,
+172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187,
+135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214,
+179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99,
+216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143,
+187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242,
+230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7,
+54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64,
+193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70,
+9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182,
+223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223,
+119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156,
+114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93,
+239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2,
+21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38,
+3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192,
+82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135,
+235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206,
+43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8,
+12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184,
+227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221,
+3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244,
+162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199,
+59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73,
+122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113,
+223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100,
+125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120,
+5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103,
+116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205,
+43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68,
+206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80,
+28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47,
+40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241,
+238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87,
+190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251,
+187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88,
+96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119,
+12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39,
+3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237,
+186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215,
+45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74,
+6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88,
+3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204,
+140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15,
+12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112,
+140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167,
+231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54,
+239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24,
+129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9,
+32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128,
+65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49,
+195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178,
+107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76,
+2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93,
+215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192,
+1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105,
+128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2,
+129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175,
+118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226,
+73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80,
+136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137,
+39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138,
+87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61,
+96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121,
+1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184,
+23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249,
+17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20,
+32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144,
+95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34,
+112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66,
+87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215,
+158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192,
+72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18,
+149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222,
+243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210,
+1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181,
+46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104,
+33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160,
+0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242,
+1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250,
+210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113,
+201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114,
+101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189,
+205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195,
+72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163,
+214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217,
+157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51,
+13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166,
+0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3,
+120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184,
+3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58,
+206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215,
+126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115,
+207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114,
+100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217,
+240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117,
+21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187,
+48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185,
+93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3,
+34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202,
+0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199,
+22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70,
+204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234,
+122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154,
+115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205,
+197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241,
+227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8,
+117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123,
+220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70,
+3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206,
+189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27,
+215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45,
+94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97,
+255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116,
+215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19,
+182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158,
+128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118,
+93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72,
+172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231,
+243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212,
+246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5,
+11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235,
+152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54,
+251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15,
+1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109,
+154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183,
+235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186,
+235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184,
+199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204,
+75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225,
+93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159,
+255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130,
+144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241,
+30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97,
+130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104,
+189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111,
+128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215,
+127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6,
+125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9,
+221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178,
+221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69,
+157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102,
+180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225,
+58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60,
+10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10,
+210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133,
+152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16,
+27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84,
+231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162,
+23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215,
+10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101,
+40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139,
+115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144,
+88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93,
+9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66,
+43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234,
+155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60,
+9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26,
+20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115,
+206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7,
+20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136,
+238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3,
+156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73,
+7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55,
+187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119,
+189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72,
+116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146,
+123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66,
+134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99,
+152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123,
+62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0,
+116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199,
+147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48,
+252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61,
+90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241,
+48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246,
+183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231,
+185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132,
+53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57,
+150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88,
+154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183,
+205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187,
+219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195,
+194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113,
+137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160,
+5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196,
+216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100,
+95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207,
+161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174,
+21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241,
+254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105,
+118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184,
+60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214,
+197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52,
+93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64,
+237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188,
+9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173,
+6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88,
+42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114,
+142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146,
+151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143,
+67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49,
+93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181,
+164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9,
+128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4,
+3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41,
+80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73,
+173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153,
+145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113,
+187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114,
+76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204,
+110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214,
+128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221,
+237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208,
+218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70,
+206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4,
+26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224,
+107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63,
+150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132,
+214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30,
+251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217,
+5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181,
+74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113,
+9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8,
+7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116,
+57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93,
+13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6,
+157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129,
+69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254,
+251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141,
+231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27,
+245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177,
+6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153,
+54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245,
+219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114,
+234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17,
+52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97,
+215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23,
+8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192,
+203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139,
+231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53,
+173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36,
+8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87,
+193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203,
+104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180,
+50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32,
+106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192,
+3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78,
+129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117,
+196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214,
+12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28,
+9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211,
+108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4,
+67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96,
+224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238,
+239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47,
+53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251,
+159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124,
+234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101,
+128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102,
+94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109,
+59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16,
+92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198,
+224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147,
+198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6,
+159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175,
+225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130,
+60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0,
+2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124,
+10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65,
+75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107,
+245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56,
+156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215,
+179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106,
+45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198,
+174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67,
+160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98,
+178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160,
+86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10,
+198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98,
+152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0,
+134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185,
+251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202,
+124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7,
+101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101,
+68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204,
+73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184,
+188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83,
+174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202,
+144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176,
+206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37,
+79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129,
+150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7,
+219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0,
+166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242,
+27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104,
+164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31,
+183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136,
+186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131,
+97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235,
+154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129,
+23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220,
+51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187,
+16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193,
+126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164,
+81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155,
+150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73,
+250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129,
+145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4,
+195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9,
+8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56,
+68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37,
+13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115,
+1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32,
+210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36,
+136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241,
+70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90,
+182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84,
+190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234,
+59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24,
+136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40,
+141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7,
+17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234,
+202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149,
+109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210,
+197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101,
+170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223,
+121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138,
+109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38,
+100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180,
+110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14,
+12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12,
+117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192,
+16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45,
+47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252,
+5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86,
+94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227,
+229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45,
+0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13,
+177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148,
+90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174,
+53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145,
+120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116,
+49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192,
+64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95,
+9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120,
+134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29,
+111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186,
+235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249,
+122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2,
+111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17,
+10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161,
+201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2,
+66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193,
+32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233,
+98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244,
+12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129,
+133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179,
+121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153,
+223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117,
+131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150,
+63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114,
+91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7,
+149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1,
+32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17,
+111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207,
+194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218,
+123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103,
+25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12,
+246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186,
+242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94,
+223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103,
+229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143,
+6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101,
+10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230,
+159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245,
+55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34,
+49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30,
+68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171,
+238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210,
+205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45,
+191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212,
+185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237,
+177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127,
+130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180,
+208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86,
+31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16,
+62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127,
+104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129,
+68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76,
+235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49,
+24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172,
+131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234,
+109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98,
+33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241,
+248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121,
+99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188,
+83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48,
+89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129,
+197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10,
+137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110,
+10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2,
+68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110,
+70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111,
+130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246,
+101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46,
+161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93,
+155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181,
+67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116,
+229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36,
+120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132,
+132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226,
+61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26,
+137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176,
+101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17,
+125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101,
+108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79,
+44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129,
+151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222,
+125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241,
+89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246,
+251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242,
+246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18,
+192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120,
+18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64,
+66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141,
+196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35,
+195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107,
+109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186,
+17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145,
+232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1,
+18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219,
+111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242,
+80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202,
+19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232,
+70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31,
+221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197,
+35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150,
+53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36,
+196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54,
+190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240,
+194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148,
+222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173,
+153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41,
+80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155,
+218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233,
+121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33,
+81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4,
+43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219,
+1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222,
+4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196,
+123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247,
+67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200,
+48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221,
+181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196,
+19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130,
+66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163,
+0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125,
+174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45,
+223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45,
+1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104,
+6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160,
+188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131,
+176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33,
+202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151,
+150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122,
+234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184,
+87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164,
+128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217,
+173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90,
+2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12,
+144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48,
+136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173,
+55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251,
+253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10,
+191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143,
+65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50,
+88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21,
+192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217,
+0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185,
+194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140,
+138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242,
+207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129,
+50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144,
+176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30,
+137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186,
+158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91,
+91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22,
+8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207,
+123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171,
+47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101,
+93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74,
+162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235,
+137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224,
+57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10,
+212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135,
+94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2,
+12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128,
+200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29,
+216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153,
+216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236,
+158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219,
+115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2,
+240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216,
+195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173,
+243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222,
+115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73,
+32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71,
+31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192,
+33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12,
+60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13,
+219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225,
+173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1,
+141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245,
+103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56,
+78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4,
+137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11,
+28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164,
+46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56,
+19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96,
+112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173,
+253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91,
+241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1,
+200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44,
+222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89,
+25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144,
+46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131,
+133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230,
+85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157,
+161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64,
+194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103,
+180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139,
+161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179,
+77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29,
+232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163,
+107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216,
+233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188,
+123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57,
+94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165,
+231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15,
+46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26,
+125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7,
+130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1,
+7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232,
+70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198,
+15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20,
+207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29,
+6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249,
+180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103,
+219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184,
+175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3,
+20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112,
+12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158,
+219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36,
+123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220,
+115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35,
+202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163,
+213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232,
+54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171,
+18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75,
+75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33,
+100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237,
+78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59,
+230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185,
+241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18,
+12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113,
+47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15,
+96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251,
+1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86,
+114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23,
+181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29,
+40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7,
+193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150,
+203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227,
+61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215,
+215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222,
+133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147,
+0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177,
+45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96,
+88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12,
+27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82,
+193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90,
+102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186,
+242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66,
+110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111,
+255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248,
+175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119,
+186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13,
+2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184,
+131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219,
+15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25,
+28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250,
+104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22,
+74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194,
+142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86,
+62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211,
+109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117,
+251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13,
+188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103,
+5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182,
+220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248,
+64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189,
+173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243,
+199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153,
+42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109,
+164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80,
+209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158,
+131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219,
+181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119,
+180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65,
+107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154,
+84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155,
+81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94,
+5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2,
+14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178,
+244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231,
+90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48,
+58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196,
+149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0,
+224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47,
+40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110,
+35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65,
+5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64,
+128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224,
+81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240,
+42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24,
+168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16,
+38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64,
+136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254,
+65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28,
+167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162,
+251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189,
+220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50,
+125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211,
+0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47,
+141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142,
+240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32,
+243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158,
+4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208,
+1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108,
+149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97,
+64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10,
+52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67,
+160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0,
+22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160,
+40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32,
+248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86,
+249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4,
+222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230,
+188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46,
+239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114,
+76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103,
+68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9,
+138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74,
+149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50,
+40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221,
+12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173,
+41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4,
+94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96,
+16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132,
+101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47,
+98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220,
+226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91,
+150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247,
+172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251,
+58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5,
+106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134,
+132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85,
+66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242,
+32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144,
+180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197,
+102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30,
+120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174,
+101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19,
+32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73,
+75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99,
+244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107,
+253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77,
+98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113,
+214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99,
+210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202,
+82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23,
+81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184,
+215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241,
+38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81,
+241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22,
+152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112,
+229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84,
+74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0,
+161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142,
+139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119,
+101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52,
+202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203,
+61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252,
+184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191,
+21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233,
+212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94,
+64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132,
+190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72,
+196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121,
+17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75,
+90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5,
+2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173,
+197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75,
+112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194,
+232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42,
+157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97,
+116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156,
+119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147,
+250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221,
+175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117,
+8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243,
+151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174,
+27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23,
+163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105,
+144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251,
+24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193,
+130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48,
+21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24,
+24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116,
+90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20,
+165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96,
+60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72,
+186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191,
+63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81,
+229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254,
+231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254,
+97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142,
+222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226,
+166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9,
+9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0,
+43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68,
+43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26,
+96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90,
+186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89,
+143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8,
+24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199,
+120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197,
+249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160,
+246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164,
+62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52,
+191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238,
+221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172,
+107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96,
+220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132,
+22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128,
+97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17,
+4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164,
+165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93,
+59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242,
+200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128,
+17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122,
+46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223,
+182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52,
+40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246,
+182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222,
+247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47,
+93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255,
+223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86,
+191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21,
+94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76,
+229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29,
+215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95,
+246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37,
+24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168,
+12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111,
+202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1,
+28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89,
+150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121,
+251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191,
+249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142,
+127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42,
+19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39,
+18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246,
+90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226,
+57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171,
+97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74,
+199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71,
+116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251,
+121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40,
+3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179,
+40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111,
+41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123,
+98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107,
+23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173,
+223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26,
+223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71,
+89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134,
+192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130,
+254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254,
+197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150,
+97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245,
+101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241,
+130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0,
+65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103,
+159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162,
+140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27,
+0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128,
+5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183,
+190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18,
+126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128,
+217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239,
+197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96,
+240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60,
+145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247,
+2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82,
+144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128,
+65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24,
+140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49,
+212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77,
+51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199,
+72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224,
+165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16,
+90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134,
+27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227,
+29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49,
+196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141,
+140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4,
+14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144,
+140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81,
+2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96,
+105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75,
+76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169,
+181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130,
+6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4,
+67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169,
+129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2,
+134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91,
+191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72,
+40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202,
+241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10,
+165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51,
+42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224,
+69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107,
+136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192,
+64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46,
+5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11,
+65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94,
+68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140,
+83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119,
+93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118,
+183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247,
+208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26,
+140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0,
+134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5,
+253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136,
+64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3,
+173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116,
+0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190,
+193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114,
+4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34,
+45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166,
+139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137,
+120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65,
+186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173,
+101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51,
+3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80,
+68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178,
+81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120,
+16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28,
+64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60,
+146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42,
+210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156,
+92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21,
+130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80,
+160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149,
+50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166,
+117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175,
+132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70,
+169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214,
+129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128,
+131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106,
+29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221,
+237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165,
+214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16,
+159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239,
+160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245,
+246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114,
+70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47,
+17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66,
+142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1,
+14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5,
+5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32,
+81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90,
+166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46,
+0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180,
+150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135,
+85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37,
+120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233,
+94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160,
+242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210,
+209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96,
+145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109,
+3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160,
+54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91,
+92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20,
+32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49,
+240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33,
+81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142,
+50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115,
+41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220,
+156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3,
+5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160,
+75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230,
+74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40,
+65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3,
+10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40,
+210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99,
+175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226,
+17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4,
+47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54,
+227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213,
+5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118,
+128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77,
+148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70,
+62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54,
+149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235,
+26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98,
+105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193,
+62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32,
+1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50,
+128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102,
+186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75,
+24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77,
+242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151,
+240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123,
+192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51,
+203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28,
+1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74,
+143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34,
+90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230,
+254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36,
+184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193,
+75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64,
+68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159,
+18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17,
+111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71,
+70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105,
+160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117,
+240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178,
+151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34,
+196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164,
+184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150,
+93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222,
+4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34,
+64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152,
+153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84,
+46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140,
+27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40,
+150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163,
+30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3,
+153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60,
+5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112,
+112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172,
+13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208,
+209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236,
+139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68,
+13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212,
+94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49,
+98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225,
+16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186,
+134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94,
+46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24,
+196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217,
+237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62,
+17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23,
+36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228,
+57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61,
+228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36,
+72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98,
+130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138,
+232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17,
+111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64,
+145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178,
+205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109,
+121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86,
+227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49,
+34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144,
+40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232,
+155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83,
+235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29,
+235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102,
+246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151,
+16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229,
+48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187,
+29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164,
+131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128,
+4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143,
+135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240,
+210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9,
+200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208,
+242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25,
+27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60,
+90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132,
+60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103,
+145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176,
+14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143,
+229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235,
+133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97,
+20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27,
+178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177,
+169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147,
+40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6,
+20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112,
+176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6,
+129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171,
+102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72,
+240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200,
+155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242,
+178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101,
+224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49,
+173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80,
+0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126,
+144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176,
+128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104,
+197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56,
+103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215,
+254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250,
+130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174,
+68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74,
+80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16,
+19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24,
+0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229,
+193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216,
+216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192,
+37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80,
+112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89,
+247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115,
+151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142,
+190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209,
+73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194,
+160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227,
+224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92,
+195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187,
+150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16,
+242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7,
+20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144,
+48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67,
+100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15,
+20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188,
+11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168,
+31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251,
+181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232,
+190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240,
+8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190,
+0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202,
+239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195,
+112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235,
+101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248,
+4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226,
+241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16,
+225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52,
+117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143,
+64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28,
+90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208,
+200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172,
+108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84,
+68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18,
+18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248,
+4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51,
+26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108,
+235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183,
+2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64,
+170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112,
+83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1,
+67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91,
+154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14,
+94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176,
+157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194,
+58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167,
+188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186,
+35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203,
+33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37,
+239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204,
+43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15,
+14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225,
+108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75,
+149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1,
+18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160,
+182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112,
+62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22,
+235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13,
+131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238,
+35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12,
+222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114,
+93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17,
+72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181,
+181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89,
+123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33,
+90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30,
+128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48,
+116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48,
+62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103,
+56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131,
+37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33,
+195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202,
+200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151,
+170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190,
+68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126,
+45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149,
+96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144,
+1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177,
+11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23,
+98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120,
+101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91,
+2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108,
+149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168,
+1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162,
+246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16,
+103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15,
+3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7,
+80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237,
+179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199,
+203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24,
+168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245,
+251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138,
+100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12,
+34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7,
+9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237,
+183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142,
+51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96,
+66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134,
+29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200,
+241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233,
+130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53,
+36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167,
+18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169,
+37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12,
+223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225,
+39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1,
+97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134,
+94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169,
+242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110,
+89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161,
+60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150,
+140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157,
+48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24,
+136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34,
+202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227,
+45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220,
+95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126,
+91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240,
+98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47,
+33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138,
+192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110,
+189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42,
+157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141,
+26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208,
+151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195,
+0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94,
+133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158,
+93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46,
+7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121,
+210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6,
+20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250,
+122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148,
+87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191,
+255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205,
+192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69,
+208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65,
+194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69,
+186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181,
+209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121,
+202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89,
+217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1,
+47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38,
+162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28,
+183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208,
+160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224,
+74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65,
+48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247,
+252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144,
+128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23,
+35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81,
+238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216,
+47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24,
+85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127,
+26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229,
+115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131,
+68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164,
+178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210,
+245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5,
+6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10,
+6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97,
+244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126,
+75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81,
+226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153,
+84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157,
+185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52,
+72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250,
+96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65,
+140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203,
+91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192,
+238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147,
+170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6,
+131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37,
+48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2,
+138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236,
+104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150,
+111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255,
+245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203,
+68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86,
+13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145,
+49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18,
+53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102,
+127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178,
+175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229,
+117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47,
+255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120,
+70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191,
+111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102,
+238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128,
+162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40,
+181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22,
+53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120,
+133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52,
+127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59,
+54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25,
+250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19,
+9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165,
+217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197,
+36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34,
+176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98,
+252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0,
+248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29,
+12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115,
+159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120,
+179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230,
+33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19,
+151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82,
+160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62,
+9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232,
+3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26,
+249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155,
+223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14,
+10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156,
+12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214,
+188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195,
+170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88,
+80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134,
+4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45,
+75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0,
+34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119,
+126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221,
+41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30,
+92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195,
+212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239,
+5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145,
+150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56,
+84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129,
+132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131,
+5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196,
+53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127,
+253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150,
+188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176,
+179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24,
+121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140,
+120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143,
+73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86,
+134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26,
+32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88,
+103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20,
+246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91,
+119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188,
+132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121,
+77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185,
+22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167,
+223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181,
+144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18,
+222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1,
+162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108,
+7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236,
+186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105,
+126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31,
+100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25,
+166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75,
+119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208,
+189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182,
+106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94,
+246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168,
+1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210,
+155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0,
+0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207,
+225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221,
+6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60,
+5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77,
+67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12,
+158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229,
+11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222,
+69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180,
+224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15,
+65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143,
+128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20,
+248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195,
+167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37,
+24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108,
+213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241,
+53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122,
+127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93,
+135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225,
+78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1,
+2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0,
+65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238,
+9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152,
+239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96,
+232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46,
+33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182,
+37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181,
+30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104,
+89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242,
+16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25,
+204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32,
+142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131,
+46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48,
+100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18,
+132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165,
+228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165,
+79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32,
+30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45,
+62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188,
+2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4,
+22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18,
+8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121,
+8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17,
+37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141,
+44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136,
+81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150,
+158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1,
+6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40,
+39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240,
+16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24,
+2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250,
+247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20,
+196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158,
+108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27,
+186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165,
+218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101,
+167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111,
+3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12,
+61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46,
+67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33,
+40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161,
+134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87,
+65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199,
+123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199,
+184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6,
+112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8,
+70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50,
+134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67,
+48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59,
+136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171,
+143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190,
+4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20,
+39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114,
+253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208,
+35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221,
+6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197,
+210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8,
+1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145,
+3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184,
+251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61,
+154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46,
+242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164,
+219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83,
+226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177,
+236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203,
+40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18,
+84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32,
+196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50,
+252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98,
+217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114,
+148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91,
+54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128,
+90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201,
+73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67,
+48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209,
+4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228,
+187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66,
+38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212,
+65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12,
+208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5,
+48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31,
+16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128,
+96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116,
+23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114,
+223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127,
+38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0,
+131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196,
+17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30,
+66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204,
+69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16,
+74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97,
+105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223,
+89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121,
+243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33,
+67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94,
+66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110,
+190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69,
+22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228,
+40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129,
+197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61,
+132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229,
+49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151,
+206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237,
+253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59,
+0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36,
+150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27,
+168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115,
+225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133,
+60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134,
+29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35,
+88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236,
+25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227,
+100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242,
+166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96,
+144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203,
+138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234,
+254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61,
+8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12,
+37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202,
+23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6,
+89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147,
+56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185,
+190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144,
+245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159,
+249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226,
+87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232,
+91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59,
+223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12,
+178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62,
+241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210,
+72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253,
+145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114,
+255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82,
+52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107,
+127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142,
+126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124,
+89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34,
+179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58,
+64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81,
+213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55,
+253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39,
+141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39,
+105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234,
+237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251,
+178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46,
+58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234,
+197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207,
+23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23,
+13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125,
+199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164,
+108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63,
+249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28,
+242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63,
+251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174,
+101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50,
+77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88,
+176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135,
+31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62,
+188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227,
+145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35,
+245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244,
+138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107,
+115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71,
+252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121,
+118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145,
+89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26,
+169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63,
+63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249,
+230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219,
+77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116,
+49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241,
+108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242,
+93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238,
+119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54,
+52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89,
+174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127,
+169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195,
+31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241,
+181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125,
+194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42,
+231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146,
+178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231,
+130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162,
+31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70,
+178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252,
+193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47,
+109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113,
+12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44,
+251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92,
+124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166,
+169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167,
+105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255,
+230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222,
+151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151,
+53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167,
+175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151,
+230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223,
+252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143,
+229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250,
+11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164,
+253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116,
+116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124,
+234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254,
+38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211,
+171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158,
+205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153,
+117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254,
+244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189,
+146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79,
+92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27,
+40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246,
+222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163,
+61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113,
+57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98,
+76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216,
+209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101,
+201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39,
+53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116,
+218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142,
+61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117,
+215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113,
+95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30,
+242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146,
+204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222,
+172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103,
+118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160,
+67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231,
+210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9,
+199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141,
+75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132,
+196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143,
+229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127,
+246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73,
+9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92,
+84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234,
+171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175,
+186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95,
+127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255,
+249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102,
+165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236,
+193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243,
+233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6,
+202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254,
+200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123,
+23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21,
+176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224,
+246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59,
+189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97,
+24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88,
+238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234,
+244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159,
+242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79,
+218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178,
+57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249,
+225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243,
+201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229,
+144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151,
+40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215,
+237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182,
+75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190,
+86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231,
+101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174,
+248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214,
+213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11,
+9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163,
+78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117,
+175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115,
+202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199,
+57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217,
+119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111,
+183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28,
+223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178,
+169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23,
+95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128,
+230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87,
+117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188,
+119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248,
+212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223,
+112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23,
+29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36,
+120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25,
+159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241,
+164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175,
+121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246,
+189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126,
+206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135,
+63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106,
+201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128,
+81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245,
+167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245,
+171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196,
+57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226,
+21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217,
+186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183,
+93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225,
+71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94,
+205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238,
+95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35,
+217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210,
+91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143,
+61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67,
+75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204,
+233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249,
+17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215,
+183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89,
+115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191,
+249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229,
+202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59,
+50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37,
+186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171,
+150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184,
+251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247,
+176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253,
+254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112,
+252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226,
+65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120,
+78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239,
+123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77,
+205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117,
+175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208,
+55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19,
+142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154,
+24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71,
+126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164,
+251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4,
+102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64,
+124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4,
+184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210,
+124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194,
+57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187,
+126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178,
+92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124,
+223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186,
+219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163,
+148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174,
+67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119,
+190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75,
+51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224,
+50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238,
+218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82,
+121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27,
+174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235,
+188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45,
+150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249,
+218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27,
+218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185,
+205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167,
+240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254,
+245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102,
+62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181,
+204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174,
+181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68,
+89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60,
+185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205,
+21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100,
+210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222,
+220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180,
+17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253,
+225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254,
+130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41,
+31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35,
+80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109,
+154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178,
+93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159,
+241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144,
+32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239,
+162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222,
+1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26,
+38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245,
+133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70,
+123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35,
+30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200,
+253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32,
+233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155,
+119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179,
+196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223,
+252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88,
+74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142,
+208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94,
+255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177,
+55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124,
+37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78,
+250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226,
+164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240,
+88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196,
+194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195,
+228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138,
+139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245,
+186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44,
+165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27,
+216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63,
+188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153,
+119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185,
+22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229,
+148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33,
+35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120,
+208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42,
+171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124,
+35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189,
+77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3,
+183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158,
+112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122,
+74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0,
+79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106,
+186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236,
+71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83,
+34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201,
+204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154,
+152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131,
+138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63,
+238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94,
+15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135,
+60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244,
+53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239,
+219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90,
+235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124,
+228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24,
+209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72,
+136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191,
+108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179,
+253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229,
+184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167,
+207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230,
+54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175,
+75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207,
+27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151,
+63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134,
+204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64,
+223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95,
+191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226,
+213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185,
+249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244,
+39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92,
+190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127,
+159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226,
+33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183,
+118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65,
+162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25,
+73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226,
+161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203,
+81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26,
+52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187,
+90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149,
+46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146,
+68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203,
+197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49,
+34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203,
+172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14,
+41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108,
+47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249,
+251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168,
+147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73,
+40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161,
+107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123,
+151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127,
+209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29,
+115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125,
+11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182,
+31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198,
+90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213,
+137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103,
+181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181,
+5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39,
+157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161,
+78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107,
+72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152,
+49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157,
+114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223,
+236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119,
+196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205,
+111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253,
+241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183,
+93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251,
+100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198,
+191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81,
+251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183,
+2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146,
+125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165,
+243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62,
+196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51,
+199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133,
+237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91,
+172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153,
+166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80,
+110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93,
+160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179,
+222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247,
+7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190,
+253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192,
+72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143,
+26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215,
+236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67,
+162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171,
+27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12,
+78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147,
+116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253,
+53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241,
+69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17,
+167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159,
+28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254,
+199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186,
+6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61,
+253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235,
+136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136,
+70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162,
+58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103,
+156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246,
+137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181,
+32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161,
+127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197,
+139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104,
+150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202,
+36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185,
+246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118,
+240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253,
+170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223,
+203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89,
+198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168,
+239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62,
+119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244,
+62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141,
+212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253,
+67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124,
+244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94,
+246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187,
+61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142,
+228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241,
+201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242,
+217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176,
+101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220,
+255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190,
+109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204,
+67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5,
+99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168,
+107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137,
+113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254,
+73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78,
+219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50,
+105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90,
+110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172,
+244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144,
+114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234,
+253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229,
+3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217,
+98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127,
+121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23,
+191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6,
+234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191,
+205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212,
+219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49,
+71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159,
+249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89,
+152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100,
+165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253,
+97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206,
+52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224,
+79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119,
+224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103,
+188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242,
+75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246,
+183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38,
+29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190,
+243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191,
+246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106,
+163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26,
+164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223,
+130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173,
+69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237,
+215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178,
+186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112,
+144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233,
+106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190,
+133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201,
+32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166,
+155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119,
+223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242,
+212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35,
+101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43,
+41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100,
+107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173,
+181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239,
+190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74,
+109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45,
+125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111,
+134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7,
+217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110,
+47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187,
+110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105,
+144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169,
+219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231,
+174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124,
+6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53,
+82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96,
+240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38,
+165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245,
+248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30,
+211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44,
+153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55,
+253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95,
+45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26,
+169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238,
+203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6,
+89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65,
+6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65,
+6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32,
+131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131,
+12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0,
+0,0,0,73,69,78,68,174,66,96,130};
+
+int splash_image2_sz = sizeof(splash_image2);
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage03.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage03.c
new file mode 100644
index 0000000000..fa41a6c5cb
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage03.c
@@ -0,0 +1,2167 @@
+const unsigned char splash_image3[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82,
+146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,
+43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7,
+184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206,
+57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88,
+98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68,
+122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32,
+88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214,
+222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152,
+99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12,
+50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108,
+115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218,
+182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104,
+115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124,
+194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180,
+103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36,
+182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149,
+110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201,
+37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57,
+21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126,
+175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141,
+58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108,
+236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44,
+203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85,
+89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149,
+223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88,
+46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157,
+86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165,
+239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201,
+132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89,
+38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109,
+174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53,
+43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9,
+182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164,
+41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90,
+185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226,
+186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223,
+111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155,
+120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5,
+87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7,
+157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150,
+231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164,
+41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42,
+183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251,
+157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75,
+47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76,
+203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184,
+86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229,
+1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153,
+199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198,
+158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212,
+247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182,
+167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157,
+246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182,
+196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215,
+185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29,
+72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152,
+116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152,
+140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73,
+134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76,
+39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233,
+242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174,
+61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75,
+63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253,
+48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175,
+16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172,
+133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197,
+117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216,
+203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249,
+94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237,
+241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64,
+110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34,
+93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53,
+35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185,
+245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191,
+58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186,
+173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157,
+59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222,
+163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115,
+174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66,
+224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4,
+90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222,
+71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231,
+94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233,
+170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182,
+82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148,
+114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175,
+200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101,
+62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168,
+82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3,
+36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137,
+173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45,
+3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12,
+50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,
+200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200,
+84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51,
+196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86,
+195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247,
+122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162,
+139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91,
+88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191,
+85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159,
+105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207,
+53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211,
+142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81,
+94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182,
+41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131,
+236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27,
+109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147,
+5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151,
+140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188,
+137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173,
+166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215,
+1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61,
+246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203,
+97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181,
+0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233,
+194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92,
+69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102,
+207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226,
+124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59,
+245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103,
+88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27,
+249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73,
+180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28,
+166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239,
+180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86,
+129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254,
+190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250,
+45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83,
+116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227,
+231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223,
+178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28,
+166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254,
+58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73,
+149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89,
+231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215,
+195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201,
+211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171,
+42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50,
+215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235,
+201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152,
+6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93,
+178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255,
+111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235,
+141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159,
+233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206,
+199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116,
+137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223,
+92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49,
+25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255,
+143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147,
+209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152,
+76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79,
+207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108,
+123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231,
+99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252,
+242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12,
+245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212,
+109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220,
+181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167,
+44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219,
+61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95,
+46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99,
+73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214,
+231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73,
+101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142,
+46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45,
+24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46,
+60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122,
+142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167,
+147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140,
+227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140,
+109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249,
+157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55,
+231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178,
+184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69,
+50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241,
+107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120,
+94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165,
+190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246,
+90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211,
+242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4,
+186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61,
+200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25,
+100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,
+170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,
+12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,
+144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,
+24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,
+100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100,
+144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98,
+123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205,
+55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28,
+179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252,
+228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186,
+230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215,
+94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226,
+94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119,
+148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75,
+141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69,
+115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1,
+7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233,
+159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255,
+220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204,
+230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37,
+134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75,
+35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47,
+236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188,
+121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0,
+120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249,
+200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183,
+230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185,
+187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210,
+208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243,
+165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135,
+62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85,
+243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158,
+6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47,
+126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205,
+126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130,
+14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4,
+10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199,
+31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108,
+118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96,
+220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196,
+39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45,
+111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30,
+52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200,
+0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94,
+121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249,
+206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243,
+156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176,
+143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232,
+106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223,
+222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239,
+194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231,
+53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0,
+192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233,
+174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231,
+55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121,
+195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125,
+112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19,
+225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158,
+244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92,
+90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110,
+89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70,
+16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234,
+0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199,
+152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127,
+248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239,
+127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48,
+240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242,
+172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187,
+135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214,
+179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99,
+216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143,
+187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242,
+230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7,
+54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64,
+193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70,
+9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182,
+223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223,
+119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156,
+114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93,
+239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2,
+21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38,
+3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192,
+82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135,
+235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206,
+43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8,
+12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184,
+227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221,
+3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244,
+162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199,
+59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73,
+122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113,
+223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100,
+125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120,
+5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103,
+116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205,
+43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68,
+206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80,
+28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47,
+40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241,
+238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87,
+190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251,
+187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88,
+96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119,
+12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39,
+3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237,
+186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215,
+45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74,
+6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88,
+3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204,
+140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15,
+12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112,
+140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167,
+231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54,
+239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24,
+129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9,
+32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128,
+65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49,
+195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178,
+107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76,
+2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93,
+215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192,
+1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105,
+128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2,
+129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175,
+118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226,
+73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80,
+136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137,
+39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138,
+87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61,
+96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121,
+1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184,
+23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249,
+17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20,
+32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144,
+95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34,
+112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66,
+87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215,
+158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192,
+72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18,
+149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222,
+243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210,
+1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181,
+46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104,
+33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160,
+0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242,
+1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250,
+210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113,
+201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114,
+101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189,
+205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195,
+72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163,
+214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217,
+157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51,
+13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166,
+0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3,
+120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184,
+3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58,
+206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215,
+126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115,
+207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114,
+100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217,
+240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117,
+21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187,
+48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185,
+93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3,
+34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202,
+0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199,
+22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70,
+204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234,
+122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154,
+115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205,
+197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241,
+227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8,
+117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123,
+220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70,
+3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206,
+189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27,
+215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45,
+94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97,
+255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116,
+215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19,
+182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158,
+128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118,
+93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72,
+172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231,
+243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212,
+246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5,
+11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235,
+152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54,
+251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15,
+1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109,
+154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183,
+235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186,
+235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184,
+199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204,
+75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225,
+93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159,
+255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130,
+144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241,
+30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97,
+130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104,
+189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111,
+128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215,
+127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6,
+125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9,
+221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178,
+221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69,
+157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102,
+180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225,
+58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60,
+10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10,
+210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133,
+152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16,
+27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84,
+231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162,
+23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215,
+10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101,
+40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139,
+115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144,
+88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93,
+9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66,
+43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234,
+155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60,
+9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26,
+20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115,
+206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7,
+20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136,
+238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3,
+156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73,
+7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55,
+187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119,
+189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72,
+116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146,
+123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66,
+134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99,
+152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123,
+62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0,
+116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199,
+147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48,
+252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61,
+90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241,
+48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246,
+183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231,
+185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132,
+53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57,
+150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88,
+154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183,
+205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187,
+219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195,
+194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113,
+137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160,
+5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196,
+216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100,
+95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207,
+161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174,
+21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241,
+254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105,
+118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184,
+60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214,
+197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52,
+93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64,
+237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188,
+9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173,
+6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88,
+42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114,
+142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146,
+151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143,
+67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49,
+93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181,
+164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9,
+128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4,
+3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41,
+80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73,
+173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153,
+145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113,
+187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114,
+76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204,
+110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214,
+128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221,
+237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208,
+218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70,
+206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4,
+26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224,
+107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63,
+150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132,
+214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30,
+251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217,
+5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181,
+74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113,
+9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8,
+7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116,
+57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93,
+13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6,
+157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129,
+69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254,
+251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141,
+231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27,
+245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177,
+6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153,
+54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245,
+219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114,
+234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17,
+52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97,
+215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23,
+8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192,
+203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139,
+231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53,
+173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36,
+8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87,
+193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203,
+104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180,
+50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32,
+106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192,
+3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78,
+129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117,
+196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214,
+12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28,
+9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211,
+108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4,
+67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96,
+224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238,
+239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47,
+53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251,
+159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124,
+234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101,
+128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102,
+94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109,
+59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16,
+92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198,
+224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147,
+198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6,
+159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175,
+225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130,
+60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0,
+2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124,
+10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65,
+75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107,
+245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56,
+156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215,
+179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106,
+45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198,
+174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67,
+160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98,
+178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160,
+86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10,
+198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98,
+152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0,
+134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185,
+251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202,
+124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7,
+101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101,
+68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204,
+73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184,
+188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83,
+174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202,
+144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176,
+206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37,
+79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129,
+150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7,
+219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0,
+166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242,
+27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104,
+164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31,
+183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136,
+186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131,
+97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235,
+154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129,
+23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220,
+51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187,
+16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193,
+126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164,
+81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155,
+150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73,
+250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129,
+145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4,
+195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9,
+8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56,
+68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37,
+13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115,
+1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32,
+210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36,
+136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241,
+70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90,
+182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84,
+190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234,
+59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24,
+136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40,
+141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7,
+17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234,
+202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149,
+109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210,
+197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101,
+170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223,
+121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138,
+109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38,
+100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180,
+110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14,
+12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12,
+117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192,
+16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45,
+47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252,
+5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86,
+94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227,
+229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45,
+0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13,
+177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148,
+90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174,
+53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145,
+120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116,
+49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192,
+64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95,
+9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120,
+134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29,
+111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186,
+235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249,
+122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2,
+111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17,
+10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161,
+201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2,
+66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193,
+32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233,
+98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244,
+12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129,
+133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179,
+121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153,
+223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117,
+131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150,
+63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114,
+91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7,
+149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1,
+32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17,
+111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207,
+194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218,
+123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103,
+25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12,
+246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186,
+242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94,
+223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103,
+229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143,
+6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101,
+10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230,
+159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245,
+55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34,
+49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30,
+68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171,
+238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210,
+205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45,
+191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212,
+185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237,
+177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127,
+130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180,
+208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86,
+31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16,
+62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127,
+104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129,
+68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76,
+235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49,
+24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172,
+131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234,
+109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98,
+33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241,
+248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121,
+99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188,
+83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48,
+89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129,
+197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10,
+137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110,
+10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2,
+68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110,
+70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111,
+130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246,
+101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46,
+161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93,
+155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181,
+67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116,
+229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36,
+120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132,
+132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226,
+61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26,
+137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176,
+101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17,
+125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101,
+108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79,
+44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129,
+151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222,
+125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241,
+89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246,
+251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242,
+246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18,
+192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120,
+18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64,
+66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141,
+196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35,
+195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107,
+109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186,
+17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145,
+232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1,
+18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219,
+111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242,
+80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202,
+19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232,
+70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31,
+221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197,
+35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150,
+53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36,
+196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54,
+190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240,
+194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148,
+222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173,
+153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41,
+80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155,
+218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233,
+121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33,
+81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4,
+43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219,
+1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222,
+4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196,
+123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247,
+67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200,
+48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221,
+181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196,
+19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130,
+66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163,
+0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125,
+174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45,
+223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45,
+1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104,
+6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160,
+188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131,
+176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33,
+202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151,
+150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122,
+234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184,
+87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164,
+128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217,
+173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90,
+2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12,
+144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48,
+136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173,
+55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251,
+253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10,
+191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143,
+65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50,
+88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21,
+192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217,
+0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185,
+194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140,
+138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242,
+207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129,
+50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144,
+176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30,
+137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186,
+158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91,
+91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22,
+8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207,
+123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171,
+47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101,
+93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74,
+162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235,
+137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224,
+57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10,
+212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135,
+94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2,
+12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128,
+200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29,
+216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153,
+216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236,
+158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219,
+115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2,
+240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216,
+195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173,
+243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222,
+115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73,
+32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71,
+31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192,
+33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12,
+60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13,
+219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225,
+173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1,
+141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245,
+103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56,
+78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4,
+137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11,
+28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164,
+46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56,
+19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96,
+112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173,
+253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91,
+241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1,
+200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44,
+222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89,
+25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144,
+46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131,
+133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230,
+85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157,
+161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64,
+194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103,
+180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139,
+161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179,
+77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29,
+232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163,
+107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216,
+233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188,
+123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57,
+94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165,
+231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15,
+46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26,
+125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7,
+130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1,
+7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232,
+70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198,
+15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20,
+207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29,
+6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249,
+180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103,
+219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184,
+175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3,
+20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112,
+12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158,
+219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36,
+123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220,
+115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35,
+202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163,
+213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232,
+54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171,
+18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75,
+75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33,
+100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237,
+78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59,
+230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185,
+241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18,
+12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113,
+47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15,
+96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251,
+1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86,
+114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23,
+181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29,
+40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7,
+193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150,
+203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227,
+61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215,
+215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222,
+133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147,
+0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177,
+45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96,
+88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12,
+27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82,
+193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90,
+102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186,
+242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66,
+110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111,
+255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248,
+175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119,
+186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13,
+2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184,
+131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219,
+15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25,
+28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250,
+104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22,
+74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194,
+142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86,
+62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211,
+109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117,
+251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13,
+188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103,
+5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182,
+220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248,
+64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189,
+173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243,
+199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153,
+42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109,
+164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80,
+209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158,
+131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219,
+181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119,
+180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65,
+107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154,
+84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155,
+81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94,
+5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2,
+14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178,
+244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231,
+90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48,
+58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196,
+149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0,
+224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47,
+40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110,
+35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65,
+5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64,
+128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224,
+81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240,
+42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24,
+168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16,
+38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64,
+136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254,
+65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28,
+167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162,
+251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189,
+220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50,
+125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211,
+0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47,
+141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142,
+240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32,
+243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158,
+4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208,
+1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108,
+149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97,
+64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10,
+52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67,
+160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0,
+22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160,
+40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32,
+248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86,
+249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4,
+222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230,
+188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46,
+239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114,
+76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103,
+68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9,
+138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74,
+149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50,
+40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221,
+12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173,
+41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4,
+94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96,
+16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132,
+101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47,
+98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220,
+226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91,
+150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247,
+172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251,
+58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5,
+106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134,
+132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85,
+66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242,
+32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144,
+180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197,
+102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30,
+120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174,
+101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19,
+32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73,
+75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99,
+244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107,
+253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77,
+98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113,
+214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99,
+210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202,
+82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23,
+81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184,
+215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241,
+38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81,
+241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22,
+152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112,
+229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84,
+74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0,
+161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142,
+139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119,
+101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52,
+202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203,
+61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252,
+184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191,
+21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233,
+212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94,
+64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132,
+190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72,
+196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121,
+17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75,
+90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5,
+2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173,
+197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75,
+112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194,
+232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42,
+157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97,
+116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156,
+119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147,
+250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221,
+175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117,
+8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243,
+151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174,
+27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23,
+163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105,
+144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251,
+24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193,
+130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48,
+21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24,
+24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116,
+90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20,
+165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96,
+60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72,
+186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191,
+63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81,
+229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254,
+231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254,
+97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142,
+222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226,
+166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9,
+9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0,
+43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68,
+43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26,
+96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90,
+186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89,
+143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8,
+24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199,
+120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197,
+249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160,
+246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164,
+62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52,
+191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238,
+221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172,
+107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96,
+220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132,
+22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128,
+97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17,
+4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164,
+165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93,
+59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242,
+200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128,
+17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122,
+46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223,
+182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52,
+40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246,
+182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222,
+247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47,
+93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255,
+223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86,
+191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21,
+94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76,
+229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29,
+215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95,
+246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37,
+24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168,
+12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111,
+202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1,
+28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89,
+150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121,
+251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191,
+249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142,
+127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42,
+19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39,
+18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246,
+90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226,
+57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171,
+97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74,
+199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71,
+116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251,
+121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40,
+3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179,
+40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111,
+41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123,
+98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107,
+23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173,
+223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26,
+223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71,
+89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134,
+192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130,
+254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254,
+197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150,
+97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245,
+101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241,
+130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0,
+65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103,
+159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162,
+140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27,
+0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128,
+5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183,
+190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18,
+126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128,
+217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239,
+197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96,
+240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60,
+145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247,
+2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82,
+144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128,
+65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24,
+140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49,
+212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77,
+51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199,
+72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224,
+165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16,
+90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134,
+27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227,
+29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49,
+196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141,
+140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4,
+14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144,
+140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81,
+2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96,
+105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75,
+76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169,
+181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130,
+6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4,
+67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169,
+129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2,
+134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91,
+191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72,
+40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202,
+241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10,
+165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51,
+42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224,
+69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107,
+136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192,
+64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46,
+5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11,
+65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94,
+68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140,
+83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119,
+93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118,
+183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247,
+208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26,
+140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0,
+134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5,
+253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136,
+64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3,
+173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116,
+0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190,
+193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114,
+4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34,
+45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166,
+139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137,
+120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65,
+186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173,
+101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51,
+3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80,
+68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178,
+81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120,
+16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28,
+64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60,
+146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42,
+210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156,
+92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21,
+130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80,
+160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149,
+50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166,
+117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175,
+132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70,
+169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214,
+129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128,
+131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106,
+29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221,
+237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165,
+214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16,
+159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239,
+160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245,
+246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114,
+70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47,
+17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66,
+142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1,
+14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5,
+5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32,
+81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90,
+166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46,
+0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180,
+150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135,
+85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37,
+120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233,
+94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160,
+242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210,
+209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96,
+145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109,
+3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160,
+54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91,
+92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20,
+32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49,
+240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33,
+81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142,
+50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115,
+41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220,
+156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3,
+5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160,
+75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230,
+74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40,
+65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3,
+10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40,
+210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99,
+175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226,
+17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4,
+47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54,
+227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213,
+5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118,
+128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77,
+148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70,
+62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54,
+149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235,
+26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98,
+105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193,
+62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32,
+1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50,
+128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102,
+186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75,
+24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77,
+242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151,
+240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123,
+192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51,
+203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28,
+1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74,
+143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34,
+90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230,
+254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36,
+184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193,
+75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64,
+68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159,
+18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17,
+111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71,
+70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105,
+160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117,
+240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178,
+151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34,
+196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164,
+184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150,
+93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222,
+4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34,
+64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152,
+153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84,
+46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140,
+27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40,
+150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163,
+30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3,
+153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60,
+5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112,
+112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172,
+13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208,
+209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236,
+139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68,
+13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212,
+94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49,
+98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225,
+16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186,
+134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94,
+46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24,
+196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217,
+237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62,
+17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23,
+36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228,
+57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61,
+228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36,
+72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98,
+130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138,
+232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17,
+111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64,
+145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178,
+205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109,
+121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86,
+227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49,
+34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144,
+40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232,
+155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83,
+235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29,
+235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102,
+246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151,
+16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229,
+48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187,
+29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164,
+131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128,
+4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143,
+135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240,
+210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9,
+200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208,
+242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25,
+27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60,
+90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132,
+60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103,
+145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176,
+14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143,
+229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235,
+133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97,
+20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27,
+178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177,
+169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147,
+40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6,
+20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112,
+176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6,
+129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171,
+102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72,
+240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200,
+155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242,
+178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101,
+224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49,
+173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80,
+0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126,
+144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176,
+128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104,
+197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56,
+103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215,
+254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250,
+130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174,
+68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74,
+80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16,
+19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24,
+0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229,
+193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216,
+216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192,
+37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80,
+112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89,
+247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115,
+151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142,
+190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209,
+73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194,
+160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227,
+224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92,
+195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187,
+150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16,
+242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7,
+20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144,
+48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67,
+100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15,
+20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188,
+11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168,
+31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251,
+181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232,
+190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240,
+8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190,
+0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202,
+239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195,
+112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235,
+101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248,
+4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226,
+241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16,
+225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52,
+117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143,
+64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28,
+90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208,
+200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172,
+108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84,
+68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18,
+18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248,
+4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51,
+26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108,
+235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183,
+2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64,
+170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112,
+83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1,
+67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91,
+154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14,
+94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176,
+157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194,
+58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167,
+188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186,
+35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203,
+33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37,
+239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204,
+43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15,
+14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225,
+108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75,
+149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1,
+18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160,
+182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112,
+62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22,
+235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13,
+131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238,
+35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12,
+222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114,
+93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17,
+72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181,
+181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89,
+123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33,
+90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30,
+128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48,
+116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48,
+62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103,
+56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131,
+37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33,
+195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202,
+200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151,
+170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190,
+68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126,
+45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149,
+96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144,
+1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177,
+11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23,
+98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120,
+101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91,
+2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108,
+149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168,
+1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162,
+246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16,
+103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15,
+3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7,
+80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237,
+179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199,
+203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24,
+168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245,
+251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138,
+100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12,
+34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7,
+9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237,
+183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142,
+51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96,
+66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134,
+29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200,
+241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233,
+130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53,
+36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167,
+18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169,
+37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12,
+223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225,
+39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1,
+97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134,
+94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169,
+242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110,
+89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161,
+60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150,
+140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157,
+48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24,
+136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34,
+202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227,
+45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220,
+95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126,
+91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240,
+98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47,
+33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138,
+192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110,
+189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42,
+157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141,
+26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208,
+151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195,
+0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94,
+133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158,
+93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46,
+7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121,
+210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6,
+20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250,
+122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148,
+87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191,
+255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205,
+192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69,
+208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65,
+194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69,
+186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181,
+209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121,
+202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89,
+217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1,
+47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38,
+162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28,
+183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208,
+160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224,
+74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65,
+48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247,
+252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144,
+128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23,
+35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81,
+238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216,
+47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24,
+85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127,
+26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229,
+115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131,
+68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164,
+178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210,
+245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5,
+6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10,
+6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97,
+244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126,
+75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81,
+226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153,
+84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157,
+185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52,
+72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250,
+96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65,
+140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203,
+91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192,
+238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147,
+170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6,
+131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37,
+48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2,
+138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236,
+104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150,
+111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255,
+245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203,
+68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86,
+13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145,
+49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18,
+53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102,
+127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178,
+175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229,
+117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47,
+255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120,
+70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191,
+111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102,
+238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128,
+162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40,
+181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22,
+53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120,
+133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52,
+127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59,
+54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25,
+250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19,
+9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165,
+217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197,
+36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34,
+176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98,
+252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0,
+248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29,
+12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115,
+159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120,
+179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230,
+33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19,
+151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82,
+160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62,
+9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232,
+3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26,
+249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155,
+223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14,
+10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156,
+12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214,
+188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195,
+170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88,
+80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134,
+4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45,
+75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0,
+34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119,
+126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221,
+41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30,
+92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195,
+212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239,
+5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145,
+150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56,
+84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129,
+132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131,
+5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196,
+53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127,
+253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150,
+188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176,
+179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24,
+121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140,
+120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143,
+73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86,
+134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26,
+32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88,
+103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20,
+246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91,
+119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188,
+132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121,
+77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185,
+22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167,
+223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181,
+144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18,
+222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1,
+162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108,
+7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236,
+186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105,
+126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31,
+100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25,
+166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75,
+119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208,
+189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182,
+106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94,
+246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168,
+1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210,
+155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0,
+0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207,
+225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221,
+6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60,
+5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77,
+67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12,
+158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229,
+11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222,
+69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180,
+224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15,
+65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143,
+128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20,
+248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195,
+167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37,
+24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108,
+213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241,
+53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122,
+127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93,
+135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225,
+78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1,
+2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0,
+65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238,
+9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152,
+239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96,
+232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46,
+33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182,
+37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181,
+30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104,
+89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242,
+16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25,
+204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32,
+142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131,
+46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48,
+100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18,
+132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165,
+228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165,
+79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32,
+30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45,
+62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188,
+2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4,
+22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18,
+8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121,
+8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17,
+37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141,
+44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136,
+81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150,
+158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1,
+6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40,
+39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240,
+16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24,
+2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250,
+247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20,
+196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158,
+108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27,
+186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165,
+218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101,
+167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111,
+3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12,
+61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46,
+67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33,
+40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161,
+134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87,
+65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199,
+123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199,
+184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6,
+112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8,
+70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50,
+134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67,
+48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59,
+136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171,
+143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190,
+4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20,
+39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114,
+253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208,
+35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221,
+6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197,
+210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8,
+1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145,
+3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184,
+251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61,
+154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46,
+242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164,
+219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83,
+226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177,
+236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203,
+40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18,
+84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32,
+196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50,
+252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98,
+217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114,
+148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91,
+54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128,
+90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201,
+73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67,
+48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209,
+4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228,
+187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66,
+38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212,
+65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12,
+208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5,
+48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31,
+16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128,
+96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116,
+23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114,
+223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127,
+38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0,
+131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196,
+17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30,
+66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204,
+69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16,
+74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97,
+105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223,
+89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121,
+243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33,
+67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94,
+66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110,
+190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69,
+22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228,
+40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129,
+197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61,
+132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229,
+49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151,
+206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237,
+253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59,
+0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36,
+150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27,
+168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115,
+225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133,
+60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134,
+29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35,
+88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236,
+25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227,
+100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242,
+166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96,
+144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203,
+138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234,
+254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61,
+8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12,
+37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202,
+23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6,
+89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147,
+56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185,
+190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144,
+245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159,
+249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226,
+87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232,
+91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59,
+223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12,
+178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62,
+241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210,
+72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253,
+145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114,
+255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82,
+52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107,
+127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142,
+126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124,
+89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34,
+179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58,
+64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81,
+213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55,
+253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39,
+141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39,
+105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234,
+237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251,
+178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46,
+58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234,
+197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207,
+23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23,
+13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125,
+199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164,
+108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63,
+249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28,
+242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63,
+251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174,
+101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50,
+77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88,
+176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135,
+31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62,
+188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227,
+145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35,
+245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244,
+138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107,
+115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71,
+252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121,
+118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145,
+89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26,
+169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63,
+63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249,
+230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219,
+77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116,
+49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241,
+108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242,
+93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238,
+119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54,
+52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89,
+174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127,
+169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195,
+31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241,
+181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125,
+194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42,
+231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146,
+178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231,
+130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162,
+31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70,
+178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252,
+193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47,
+109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113,
+12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44,
+251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92,
+124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166,
+169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167,
+105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255,
+230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222,
+151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151,
+53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167,
+175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151,
+230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223,
+252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143,
+229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250,
+11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164,
+253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116,
+116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124,
+234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254,
+38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211,
+171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158,
+205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153,
+117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254,
+244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189,
+146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79,
+92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27,
+40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246,
+222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163,
+61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113,
+57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98,
+76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216,
+209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101,
+201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39,
+53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116,
+218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142,
+61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117,
+215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113,
+95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30,
+242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146,
+204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222,
+172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103,
+118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160,
+67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231,
+210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9,
+199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141,
+75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132,
+196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143,
+229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127,
+246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73,
+9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92,
+84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234,
+171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175,
+186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95,
+127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255,
+249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102,
+165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236,
+193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243,
+233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6,
+202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254,
+200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123,
+23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21,
+176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224,
+246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59,
+189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97,
+24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88,
+238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234,
+244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159,
+242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79,
+218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178,
+57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249,
+225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243,
+201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229,
+144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151,
+40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215,
+237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182,
+75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190,
+86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231,
+101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174,
+248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214,
+213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11,
+9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163,
+78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117,
+175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115,
+202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199,
+57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217,
+119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111,
+183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28,
+223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178,
+169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23,
+95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128,
+230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87,
+117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188,
+119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248,
+212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223,
+112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23,
+29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36,
+120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25,
+159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241,
+164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175,
+121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246,
+189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126,
+206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135,
+63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106,
+201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128,
+81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245,
+167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245,
+171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196,
+57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226,
+21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217,
+186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183,
+93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225,
+71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94,
+205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238,
+95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35,
+217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210,
+91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143,
+61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67,
+75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204,
+233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249,
+17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215,
+183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89,
+115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191,
+249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229,
+202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59,
+50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37,
+186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171,
+150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184,
+251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247,
+176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253,
+254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112,
+252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226,
+65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120,
+78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239,
+123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77,
+205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117,
+175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208,
+55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19,
+142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154,
+24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71,
+126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164,
+251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4,
+102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64,
+124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4,
+184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210,
+124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194,
+57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187,
+126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178,
+92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124,
+223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186,
+219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163,
+148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174,
+67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119,
+190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75,
+51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224,
+50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238,
+218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82,
+121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27,
+174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235,
+188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45,
+150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249,
+218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27,
+218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185,
+205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167,
+240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254,
+245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102,
+62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181,
+204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174,
+181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68,
+89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60,
+185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205,
+21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100,
+210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222,
+220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180,
+17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253,
+225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254,
+130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41,
+31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35,
+80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109,
+154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178,
+93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159,
+241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144,
+32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239,
+162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222,
+1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26,
+38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245,
+133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70,
+123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35,
+30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200,
+253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32,
+233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155,
+119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179,
+196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223,
+252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88,
+74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142,
+208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94,
+255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177,
+55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124,
+37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78,
+250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226,
+164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240,
+88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196,
+194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195,
+228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138,
+139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245,
+186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44,
+165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27,
+216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63,
+188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153,
+119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185,
+22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229,
+148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33,
+35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120,
+208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42,
+171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124,
+35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189,
+77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3,
+183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158,
+112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122,
+74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0,
+79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106,
+186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236,
+71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83,
+34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201,
+204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154,
+152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131,
+138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63,
+238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94,
+15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135,
+60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244,
+53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239,
+219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90,
+235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124,
+228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24,
+209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72,
+136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191,
+108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179,
+253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229,
+184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167,
+207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230,
+54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175,
+75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207,
+27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151,
+63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134,
+204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64,
+223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95,
+191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226,
+213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185,
+249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244,
+39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92,
+190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127,
+159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226,
+33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183,
+118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65,
+162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25,
+73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226,
+161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203,
+81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26,
+52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187,
+90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149,
+46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146,
+68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203,
+197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49,
+34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203,
+172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14,
+41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108,
+47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249,
+251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168,
+147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73,
+40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161,
+107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123,
+151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127,
+209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29,
+115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125,
+11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182,
+31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198,
+90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213,
+137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103,
+181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181,
+5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39,
+157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161,
+78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107,
+72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152,
+49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157,
+114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223,
+236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119,
+196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205,
+111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253,
+241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183,
+93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251,
+100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198,
+191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81,
+251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183,
+2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146,
+125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165,
+243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62,
+196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51,
+199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133,
+237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91,
+172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153,
+166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80,
+110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93,
+160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179,
+222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247,
+7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190,
+253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192,
+72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143,
+26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215,
+236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67,
+162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171,
+27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12,
+78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147,
+116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253,
+53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241,
+69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17,
+167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159,
+28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254,
+199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186,
+6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61,
+253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235,
+136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136,
+70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162,
+58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103,
+156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246,
+137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181,
+32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161,
+127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197,
+139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104,
+150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202,
+36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185,
+246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118,
+240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253,
+170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223,
+203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89,
+198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168,
+239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62,
+119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244,
+62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141,
+212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253,
+67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124,
+244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94,
+246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187,
+61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142,
+228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241,
+201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242,
+217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176,
+101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220,
+255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190,
+109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204,
+67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5,
+99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168,
+107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137,
+113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254,
+73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78,
+219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50,
+105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90,
+110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172,
+244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144,
+114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234,
+253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229,
+3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217,
+98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127,
+121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23,
+191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6,
+234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191,
+205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212,
+219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49,
+71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159,
+249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89,
+152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100,
+165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253,
+97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206,
+52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224,
+79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119,
+224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103,
+188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242,
+75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246,
+183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38,
+29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190,
+243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191,
+246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106,
+163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26,
+164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223,
+130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173,
+69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237,
+215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178,
+186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112,
+144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233,
+106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190,
+133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201,
+32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166,
+155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119,
+223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242,
+212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35,
+101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43,
+41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100,
+107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173,
+181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239,
+190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74,
+109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45,
+125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111,
+134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7,
+217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110,
+47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187,
+110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105,
+144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169,
+219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231,
+174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124,
+6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53,
+82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96,
+240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38,
+165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245,
+248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30,
+211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44,
+153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55,
+253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95,
+45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26,
+169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238,
+203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6,
+89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65,
+6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65,
+6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32,
+131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131,
+12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0,
+0,0,0,73,69,78,68,174,66,96,130};
+
+int splash_image3_sz = sizeof(splash_image3);
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage04.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage04.c
new file mode 100644
index 0000000000..13d2f51530
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage04.c
@@ -0,0 +1,2167 @@
+const unsigned char splash_image4[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82,
+146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,
+43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7,
+184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206,
+57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88,
+98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68,
+122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32,
+88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214,
+222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152,
+99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12,
+50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108,
+115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218,
+182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104,
+115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124,
+194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180,
+103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36,
+182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149,
+110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201,
+37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57,
+21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126,
+175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141,
+58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108,
+236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44,
+203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85,
+89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149,
+223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88,
+46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157,
+86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165,
+239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201,
+132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89,
+38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109,
+174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53,
+43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9,
+182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164,
+41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90,
+185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226,
+186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223,
+111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155,
+120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5,
+87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7,
+157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150,
+231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164,
+41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42,
+183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251,
+157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75,
+47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76,
+203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184,
+86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229,
+1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153,
+199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198,
+158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212,
+247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182,
+167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157,
+246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182,
+196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215,
+185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29,
+72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152,
+116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152,
+140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73,
+134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76,
+39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233,
+242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174,
+61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75,
+63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253,
+48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175,
+16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172,
+133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197,
+117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216,
+203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249,
+94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237,
+241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64,
+110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34,
+93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53,
+35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185,
+245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191,
+58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186,
+173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157,
+59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222,
+163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115,
+174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66,
+224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4,
+90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222,
+71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231,
+94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233,
+170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182,
+82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148,
+114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175,
+200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101,
+62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168,
+82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3,
+36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137,
+173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45,
+3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12,
+50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,
+200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200,
+84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51,
+196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86,
+195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247,
+122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162,
+139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91,
+88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191,
+85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159,
+105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207,
+53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211,
+142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81,
+94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182,
+41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131,
+236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27,
+109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147,
+5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151,
+140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188,
+137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173,
+166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215,
+1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61,
+246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203,
+97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181,
+0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233,
+194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92,
+69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102,
+207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226,
+124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59,
+245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103,
+88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27,
+249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73,
+180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28,
+166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239,
+180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86,
+129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254,
+190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250,
+45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83,
+116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227,
+231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223,
+178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28,
+166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254,
+58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73,
+149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89,
+231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215,
+195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201,
+211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171,
+42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50,
+215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235,
+201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152,
+6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93,
+178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255,
+111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235,
+141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159,
+233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206,
+199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116,
+137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223,
+92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49,
+25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255,
+143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147,
+209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152,
+76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79,
+207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108,
+123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231,
+99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252,
+242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12,
+245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212,
+109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220,
+181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167,
+44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219,
+61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95,
+46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99,
+73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214,
+231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73,
+101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142,
+46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45,
+24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46,
+60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122,
+142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167,
+147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140,
+227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140,
+109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249,
+157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55,
+231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178,
+184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69,
+50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241,
+107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120,
+94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165,
+190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246,
+90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211,
+242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4,
+186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61,
+200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25,
+100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,
+170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,
+12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,
+144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,
+24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,
+100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100,
+144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98,
+123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205,
+55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28,
+179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252,
+228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186,
+230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215,
+94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226,
+94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119,
+148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75,
+141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69,
+115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1,
+7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233,
+159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255,
+220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204,
+230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37,
+134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75,
+35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47,
+236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188,
+121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0,
+120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249,
+200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183,
+230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185,
+187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210,
+208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243,
+165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135,
+62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85,
+243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158,
+6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47,
+126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205,
+126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130,
+14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4,
+10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199,
+31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108,
+118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96,
+220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196,
+39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45,
+111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30,
+52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200,
+0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94,
+121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249,
+206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243,
+156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176,
+143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232,
+106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223,
+222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239,
+194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231,
+53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0,
+192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233,
+174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231,
+55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121,
+195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125,
+112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19,
+225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158,
+244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92,
+90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110,
+89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70,
+16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234,
+0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199,
+152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127,
+248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239,
+127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48,
+240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242,
+172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187,
+135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214,
+179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99,
+216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143,
+187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242,
+230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7,
+54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64,
+193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70,
+9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182,
+223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223,
+119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156,
+114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93,
+239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2,
+21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38,
+3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192,
+82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135,
+235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206,
+43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8,
+12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184,
+227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221,
+3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244,
+162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199,
+59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73,
+122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113,
+223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100,
+125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120,
+5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103,
+116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205,
+43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68,
+206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80,
+28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47,
+40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241,
+238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87,
+190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251,
+187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88,
+96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119,
+12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39,
+3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237,
+186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215,
+45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74,
+6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88,
+3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204,
+140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15,
+12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112,
+140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167,
+231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54,
+239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24,
+129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9,
+32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128,
+65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49,
+195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178,
+107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76,
+2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93,
+215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192,
+1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105,
+128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2,
+129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175,
+118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226,
+73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80,
+136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137,
+39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138,
+87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61,
+96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121,
+1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184,
+23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249,
+17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20,
+32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144,
+95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34,
+112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66,
+87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215,
+158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192,
+72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18,
+149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222,
+243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210,
+1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181,
+46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104,
+33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160,
+0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242,
+1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250,
+210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113,
+201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114,
+101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189,
+205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195,
+72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163,
+214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217,
+157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51,
+13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166,
+0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3,
+120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184,
+3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58,
+206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215,
+126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115,
+207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114,
+100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217,
+240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117,
+21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187,
+48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185,
+93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3,
+34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202,
+0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199,
+22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70,
+204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234,
+122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154,
+115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205,
+197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241,
+227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8,
+117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123,
+220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70,
+3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206,
+189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27,
+215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45,
+94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97,
+255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116,
+215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19,
+182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158,
+128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118,
+93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72,
+172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231,
+243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212,
+246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5,
+11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235,
+152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54,
+251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15,
+1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109,
+154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183,
+235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186,
+235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184,
+199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204,
+75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225,
+93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159,
+255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130,
+144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241,
+30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97,
+130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104,
+189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111,
+128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215,
+127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6,
+125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9,
+221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178,
+221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69,
+157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102,
+180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225,
+58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60,
+10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10,
+210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133,
+152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16,
+27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84,
+231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162,
+23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215,
+10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101,
+40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139,
+115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144,
+88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93,
+9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66,
+43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234,
+155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60,
+9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26,
+20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115,
+206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7,
+20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136,
+238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3,
+156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73,
+7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55,
+187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119,
+189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72,
+116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146,
+123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66,
+134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99,
+152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123,
+62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0,
+116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199,
+147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48,
+252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61,
+90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241,
+48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246,
+183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231,
+185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132,
+53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57,
+150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88,
+154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183,
+205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187,
+219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195,
+194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113,
+137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160,
+5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196,
+216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100,
+95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207,
+161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174,
+21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241,
+254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105,
+118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184,
+60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214,
+197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52,
+93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64,
+237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188,
+9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173,
+6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88,
+42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114,
+142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146,
+151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143,
+67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49,
+93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181,
+164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9,
+128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4,
+3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41,
+80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73,
+173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153,
+145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113,
+187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114,
+76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204,
+110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214,
+128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221,
+237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208,
+218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70,
+206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4,
+26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224,
+107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63,
+150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132,
+214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30,
+251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217,
+5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181,
+74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113,
+9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8,
+7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116,
+57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93,
+13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6,
+157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129,
+69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254,
+251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141,
+231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27,
+245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177,
+6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153,
+54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245,
+219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114,
+234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17,
+52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97,
+215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23,
+8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192,
+203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139,
+231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53,
+173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36,
+8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87,
+193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203,
+104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180,
+50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32,
+106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192,
+3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78,
+129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117,
+196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214,
+12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28,
+9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211,
+108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4,
+67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96,
+224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238,
+239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47,
+53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251,
+159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124,
+234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101,
+128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102,
+94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109,
+59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16,
+92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198,
+224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147,
+198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6,
+159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175,
+225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130,
+60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0,
+2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124,
+10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65,
+75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107,
+245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56,
+156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215,
+179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106,
+45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198,
+174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67,
+160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98,
+178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160,
+86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10,
+198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98,
+152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0,
+134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185,
+251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202,
+124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7,
+101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101,
+68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204,
+73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184,
+188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83,
+174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202,
+144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176,
+206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37,
+79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129,
+150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7,
+219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0,
+166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242,
+27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104,
+164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31,
+183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136,
+186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131,
+97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235,
+154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129,
+23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220,
+51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187,
+16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193,
+126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164,
+81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155,
+150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73,
+250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129,
+145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4,
+195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9,
+8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56,
+68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37,
+13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115,
+1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32,
+210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36,
+136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241,
+70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90,
+182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84,
+190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234,
+59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24,
+136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40,
+141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7,
+17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234,
+202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149,
+109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210,
+197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101,
+170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223,
+121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138,
+109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38,
+100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180,
+110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14,
+12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12,
+117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192,
+16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45,
+47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252,
+5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86,
+94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227,
+229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45,
+0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13,
+177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148,
+90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174,
+53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145,
+120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116,
+49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192,
+64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95,
+9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120,
+134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29,
+111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186,
+235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249,
+122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2,
+111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17,
+10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161,
+201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2,
+66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193,
+32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233,
+98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244,
+12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129,
+133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179,
+121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153,
+223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117,
+131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150,
+63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114,
+91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7,
+149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1,
+32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17,
+111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207,
+194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218,
+123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103,
+25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12,
+246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186,
+242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94,
+223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103,
+229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143,
+6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101,
+10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230,
+159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245,
+55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34,
+49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30,
+68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171,
+238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210,
+205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45,
+191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212,
+185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237,
+177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127,
+130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180,
+208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86,
+31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16,
+62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127,
+104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129,
+68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76,
+235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49,
+24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172,
+131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234,
+109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98,
+33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241,
+248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121,
+99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188,
+83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48,
+89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129,
+197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10,
+137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110,
+10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2,
+68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110,
+70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111,
+130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246,
+101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46,
+161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93,
+155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181,
+67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116,
+229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36,
+120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132,
+132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226,
+61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26,
+137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176,
+101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17,
+125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101,
+108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79,
+44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129,
+151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222,
+125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241,
+89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246,
+251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242,
+246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18,
+192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120,
+18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64,
+66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141,
+196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35,
+195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107,
+109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186,
+17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145,
+232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1,
+18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219,
+111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242,
+80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202,
+19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232,
+70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31,
+221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197,
+35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150,
+53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36,
+196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54,
+190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240,
+194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148,
+222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173,
+153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41,
+80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155,
+218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233,
+121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33,
+81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4,
+43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219,
+1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222,
+4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196,
+123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247,
+67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200,
+48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221,
+181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196,
+19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130,
+66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163,
+0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125,
+174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45,
+223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45,
+1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104,
+6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160,
+188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131,
+176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33,
+202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151,
+150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122,
+234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184,
+87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164,
+128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217,
+173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90,
+2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12,
+144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48,
+136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173,
+55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251,
+253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10,
+191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143,
+65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50,
+88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21,
+192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217,
+0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185,
+194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140,
+138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242,
+207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129,
+50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144,
+176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30,
+137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186,
+158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91,
+91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22,
+8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207,
+123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171,
+47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101,
+93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74,
+162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235,
+137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224,
+57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10,
+212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135,
+94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2,
+12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128,
+200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29,
+216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153,
+216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236,
+158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219,
+115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2,
+240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216,
+195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173,
+243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222,
+115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73,
+32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71,
+31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192,
+33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12,
+60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13,
+219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225,
+173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1,
+141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245,
+103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56,
+78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4,
+137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11,
+28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164,
+46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56,
+19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96,
+112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173,
+253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91,
+241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1,
+200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44,
+222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89,
+25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144,
+46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131,
+133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230,
+85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157,
+161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64,
+194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103,
+180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139,
+161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179,
+77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29,
+232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163,
+107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216,
+233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188,
+123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57,
+94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165,
+231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15,
+46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26,
+125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7,
+130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1,
+7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232,
+70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198,
+15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20,
+207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29,
+6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249,
+180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103,
+219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184,
+175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3,
+20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112,
+12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158,
+219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36,
+123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220,
+115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35,
+202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163,
+213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232,
+54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171,
+18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75,
+75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33,
+100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237,
+78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59,
+230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185,
+241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18,
+12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113,
+47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15,
+96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251,
+1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86,
+114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23,
+181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29,
+40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7,
+193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150,
+203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227,
+61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215,
+215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222,
+133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147,
+0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177,
+45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96,
+88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12,
+27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82,
+193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90,
+102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186,
+242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66,
+110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111,
+255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248,
+175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119,
+186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13,
+2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184,
+131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219,
+15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25,
+28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250,
+104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22,
+74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194,
+142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86,
+62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211,
+109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117,
+251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13,
+188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103,
+5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182,
+220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248,
+64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189,
+173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243,
+199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153,
+42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109,
+164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80,
+209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158,
+131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219,
+181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119,
+180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65,
+107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154,
+84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155,
+81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94,
+5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2,
+14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178,
+244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231,
+90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48,
+58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196,
+149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0,
+224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47,
+40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110,
+35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65,
+5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64,
+128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224,
+81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240,
+42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24,
+168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16,
+38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64,
+136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254,
+65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28,
+167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162,
+251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189,
+220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50,
+125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211,
+0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47,
+141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142,
+240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32,
+243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158,
+4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208,
+1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108,
+149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97,
+64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10,
+52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67,
+160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0,
+22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160,
+40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32,
+248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86,
+249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4,
+222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230,
+188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46,
+239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114,
+76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103,
+68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9,
+138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74,
+149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50,
+40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221,
+12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173,
+41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4,
+94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96,
+16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132,
+101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47,
+98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220,
+226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91,
+150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247,
+172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251,
+58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5,
+106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134,
+132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85,
+66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242,
+32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144,
+180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197,
+102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30,
+120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174,
+101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19,
+32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73,
+75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99,
+244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107,
+253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77,
+98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113,
+214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99,
+210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202,
+82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23,
+81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184,
+215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241,
+38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81,
+241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22,
+152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112,
+229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84,
+74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0,
+161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142,
+139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119,
+101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52,
+202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203,
+61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252,
+184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191,
+21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233,
+212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94,
+64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132,
+190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72,
+196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121,
+17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75,
+90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5,
+2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173,
+197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75,
+112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194,
+232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42,
+157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97,
+116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156,
+119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147,
+250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221,
+175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117,
+8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243,
+151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174,
+27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23,
+163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105,
+144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251,
+24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193,
+130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48,
+21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24,
+24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116,
+90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20,
+165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96,
+60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72,
+186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191,
+63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81,
+229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254,
+231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254,
+97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142,
+222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226,
+166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9,
+9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0,
+43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68,
+43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26,
+96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90,
+186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89,
+143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8,
+24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199,
+120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197,
+249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160,
+246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164,
+62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52,
+191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238,
+221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172,
+107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96,
+220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132,
+22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128,
+97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17,
+4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164,
+165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93,
+59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242,
+200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128,
+17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122,
+46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223,
+182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52,
+40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246,
+182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222,
+247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47,
+93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255,
+223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86,
+191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21,
+94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76,
+229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29,
+215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95,
+246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37,
+24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168,
+12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111,
+202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1,
+28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89,
+150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121,
+251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191,
+249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142,
+127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42,
+19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39,
+18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246,
+90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226,
+57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171,
+97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74,
+199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71,
+116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251,
+121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40,
+3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179,
+40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111,
+41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123,
+98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107,
+23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173,
+223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26,
+223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71,
+89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134,
+192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130,
+254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254,
+197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150,
+97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245,
+101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241,
+130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0,
+65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103,
+159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162,
+140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27,
+0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128,
+5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183,
+190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18,
+126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128,
+217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239,
+197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96,
+240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60,
+145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247,
+2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82,
+144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128,
+65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24,
+140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49,
+212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77,
+51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199,
+72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224,
+165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16,
+90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134,
+27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227,
+29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49,
+196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141,
+140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4,
+14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144,
+140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81,
+2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96,
+105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75,
+76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169,
+181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130,
+6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4,
+67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169,
+129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2,
+134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91,
+191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72,
+40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202,
+241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10,
+165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51,
+42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224,
+69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107,
+136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192,
+64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46,
+5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11,
+65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94,
+68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140,
+83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119,
+93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118,
+183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247,
+208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26,
+140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0,
+134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5,
+253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136,
+64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3,
+173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116,
+0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190,
+193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114,
+4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34,
+45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166,
+139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137,
+120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65,
+186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173,
+101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51,
+3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80,
+68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178,
+81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120,
+16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28,
+64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60,
+146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42,
+210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156,
+92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21,
+130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80,
+160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149,
+50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166,
+117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175,
+132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70,
+169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214,
+129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128,
+131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106,
+29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221,
+237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165,
+214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16,
+159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239,
+160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245,
+246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114,
+70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47,
+17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66,
+142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1,
+14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5,
+5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32,
+81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90,
+166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46,
+0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180,
+150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135,
+85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37,
+120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233,
+94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160,
+242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210,
+209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96,
+145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109,
+3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160,
+54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91,
+92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20,
+32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49,
+240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33,
+81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142,
+50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115,
+41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220,
+156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3,
+5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160,
+75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230,
+74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40,
+65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3,
+10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40,
+210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99,
+175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226,
+17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4,
+47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54,
+227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213,
+5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118,
+128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77,
+148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70,
+62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54,
+149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235,
+26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98,
+105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193,
+62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32,
+1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50,
+128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102,
+186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75,
+24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77,
+242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151,
+240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123,
+192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51,
+203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28,
+1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74,
+143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34,
+90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230,
+254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36,
+184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193,
+75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64,
+68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159,
+18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17,
+111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71,
+70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105,
+160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117,
+240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178,
+151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34,
+196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164,
+184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150,
+93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222,
+4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34,
+64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152,
+153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84,
+46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140,
+27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40,
+150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163,
+30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3,
+153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60,
+5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112,
+112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172,
+13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208,
+209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236,
+139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68,
+13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212,
+94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49,
+98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225,
+16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186,
+134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94,
+46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24,
+196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217,
+237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62,
+17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23,
+36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228,
+57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61,
+228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36,
+72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98,
+130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138,
+232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17,
+111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64,
+145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178,
+205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109,
+121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86,
+227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49,
+34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144,
+40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232,
+155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83,
+235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29,
+235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102,
+246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151,
+16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229,
+48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187,
+29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164,
+131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128,
+4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143,
+135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240,
+210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9,
+200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208,
+242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25,
+27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60,
+90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132,
+60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103,
+145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176,
+14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143,
+229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235,
+133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97,
+20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27,
+178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177,
+169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147,
+40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6,
+20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112,
+176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6,
+129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171,
+102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72,
+240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200,
+155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242,
+178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101,
+224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49,
+173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80,
+0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126,
+144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176,
+128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104,
+197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56,
+103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215,
+254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250,
+130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174,
+68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74,
+80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16,
+19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24,
+0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229,
+193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216,
+216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192,
+37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80,
+112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89,
+247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115,
+151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142,
+190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209,
+73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194,
+160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227,
+224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92,
+195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187,
+150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16,
+242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7,
+20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144,
+48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67,
+100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15,
+20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188,
+11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168,
+31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251,
+181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232,
+190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240,
+8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190,
+0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202,
+239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195,
+112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235,
+101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248,
+4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226,
+241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16,
+225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52,
+117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143,
+64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28,
+90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208,
+200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172,
+108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84,
+68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18,
+18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248,
+4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51,
+26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108,
+235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183,
+2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64,
+170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112,
+83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1,
+67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91,
+154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14,
+94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176,
+157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194,
+58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167,
+188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186,
+35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203,
+33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37,
+239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204,
+43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15,
+14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225,
+108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75,
+149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1,
+18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160,
+182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112,
+62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22,
+235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13,
+131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238,
+35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12,
+222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114,
+93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17,
+72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181,
+181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89,
+123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33,
+90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30,
+128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48,
+116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48,
+62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103,
+56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131,
+37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33,
+195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202,
+200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151,
+170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190,
+68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126,
+45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149,
+96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144,
+1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177,
+11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23,
+98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120,
+101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91,
+2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108,
+149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168,
+1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162,
+246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16,
+103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15,
+3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7,
+80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237,
+179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199,
+203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24,
+168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245,
+251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138,
+100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12,
+34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7,
+9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237,
+183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142,
+51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96,
+66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134,
+29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200,
+241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233,
+130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53,
+36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167,
+18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169,
+37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12,
+223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225,
+39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1,
+97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134,
+94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169,
+242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110,
+89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161,
+60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150,
+140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157,
+48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24,
+136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34,
+202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227,
+45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220,
+95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126,
+91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240,
+98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47,
+33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138,
+192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110,
+189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42,
+157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141,
+26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208,
+151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195,
+0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94,
+133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158,
+93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46,
+7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121,
+210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6,
+20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250,
+122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148,
+87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191,
+255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205,
+192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69,
+208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65,
+194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69,
+186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181,
+209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121,
+202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89,
+217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1,
+47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38,
+162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28,
+183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208,
+160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224,
+74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65,
+48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247,
+252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144,
+128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23,
+35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81,
+238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216,
+47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24,
+85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127,
+26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229,
+115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131,
+68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164,
+178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210,
+245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5,
+6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10,
+6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97,
+244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126,
+75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81,
+226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153,
+84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157,
+185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52,
+72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250,
+96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65,
+140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203,
+91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192,
+238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147,
+170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6,
+131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37,
+48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2,
+138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236,
+104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150,
+111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255,
+245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203,
+68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86,
+13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145,
+49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18,
+53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102,
+127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178,
+175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229,
+117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47,
+255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120,
+70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191,
+111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102,
+238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128,
+162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40,
+181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22,
+53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120,
+133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52,
+127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59,
+54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25,
+250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19,
+9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165,
+217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197,
+36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34,
+176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98,
+252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0,
+248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29,
+12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115,
+159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120,
+179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230,
+33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19,
+151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82,
+160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62,
+9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232,
+3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26,
+249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155,
+223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14,
+10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156,
+12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214,
+188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195,
+170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88,
+80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134,
+4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45,
+75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0,
+34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119,
+126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221,
+41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30,
+92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195,
+212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239,
+5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145,
+150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56,
+84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129,
+132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131,
+5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196,
+53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127,
+253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150,
+188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176,
+179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24,
+121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140,
+120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143,
+73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86,
+134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26,
+32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88,
+103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20,
+246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91,
+119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188,
+132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121,
+77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185,
+22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167,
+223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181,
+144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18,
+222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1,
+162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108,
+7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236,
+186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105,
+126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31,
+100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25,
+166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75,
+119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208,
+189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182,
+106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94,
+246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168,
+1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210,
+155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0,
+0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207,
+225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221,
+6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60,
+5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77,
+67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12,
+158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229,
+11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222,
+69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180,
+224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15,
+65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143,
+128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20,
+248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195,
+167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37,
+24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108,
+213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241,
+53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122,
+127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93,
+135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225,
+78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1,
+2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0,
+65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238,
+9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152,
+239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96,
+232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46,
+33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182,
+37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181,
+30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104,
+89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242,
+16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25,
+204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32,
+142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131,
+46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48,
+100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18,
+132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165,
+228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165,
+79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32,
+30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45,
+62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188,
+2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4,
+22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18,
+8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121,
+8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17,
+37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141,
+44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136,
+81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150,
+158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1,
+6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40,
+39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240,
+16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24,
+2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250,
+247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20,
+196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158,
+108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27,
+186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165,
+218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101,
+167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111,
+3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12,
+61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46,
+67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33,
+40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161,
+134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87,
+65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199,
+123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199,
+184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6,
+112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8,
+70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50,
+134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67,
+48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59,
+136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171,
+143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190,
+4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20,
+39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114,
+253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208,
+35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221,
+6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197,
+210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8,
+1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145,
+3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184,
+251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61,
+154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46,
+242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164,
+219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83,
+226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177,
+236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203,
+40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18,
+84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32,
+196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50,
+252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98,
+217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114,
+148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91,
+54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128,
+90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201,
+73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67,
+48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209,
+4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228,
+187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66,
+38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212,
+65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12,
+208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5,
+48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31,
+16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128,
+96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116,
+23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114,
+223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127,
+38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0,
+131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196,
+17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30,
+66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204,
+69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16,
+74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97,
+105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223,
+89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121,
+243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33,
+67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94,
+66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110,
+190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69,
+22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228,
+40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129,
+197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61,
+132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229,
+49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151,
+206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237,
+253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59,
+0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36,
+150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27,
+168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115,
+225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133,
+60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134,
+29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35,
+88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236,
+25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227,
+100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242,
+166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96,
+144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203,
+138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234,
+254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61,
+8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12,
+37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202,
+23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6,
+89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147,
+56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185,
+190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144,
+245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159,
+249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226,
+87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232,
+91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59,
+223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12,
+178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62,
+241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210,
+72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253,
+145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114,
+255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82,
+52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107,
+127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142,
+126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124,
+89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34,
+179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58,
+64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81,
+213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55,
+253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39,
+141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39,
+105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234,
+237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251,
+178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46,
+58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234,
+197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207,
+23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23,
+13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125,
+199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164,
+108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63,
+249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28,
+242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63,
+251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174,
+101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50,
+77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88,
+176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135,
+31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62,
+188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227,
+145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35,
+245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244,
+138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107,
+115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71,
+252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121,
+118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145,
+89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26,
+169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63,
+63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249,
+230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219,
+77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116,
+49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241,
+108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242,
+93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238,
+119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54,
+52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89,
+174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127,
+169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195,
+31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241,
+181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125,
+194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42,
+231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146,
+178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231,
+130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162,
+31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70,
+178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252,
+193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47,
+109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113,
+12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44,
+251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92,
+124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166,
+169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167,
+105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255,
+230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222,
+151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151,
+53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167,
+175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151,
+230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223,
+252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143,
+229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250,
+11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164,
+253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116,
+116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124,
+234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254,
+38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211,
+171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158,
+205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153,
+117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254,
+244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189,
+146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79,
+92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27,
+40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246,
+222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163,
+61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113,
+57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98,
+76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216,
+209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101,
+201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39,
+53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116,
+218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142,
+61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117,
+215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113,
+95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30,
+242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146,
+204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222,
+172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103,
+118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160,
+67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231,
+210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9,
+199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141,
+75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132,
+196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143,
+229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127,
+246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73,
+9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92,
+84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234,
+171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175,
+186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95,
+127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255,
+249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102,
+165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236,
+193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243,
+233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6,
+202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254,
+200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123,
+23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21,
+176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224,
+246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59,
+189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97,
+24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88,
+238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234,
+244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159,
+242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79,
+218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178,
+57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249,
+225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243,
+201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229,
+144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151,
+40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215,
+237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182,
+75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190,
+86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231,
+101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174,
+248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214,
+213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11,
+9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163,
+78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117,
+175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115,
+202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199,
+57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217,
+119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111,
+183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28,
+223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178,
+169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23,
+95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128,
+230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87,
+117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188,
+119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248,
+212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223,
+112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23,
+29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36,
+120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25,
+159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241,
+164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175,
+121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246,
+189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126,
+206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135,
+63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106,
+201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128,
+81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245,
+167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245,
+171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196,
+57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226,
+21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217,
+186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183,
+93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225,
+71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94,
+205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238,
+95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35,
+217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210,
+91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143,
+61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67,
+75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204,
+233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249,
+17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215,
+183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89,
+115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191,
+249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229,
+202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59,
+50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37,
+186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171,
+150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184,
+251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247,
+176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253,
+254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112,
+252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226,
+65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120,
+78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239,
+123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77,
+205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117,
+175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208,
+55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19,
+142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154,
+24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71,
+126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164,
+251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4,
+102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64,
+124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4,
+184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210,
+124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194,
+57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187,
+126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178,
+92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124,
+223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186,
+219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163,
+148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174,
+67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119,
+190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75,
+51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224,
+50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238,
+218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82,
+121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27,
+174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235,
+188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45,
+150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249,
+218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27,
+218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185,
+205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167,
+240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254,
+245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102,
+62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181,
+204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174,
+181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68,
+89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60,
+185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205,
+21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100,
+210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222,
+220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180,
+17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253,
+225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254,
+130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41,
+31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35,
+80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109,
+154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178,
+93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159,
+241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144,
+32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239,
+162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222,
+1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26,
+38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245,
+133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70,
+123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35,
+30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200,
+253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32,
+233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155,
+119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179,
+196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223,
+252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88,
+74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142,
+208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94,
+255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177,
+55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124,
+37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78,
+250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226,
+164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240,
+88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196,
+194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195,
+228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138,
+139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245,
+186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44,
+165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27,
+216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63,
+188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153,
+119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185,
+22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229,
+148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33,
+35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120,
+208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42,
+171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124,
+35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189,
+77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3,
+183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158,
+112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122,
+74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0,
+79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106,
+186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236,
+71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83,
+34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201,
+204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154,
+152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131,
+138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63,
+238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94,
+15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135,
+60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244,
+53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239,
+219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90,
+235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124,
+228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24,
+209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72,
+136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191,
+108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179,
+253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229,
+184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167,
+207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230,
+54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175,
+75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207,
+27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151,
+63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134,
+204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64,
+223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95,
+191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226,
+213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185,
+249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244,
+39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92,
+190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127,
+159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226,
+33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183,
+118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65,
+162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25,
+73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226,
+161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203,
+81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26,
+52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187,
+90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149,
+46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146,
+68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203,
+197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49,
+34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203,
+172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14,
+41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108,
+47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249,
+251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168,
+147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73,
+40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161,
+107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123,
+151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127,
+209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29,
+115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125,
+11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182,
+31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198,
+90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213,
+137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103,
+181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181,
+5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39,
+157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161,
+78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107,
+72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152,
+49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157,
+114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223,
+236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119,
+196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205,
+111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253,
+241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183,
+93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251,
+100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198,
+191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81,
+251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183,
+2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146,
+125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165,
+243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62,
+196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51,
+199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133,
+237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91,
+172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153,
+166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80,
+110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93,
+160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179,
+222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247,
+7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190,
+253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192,
+72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143,
+26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215,
+236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67,
+162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171,
+27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12,
+78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147,
+116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253,
+53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241,
+69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17,
+167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159,
+28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254,
+199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186,
+6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61,
+253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235,
+136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136,
+70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162,
+58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103,
+156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246,
+137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181,
+32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161,
+127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197,
+139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104,
+150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202,
+36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185,
+246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118,
+240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253,
+170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223,
+203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89,
+198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168,
+239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62,
+119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244,
+62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141,
+212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253,
+67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124,
+244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94,
+246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187,
+61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142,
+228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241,
+201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242,
+217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176,
+101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220,
+255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190,
+109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204,
+67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5,
+99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168,
+107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137,
+113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254,
+73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78,
+219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50,
+105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90,
+110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172,
+244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144,
+114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234,
+253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229,
+3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217,
+98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127,
+121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23,
+191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6,
+234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191,
+205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212,
+219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49,
+71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159,
+249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89,
+152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100,
+165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253,
+97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206,
+52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224,
+79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119,
+224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103,
+188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242,
+75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246,
+183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38,
+29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190,
+243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191,
+246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106,
+163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26,
+164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223,
+130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173,
+69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237,
+215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178,
+186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112,
+144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233,
+106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190,
+133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201,
+32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166,
+155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119,
+223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242,
+212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35,
+101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43,
+41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100,
+107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173,
+181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239,
+190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74,
+109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45,
+125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111,
+134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7,
+217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110,
+47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187,
+110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105,
+144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169,
+219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231,
+174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124,
+6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53,
+82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96,
+240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38,
+165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245,
+248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30,
+211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44,
+153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55,
+253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95,
+45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26,
+169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238,
+203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6,
+89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65,
+6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65,
+6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32,
+131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131,
+12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0,
+0,0,0,73,69,78,68,174,66,96,130};
+
+int splash_image4_sz = sizeof(splash_image4);
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage05.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage05.c
new file mode 100644
index 0000000000..e29a519a83
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage05.c
@@ -0,0 +1,2167 @@
+const unsigned char splash_image5[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82,
+146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,
+43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7,
+184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206,
+57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88,
+98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68,
+122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32,
+88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214,
+222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152,
+99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12,
+50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108,
+115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218,
+182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104,
+115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124,
+194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180,
+103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36,
+182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149,
+110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201,
+37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57,
+21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126,
+175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141,
+58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108,
+236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44,
+203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85,
+89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149,
+223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88,
+46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157,
+86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165,
+239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201,
+132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89,
+38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109,
+174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53,
+43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9,
+182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164,
+41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90,
+185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226,
+186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223,
+111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155,
+120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5,
+87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7,
+157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150,
+231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164,
+41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42,
+183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251,
+157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75,
+47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76,
+203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184,
+86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229,
+1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153,
+199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198,
+158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212,
+247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182,
+167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157,
+246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182,
+196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215,
+185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29,
+72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152,
+116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152,
+140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73,
+134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76,
+39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233,
+242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174,
+61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75,
+63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253,
+48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175,
+16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172,
+133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197,
+117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216,
+203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249,
+94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237,
+241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64,
+110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34,
+93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53,
+35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185,
+245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191,
+58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186,
+173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157,
+59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222,
+163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115,
+174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66,
+224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4,
+90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222,
+71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231,
+94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233,
+170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182,
+82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148,
+114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175,
+200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101,
+62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168,
+82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3,
+36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137,
+173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45,
+3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12,
+50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,
+200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200,
+84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51,
+196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86,
+195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247,
+122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162,
+139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91,
+88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191,
+85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159,
+105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207,
+53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211,
+142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81,
+94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182,
+41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131,
+236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27,
+109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147,
+5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151,
+140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188,
+137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173,
+166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215,
+1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61,
+246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203,
+97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181,
+0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233,
+194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92,
+69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102,
+207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226,
+124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59,
+245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103,
+88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27,
+249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73,
+180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28,
+166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239,
+180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86,
+129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254,
+190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250,
+45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83,
+116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227,
+231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223,
+178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28,
+166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254,
+58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73,
+149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89,
+231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215,
+195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201,
+211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171,
+42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50,
+215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235,
+201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152,
+6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93,
+178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255,
+111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235,
+141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159,
+233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206,
+199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116,
+137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223,
+92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49,
+25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255,
+143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147,
+209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152,
+76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79,
+207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108,
+123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231,
+99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252,
+242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12,
+245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212,
+109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220,
+181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167,
+44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219,
+61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95,
+46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99,
+73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214,
+231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73,
+101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142,
+46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45,
+24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46,
+60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122,
+142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167,
+147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140,
+227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140,
+109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249,
+157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55,
+231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178,
+184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69,
+50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241,
+107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120,
+94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165,
+190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246,
+90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211,
+242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4,
+186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61,
+200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25,
+100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,
+170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,
+12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,
+144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,
+24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,
+100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100,
+144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98,
+123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205,
+55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28,
+179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252,
+228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186,
+230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215,
+94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226,
+94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119,
+148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75,
+141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69,
+115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1,
+7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233,
+159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255,
+220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204,
+230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37,
+134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75,
+35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47,
+236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188,
+121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0,
+120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249,
+200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183,
+230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185,
+187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210,
+208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243,
+165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135,
+62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85,
+243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158,
+6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47,
+126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205,
+126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130,
+14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4,
+10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199,
+31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108,
+118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96,
+220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196,
+39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45,
+111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30,
+52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200,
+0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94,
+121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249,
+206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243,
+156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176,
+143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232,
+106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223,
+222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239,
+194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231,
+53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0,
+192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233,
+174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231,
+55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121,
+195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125,
+112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19,
+225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158,
+244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92,
+90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110,
+89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70,
+16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234,
+0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199,
+152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127,
+248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239,
+127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48,
+240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242,
+172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187,
+135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214,
+179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99,
+216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143,
+187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242,
+230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7,
+54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64,
+193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70,
+9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182,
+223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223,
+119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156,
+114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93,
+239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2,
+21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38,
+3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192,
+82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135,
+235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206,
+43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8,
+12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184,
+227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221,
+3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244,
+162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199,
+59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73,
+122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113,
+223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100,
+125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120,
+5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103,
+116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205,
+43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68,
+206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80,
+28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47,
+40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241,
+238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87,
+190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251,
+187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88,
+96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119,
+12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39,
+3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237,
+186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215,
+45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74,
+6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88,
+3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204,
+140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15,
+12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112,
+140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167,
+231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54,
+239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24,
+129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9,
+32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128,
+65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49,
+195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178,
+107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76,
+2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93,
+215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192,
+1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105,
+128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2,
+129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175,
+118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226,
+73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80,
+136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137,
+39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138,
+87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61,
+96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121,
+1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184,
+23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249,
+17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20,
+32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144,
+95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34,
+112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66,
+87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215,
+158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192,
+72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18,
+149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222,
+243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210,
+1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181,
+46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104,
+33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160,
+0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242,
+1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250,
+210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113,
+201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114,
+101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189,
+205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195,
+72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163,
+214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217,
+157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51,
+13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166,
+0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3,
+120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184,
+3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58,
+206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215,
+126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115,
+207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114,
+100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217,
+240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117,
+21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187,
+48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185,
+93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3,
+34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202,
+0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199,
+22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70,
+204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234,
+122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154,
+115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205,
+197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241,
+227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8,
+117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123,
+220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70,
+3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206,
+189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27,
+215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45,
+94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97,
+255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116,
+215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19,
+182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158,
+128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118,
+93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72,
+172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231,
+243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212,
+246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5,
+11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235,
+152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54,
+251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15,
+1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109,
+154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183,
+235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186,
+235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184,
+199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204,
+75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225,
+93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159,
+255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130,
+144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241,
+30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97,
+130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104,
+189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111,
+128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215,
+127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6,
+125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9,
+221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178,
+221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69,
+157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102,
+180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225,
+58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60,
+10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10,
+210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133,
+152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16,
+27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84,
+231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162,
+23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215,
+10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101,
+40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139,
+115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144,
+88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93,
+9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66,
+43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234,
+155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60,
+9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26,
+20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115,
+206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7,
+20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136,
+238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3,
+156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73,
+7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55,
+187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119,
+189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72,
+116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146,
+123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66,
+134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99,
+152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123,
+62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0,
+116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199,
+147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48,
+252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61,
+90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241,
+48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246,
+183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231,
+185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132,
+53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57,
+150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88,
+154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183,
+205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187,
+219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195,
+194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113,
+137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160,
+5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196,
+216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100,
+95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207,
+161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174,
+21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241,
+254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105,
+118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184,
+60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214,
+197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52,
+93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64,
+237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188,
+9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173,
+6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88,
+42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114,
+142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146,
+151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143,
+67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49,
+93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181,
+164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9,
+128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4,
+3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41,
+80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73,
+173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153,
+145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113,
+187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114,
+76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204,
+110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214,
+128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221,
+237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208,
+218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70,
+206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4,
+26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224,
+107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63,
+150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132,
+214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30,
+251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217,
+5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181,
+74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113,
+9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8,
+7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116,
+57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93,
+13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6,
+157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129,
+69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254,
+251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141,
+231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27,
+245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177,
+6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153,
+54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245,
+219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114,
+234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17,
+52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97,
+215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23,
+8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192,
+203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139,
+231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53,
+173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36,
+8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87,
+193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203,
+104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180,
+50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32,
+106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192,
+3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78,
+129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117,
+196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214,
+12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28,
+9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211,
+108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4,
+67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96,
+224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238,
+239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47,
+53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251,
+159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124,
+234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101,
+128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102,
+94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109,
+59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16,
+92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198,
+224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147,
+198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6,
+159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175,
+225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130,
+60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0,
+2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124,
+10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65,
+75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107,
+245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56,
+156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215,
+179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106,
+45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198,
+174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67,
+160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98,
+178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160,
+86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10,
+198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98,
+152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0,
+134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185,
+251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202,
+124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7,
+101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101,
+68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204,
+73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184,
+188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83,
+174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202,
+144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176,
+206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37,
+79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129,
+150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7,
+219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0,
+166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242,
+27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104,
+164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31,
+183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136,
+186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131,
+97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235,
+154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129,
+23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220,
+51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187,
+16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193,
+126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164,
+81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155,
+150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73,
+250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129,
+145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4,
+195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9,
+8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56,
+68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37,
+13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115,
+1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32,
+210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36,
+136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241,
+70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90,
+182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84,
+190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234,
+59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24,
+136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40,
+141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7,
+17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234,
+202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149,
+109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210,
+197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101,
+170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223,
+121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138,
+109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38,
+100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180,
+110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14,
+12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12,
+117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192,
+16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45,
+47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252,
+5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86,
+94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227,
+229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45,
+0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13,
+177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148,
+90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174,
+53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145,
+120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116,
+49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192,
+64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95,
+9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120,
+134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29,
+111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186,
+235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249,
+122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2,
+111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17,
+10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161,
+201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2,
+66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193,
+32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233,
+98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244,
+12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129,
+133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179,
+121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153,
+223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117,
+131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150,
+63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114,
+91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7,
+149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1,
+32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17,
+111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207,
+194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218,
+123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103,
+25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12,
+246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186,
+242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94,
+223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103,
+229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143,
+6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101,
+10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230,
+159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245,
+55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34,
+49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30,
+68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171,
+238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210,
+205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45,
+191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212,
+185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237,
+177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127,
+130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180,
+208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86,
+31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16,
+62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127,
+104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129,
+68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76,
+235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49,
+24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172,
+131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234,
+109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98,
+33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241,
+248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121,
+99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188,
+83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48,
+89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129,
+197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10,
+137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110,
+10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2,
+68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110,
+70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111,
+130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246,
+101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46,
+161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93,
+155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181,
+67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116,
+229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36,
+120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132,
+132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226,
+61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26,
+137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176,
+101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17,
+125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101,
+108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79,
+44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129,
+151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222,
+125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241,
+89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246,
+251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242,
+246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18,
+192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120,
+18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64,
+66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141,
+196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35,
+195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107,
+109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186,
+17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145,
+232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1,
+18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219,
+111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242,
+80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202,
+19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232,
+70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31,
+221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197,
+35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150,
+53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36,
+196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54,
+190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240,
+194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148,
+222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173,
+153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41,
+80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155,
+218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233,
+121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33,
+81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4,
+43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219,
+1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222,
+4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196,
+123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247,
+67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200,
+48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221,
+181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196,
+19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130,
+66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163,
+0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125,
+174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45,
+223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45,
+1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104,
+6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160,
+188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131,
+176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33,
+202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151,
+150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122,
+234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184,
+87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164,
+128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217,
+173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90,
+2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12,
+144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48,
+136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173,
+55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251,
+253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10,
+191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143,
+65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50,
+88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21,
+192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217,
+0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185,
+194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140,
+138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242,
+207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129,
+50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144,
+176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30,
+137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186,
+158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91,
+91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22,
+8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207,
+123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171,
+47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101,
+93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74,
+162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235,
+137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224,
+57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10,
+212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135,
+94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2,
+12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128,
+200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29,
+216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153,
+216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236,
+158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219,
+115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2,
+240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216,
+195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173,
+243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222,
+115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73,
+32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71,
+31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192,
+33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12,
+60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13,
+219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225,
+173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1,
+141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245,
+103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56,
+78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4,
+137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11,
+28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164,
+46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56,
+19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96,
+112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173,
+253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91,
+241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1,
+200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44,
+222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89,
+25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144,
+46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131,
+133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230,
+85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157,
+161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64,
+194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103,
+180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139,
+161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179,
+77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29,
+232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163,
+107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216,
+233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188,
+123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57,
+94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165,
+231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15,
+46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26,
+125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7,
+130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1,
+7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232,
+70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198,
+15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20,
+207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29,
+6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249,
+180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103,
+219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184,
+175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3,
+20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112,
+12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158,
+219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36,
+123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220,
+115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35,
+202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163,
+213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232,
+54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171,
+18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75,
+75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33,
+100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237,
+78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59,
+230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185,
+241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18,
+12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113,
+47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15,
+96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251,
+1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86,
+114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23,
+181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29,
+40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7,
+193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150,
+203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227,
+61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215,
+215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222,
+133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147,
+0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177,
+45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96,
+88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12,
+27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82,
+193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90,
+102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186,
+242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66,
+110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111,
+255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248,
+175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119,
+186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13,
+2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184,
+131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219,
+15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25,
+28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250,
+104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22,
+74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194,
+142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86,
+62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211,
+109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117,
+251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13,
+188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103,
+5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182,
+220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248,
+64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189,
+173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243,
+199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153,
+42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109,
+164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80,
+209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158,
+131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219,
+181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119,
+180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65,
+107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154,
+84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155,
+81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94,
+5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2,
+14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178,
+244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231,
+90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48,
+58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196,
+149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0,
+224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47,
+40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110,
+35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65,
+5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64,
+128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224,
+81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240,
+42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24,
+168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16,
+38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64,
+136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254,
+65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28,
+167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162,
+251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189,
+220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50,
+125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211,
+0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47,
+141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142,
+240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32,
+243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158,
+4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208,
+1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108,
+149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97,
+64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10,
+52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67,
+160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0,
+22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160,
+40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32,
+248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86,
+249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4,
+222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230,
+188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46,
+239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114,
+76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103,
+68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9,
+138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74,
+149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50,
+40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221,
+12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173,
+41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4,
+94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96,
+16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132,
+101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47,
+98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220,
+226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91,
+150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247,
+172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251,
+58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5,
+106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134,
+132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85,
+66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242,
+32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144,
+180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197,
+102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30,
+120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174,
+101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19,
+32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73,
+75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99,
+244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107,
+253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77,
+98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113,
+214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99,
+210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202,
+82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23,
+81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184,
+215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241,
+38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81,
+241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22,
+152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112,
+229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84,
+74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0,
+161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142,
+139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119,
+101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52,
+202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203,
+61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252,
+184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191,
+21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233,
+212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94,
+64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132,
+190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72,
+196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121,
+17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75,
+90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5,
+2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173,
+197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75,
+112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194,
+232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42,
+157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97,
+116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156,
+119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147,
+250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221,
+175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117,
+8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243,
+151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174,
+27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23,
+163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105,
+144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251,
+24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193,
+130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48,
+21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24,
+24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116,
+90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20,
+165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96,
+60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72,
+186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191,
+63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81,
+229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254,
+231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254,
+97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142,
+222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226,
+166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9,
+9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0,
+43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68,
+43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26,
+96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90,
+186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89,
+143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8,
+24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199,
+120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197,
+249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160,
+246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164,
+62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52,
+191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238,
+221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172,
+107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96,
+220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132,
+22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128,
+97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17,
+4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164,
+165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93,
+59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242,
+200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128,
+17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122,
+46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223,
+182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52,
+40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246,
+182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222,
+247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47,
+93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255,
+223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86,
+191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21,
+94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76,
+229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29,
+215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95,
+246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37,
+24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168,
+12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111,
+202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1,
+28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89,
+150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121,
+251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191,
+249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142,
+127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42,
+19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39,
+18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246,
+90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226,
+57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171,
+97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74,
+199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71,
+116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251,
+121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40,
+3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179,
+40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111,
+41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123,
+98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107,
+23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173,
+223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26,
+223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71,
+89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134,
+192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130,
+254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254,
+197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150,
+97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245,
+101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241,
+130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0,
+65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103,
+159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162,
+140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27,
+0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128,
+5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183,
+190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18,
+126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128,
+217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239,
+197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96,
+240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60,
+145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247,
+2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82,
+144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128,
+65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24,
+140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49,
+212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77,
+51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199,
+72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224,
+165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16,
+90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134,
+27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227,
+29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49,
+196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141,
+140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4,
+14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144,
+140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81,
+2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96,
+105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75,
+76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169,
+181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130,
+6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4,
+67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169,
+129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2,
+134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91,
+191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72,
+40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202,
+241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10,
+165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51,
+42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224,
+69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107,
+136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192,
+64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46,
+5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11,
+65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94,
+68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140,
+83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119,
+93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118,
+183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247,
+208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26,
+140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0,
+134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5,
+253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136,
+64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3,
+173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116,
+0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190,
+193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114,
+4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34,
+45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166,
+139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137,
+120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65,
+186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173,
+101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51,
+3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80,
+68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178,
+81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120,
+16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28,
+64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60,
+146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42,
+210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156,
+92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21,
+130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80,
+160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149,
+50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166,
+117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175,
+132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70,
+169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214,
+129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128,
+131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106,
+29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221,
+237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165,
+214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16,
+159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239,
+160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245,
+246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114,
+70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47,
+17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66,
+142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1,
+14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5,
+5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32,
+81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90,
+166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46,
+0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180,
+150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135,
+85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37,
+120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233,
+94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160,
+242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210,
+209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96,
+145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109,
+3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160,
+54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91,
+92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20,
+32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49,
+240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33,
+81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142,
+50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115,
+41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220,
+156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3,
+5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160,
+75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230,
+74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40,
+65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3,
+10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40,
+210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99,
+175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226,
+17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4,
+47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54,
+227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213,
+5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118,
+128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77,
+148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70,
+62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54,
+149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235,
+26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98,
+105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193,
+62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32,
+1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50,
+128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102,
+186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75,
+24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77,
+242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151,
+240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123,
+192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51,
+203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28,
+1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74,
+143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34,
+90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230,
+254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36,
+184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193,
+75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64,
+68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159,
+18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17,
+111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71,
+70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105,
+160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117,
+240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178,
+151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34,
+196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164,
+184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150,
+93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222,
+4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34,
+64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152,
+153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84,
+46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140,
+27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40,
+150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163,
+30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3,
+153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60,
+5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112,
+112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172,
+13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208,
+209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236,
+139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68,
+13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212,
+94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49,
+98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225,
+16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186,
+134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94,
+46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24,
+196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217,
+237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62,
+17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23,
+36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228,
+57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61,
+228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36,
+72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98,
+130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138,
+232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17,
+111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64,
+145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178,
+205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109,
+121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86,
+227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49,
+34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144,
+40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232,
+155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83,
+235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29,
+235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102,
+246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151,
+16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229,
+48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187,
+29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164,
+131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128,
+4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143,
+135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240,
+210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9,
+200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208,
+242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25,
+27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60,
+90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132,
+60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103,
+145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176,
+14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143,
+229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235,
+133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97,
+20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27,
+178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177,
+169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147,
+40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6,
+20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112,
+176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6,
+129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171,
+102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72,
+240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200,
+155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242,
+178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101,
+224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49,
+173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80,
+0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126,
+144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176,
+128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104,
+197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56,
+103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215,
+254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250,
+130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174,
+68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74,
+80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16,
+19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24,
+0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229,
+193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216,
+216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192,
+37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80,
+112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89,
+247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115,
+151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142,
+190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209,
+73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194,
+160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227,
+224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92,
+195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187,
+150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16,
+242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7,
+20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144,
+48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67,
+100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15,
+20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188,
+11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168,
+31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251,
+181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232,
+190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240,
+8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190,
+0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202,
+239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195,
+112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235,
+101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248,
+4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226,
+241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16,
+225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52,
+117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143,
+64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28,
+90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208,
+200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172,
+108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84,
+68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18,
+18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248,
+4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51,
+26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108,
+235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183,
+2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64,
+170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112,
+83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1,
+67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91,
+154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14,
+94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176,
+157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194,
+58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167,
+188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186,
+35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203,
+33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37,
+239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204,
+43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15,
+14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225,
+108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75,
+149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1,
+18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160,
+182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112,
+62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22,
+235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13,
+131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238,
+35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12,
+222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114,
+93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17,
+72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181,
+181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89,
+123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33,
+90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30,
+128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48,
+116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48,
+62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103,
+56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131,
+37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33,
+195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202,
+200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151,
+170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190,
+68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126,
+45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149,
+96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144,
+1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177,
+11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23,
+98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120,
+101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91,
+2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108,
+149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168,
+1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162,
+246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16,
+103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15,
+3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7,
+80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237,
+179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199,
+203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24,
+168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245,
+251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138,
+100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12,
+34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7,
+9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237,
+183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142,
+51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96,
+66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134,
+29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200,
+241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233,
+130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53,
+36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167,
+18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169,
+37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12,
+223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225,
+39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1,
+97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134,
+94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169,
+242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110,
+89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161,
+60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150,
+140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157,
+48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24,
+136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34,
+202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227,
+45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220,
+95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126,
+91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240,
+98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47,
+33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138,
+192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110,
+189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42,
+157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141,
+26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208,
+151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195,
+0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94,
+133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158,
+93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46,
+7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121,
+210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6,
+20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250,
+122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148,
+87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191,
+255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205,
+192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69,
+208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65,
+194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69,
+186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181,
+209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121,
+202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89,
+217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1,
+47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38,
+162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28,
+183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208,
+160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224,
+74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65,
+48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247,
+252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144,
+128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23,
+35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81,
+238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216,
+47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24,
+85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127,
+26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229,
+115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131,
+68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164,
+178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210,
+245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5,
+6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10,
+6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97,
+244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126,
+75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81,
+226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153,
+84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157,
+185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52,
+72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250,
+96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65,
+140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203,
+91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192,
+238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147,
+170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6,
+131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37,
+48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2,
+138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236,
+104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150,
+111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255,
+245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203,
+68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86,
+13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145,
+49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18,
+53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102,
+127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178,
+175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229,
+117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47,
+255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120,
+70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191,
+111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102,
+238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128,
+162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40,
+181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22,
+53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120,
+133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52,
+127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59,
+54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25,
+250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19,
+9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165,
+217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197,
+36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34,
+176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98,
+252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0,
+248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29,
+12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115,
+159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120,
+179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230,
+33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19,
+151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82,
+160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62,
+9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232,
+3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26,
+249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155,
+223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14,
+10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156,
+12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214,
+188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195,
+170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88,
+80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134,
+4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45,
+75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0,
+34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119,
+126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221,
+41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30,
+92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195,
+212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239,
+5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145,
+150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56,
+84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129,
+132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131,
+5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196,
+53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127,
+253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150,
+188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176,
+179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24,
+121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140,
+120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143,
+73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86,
+134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26,
+32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88,
+103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20,
+246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91,
+119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188,
+132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121,
+77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185,
+22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167,
+223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181,
+144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18,
+222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1,
+162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108,
+7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236,
+186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105,
+126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31,
+100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25,
+166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75,
+119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208,
+189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182,
+106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94,
+246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168,
+1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210,
+155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0,
+0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207,
+225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221,
+6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60,
+5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77,
+67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12,
+158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229,
+11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222,
+69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180,
+224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15,
+65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143,
+128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20,
+248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195,
+167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37,
+24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108,
+213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241,
+53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122,
+127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93,
+135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225,
+78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1,
+2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0,
+65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238,
+9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152,
+239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96,
+232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46,
+33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182,
+37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181,
+30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104,
+89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242,
+16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25,
+204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32,
+142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131,
+46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48,
+100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18,
+132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165,
+228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165,
+79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32,
+30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45,
+62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188,
+2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4,
+22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18,
+8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121,
+8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17,
+37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141,
+44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136,
+81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150,
+158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1,
+6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40,
+39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240,
+16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24,
+2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250,
+247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20,
+196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158,
+108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27,
+186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165,
+218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101,
+167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111,
+3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12,
+61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46,
+67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33,
+40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161,
+134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87,
+65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199,
+123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199,
+184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6,
+112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8,
+70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50,
+134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67,
+48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59,
+136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171,
+143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190,
+4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20,
+39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114,
+253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208,
+35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221,
+6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197,
+210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8,
+1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145,
+3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184,
+251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61,
+154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46,
+242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164,
+219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83,
+226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177,
+236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203,
+40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18,
+84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32,
+196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50,
+252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98,
+217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114,
+148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91,
+54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128,
+90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201,
+73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67,
+48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209,
+4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228,
+187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66,
+38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212,
+65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12,
+208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5,
+48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31,
+16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128,
+96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116,
+23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114,
+223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127,
+38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0,
+131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196,
+17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30,
+66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204,
+69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16,
+74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97,
+105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223,
+89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121,
+243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33,
+67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94,
+66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110,
+190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69,
+22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228,
+40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129,
+197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61,
+132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229,
+49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151,
+206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237,
+253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59,
+0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36,
+150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27,
+168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115,
+225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133,
+60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134,
+29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35,
+88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236,
+25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227,
+100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242,
+166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96,
+144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203,
+138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234,
+254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61,
+8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12,
+37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202,
+23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6,
+89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147,
+56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185,
+190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144,
+245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159,
+249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226,
+87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232,
+91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59,
+223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12,
+178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62,
+241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210,
+72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253,
+145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114,
+255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82,
+52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107,
+127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142,
+126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124,
+89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34,
+179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58,
+64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81,
+213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55,
+253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39,
+141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39,
+105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234,
+237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251,
+178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46,
+58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234,
+197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207,
+23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23,
+13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125,
+199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164,
+108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63,
+249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28,
+242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63,
+251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174,
+101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50,
+77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88,
+176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135,
+31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62,
+188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227,
+145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35,
+245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244,
+138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107,
+115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71,
+252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121,
+118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145,
+89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26,
+169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63,
+63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249,
+230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219,
+77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116,
+49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241,
+108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242,
+93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238,
+119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54,
+52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89,
+174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127,
+169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195,
+31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241,
+181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125,
+194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42,
+231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146,
+178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231,
+130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162,
+31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70,
+178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252,
+193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47,
+109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113,
+12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44,
+251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92,
+124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166,
+169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167,
+105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255,
+230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222,
+151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151,
+53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167,
+175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151,
+230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223,
+252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143,
+229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250,
+11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164,
+253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116,
+116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124,
+234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254,
+38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211,
+171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158,
+205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153,
+117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254,
+244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189,
+146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79,
+92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27,
+40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246,
+222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163,
+61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113,
+57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98,
+76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216,
+209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101,
+201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39,
+53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116,
+218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142,
+61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117,
+215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113,
+95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30,
+242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146,
+204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222,
+172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103,
+118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160,
+67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231,
+210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9,
+199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141,
+75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132,
+196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143,
+229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127,
+246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73,
+9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92,
+84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234,
+171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175,
+186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95,
+127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255,
+249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102,
+165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236,
+193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243,
+233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6,
+202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254,
+200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123,
+23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21,
+176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224,
+246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59,
+189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97,
+24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88,
+238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234,
+244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159,
+242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79,
+218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178,
+57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249,
+225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243,
+201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229,
+144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151,
+40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215,
+237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182,
+75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190,
+86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231,
+101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174,
+248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214,
+213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11,
+9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163,
+78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117,
+175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115,
+202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199,
+57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217,
+119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111,
+183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28,
+223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178,
+169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23,
+95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128,
+230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87,
+117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188,
+119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248,
+212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223,
+112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23,
+29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36,
+120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25,
+159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241,
+164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175,
+121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246,
+189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126,
+206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135,
+63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106,
+201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128,
+81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245,
+167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245,
+171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196,
+57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226,
+21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217,
+186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183,
+93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225,
+71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94,
+205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238,
+95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35,
+217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210,
+91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143,
+61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67,
+75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204,
+233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249,
+17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215,
+183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89,
+115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191,
+249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229,
+202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59,
+50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37,
+186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171,
+150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184,
+251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247,
+176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253,
+254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112,
+252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226,
+65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120,
+78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239,
+123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77,
+205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117,
+175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208,
+55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19,
+142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154,
+24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71,
+126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164,
+251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4,
+102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64,
+124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4,
+184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210,
+124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194,
+57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187,
+126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178,
+92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124,
+223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186,
+219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163,
+148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174,
+67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119,
+190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75,
+51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224,
+50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238,
+218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82,
+121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27,
+174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235,
+188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45,
+150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249,
+218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27,
+218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185,
+205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167,
+240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254,
+245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102,
+62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181,
+204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174,
+181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68,
+89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60,
+185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205,
+21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100,
+210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222,
+220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180,
+17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253,
+225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254,
+130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41,
+31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35,
+80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109,
+154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178,
+93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159,
+241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144,
+32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239,
+162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222,
+1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26,
+38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245,
+133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70,
+123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35,
+30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200,
+253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32,
+233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155,
+119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179,
+196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223,
+252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88,
+74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142,
+208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94,
+255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177,
+55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124,
+37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78,
+250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226,
+164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240,
+88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196,
+194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195,
+228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138,
+139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245,
+186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44,
+165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27,
+216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63,
+188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153,
+119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185,
+22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229,
+148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33,
+35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120,
+208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42,
+171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124,
+35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189,
+77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3,
+183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158,
+112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122,
+74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0,
+79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106,
+186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236,
+71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83,
+34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201,
+204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154,
+152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131,
+138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63,
+238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94,
+15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135,
+60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244,
+53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239,
+219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90,
+235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124,
+228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24,
+209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72,
+136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191,
+108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179,
+253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229,
+184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167,
+207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230,
+54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175,
+75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207,
+27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151,
+63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134,
+204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64,
+223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95,
+191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226,
+213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185,
+249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244,
+39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92,
+190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127,
+159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226,
+33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183,
+118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65,
+162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25,
+73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226,
+161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203,
+81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26,
+52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187,
+90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149,
+46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146,
+68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203,
+197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49,
+34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203,
+172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14,
+41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108,
+47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249,
+251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168,
+147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73,
+40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161,
+107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123,
+151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127,
+209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29,
+115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125,
+11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182,
+31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198,
+90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213,
+137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103,
+181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181,
+5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39,
+157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161,
+78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107,
+72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152,
+49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157,
+114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223,
+236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119,
+196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205,
+111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253,
+241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183,
+93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251,
+100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198,
+191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81,
+251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183,
+2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146,
+125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165,
+243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62,
+196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51,
+199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133,
+237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91,
+172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153,
+166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80,
+110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93,
+160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179,
+222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247,
+7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190,
+253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192,
+72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143,
+26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215,
+236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67,
+162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171,
+27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12,
+78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147,
+116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253,
+53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241,
+69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17,
+167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159,
+28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254,
+199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186,
+6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61,
+253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235,
+136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136,
+70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162,
+58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103,
+156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246,
+137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181,
+32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161,
+127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197,
+139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104,
+150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202,
+36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185,
+246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118,
+240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253,
+170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223,
+203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89,
+198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168,
+239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62,
+119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244,
+62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141,
+212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253,
+67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124,
+244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94,
+246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187,
+61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142,
+228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241,
+201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242,
+217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176,
+101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220,
+255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190,
+109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204,
+67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5,
+99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168,
+107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137,
+113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254,
+73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78,
+219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50,
+105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90,
+110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172,
+244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144,
+114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234,
+253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229,
+3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217,
+98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127,
+121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23,
+191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6,
+234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191,
+205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212,
+219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49,
+71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159,
+249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89,
+152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100,
+165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253,
+97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206,
+52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224,
+79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119,
+224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103,
+188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242,
+75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246,
+183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38,
+29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190,
+243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191,
+246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106,
+163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26,
+164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223,
+130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173,
+69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237,
+215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178,
+186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112,
+144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233,
+106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190,
+133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201,
+32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166,
+155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119,
+223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242,
+212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35,
+101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43,
+41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100,
+107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173,
+181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239,
+190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74,
+109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45,
+125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111,
+134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7,
+217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110,
+47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187,
+110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105,
+144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169,
+219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231,
+174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124,
+6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53,
+82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96,
+240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38,
+165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245,
+248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30,
+211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44,
+153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55,
+253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95,
+45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26,
+169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238,
+203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6,
+89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65,
+6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65,
+6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32,
+131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131,
+12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0,
+0,0,0,73,69,78,68,174,66,96,130};
+
+int splash_image5_sz = sizeof(splash_image5);
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage06.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage06.c
new file mode 100644
index 0000000000..15ad5450da
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage06.c
@@ -0,0 +1,2167 @@
+const unsigned char splash_image6[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82,
+146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,
+43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7,
+184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206,
+57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88,
+98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68,
+122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32,
+88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214,
+222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152,
+99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12,
+50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108,
+115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218,
+182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104,
+115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124,
+194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180,
+103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36,
+182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149,
+110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201,
+37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57,
+21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126,
+175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141,
+58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108,
+236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44,
+203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85,
+89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149,
+223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88,
+46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157,
+86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165,
+239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201,
+132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89,
+38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109,
+174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53,
+43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9,
+182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164,
+41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90,
+185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226,
+186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223,
+111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155,
+120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5,
+87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7,
+157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150,
+231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164,
+41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42,
+183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251,
+157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75,
+47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76,
+203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184,
+86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229,
+1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153,
+199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198,
+158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212,
+247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182,
+167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157,
+246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182,
+196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215,
+185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29,
+72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152,
+116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152,
+140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73,
+134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76,
+39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233,
+242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174,
+61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75,
+63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253,
+48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175,
+16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172,
+133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197,
+117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216,
+203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249,
+94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237,
+241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64,
+110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34,
+93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53,
+35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185,
+245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191,
+58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186,
+173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157,
+59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222,
+163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115,
+174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66,
+224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4,
+90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222,
+71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231,
+94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233,
+170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182,
+82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148,
+114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175,
+200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101,
+62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168,
+82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3,
+36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137,
+173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45,
+3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12,
+50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,
+200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200,
+84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51,
+196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86,
+195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247,
+122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162,
+139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91,
+88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191,
+85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159,
+105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207,
+53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211,
+142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81,
+94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182,
+41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131,
+236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27,
+109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147,
+5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151,
+140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188,
+137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173,
+166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215,
+1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61,
+246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203,
+97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181,
+0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233,
+194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92,
+69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102,
+207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226,
+124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59,
+245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103,
+88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27,
+249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73,
+180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28,
+166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239,
+180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86,
+129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254,
+190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250,
+45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83,
+116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227,
+231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223,
+178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28,
+166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254,
+58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73,
+149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89,
+231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215,
+195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201,
+211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171,
+42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50,
+215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235,
+201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152,
+6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93,
+178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255,
+111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235,
+141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159,
+233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206,
+199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116,
+137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223,
+92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49,
+25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255,
+143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147,
+209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152,
+76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79,
+207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108,
+123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231,
+99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252,
+242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12,
+245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212,
+109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220,
+181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167,
+44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219,
+61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95,
+46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99,
+73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214,
+231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73,
+101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142,
+46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45,
+24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46,
+60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122,
+142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167,
+147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140,
+227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140,
+109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249,
+157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55,
+231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178,
+184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69,
+50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241,
+107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120,
+94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165,
+190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246,
+90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211,
+242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4,
+186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61,
+200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25,
+100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,
+170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,
+12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,
+144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,
+24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,
+100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100,
+144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98,
+123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205,
+55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28,
+179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252,
+228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186,
+230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215,
+94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226,
+94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119,
+148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75,
+141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69,
+115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1,
+7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233,
+159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255,
+220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204,
+230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37,
+134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75,
+35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47,
+236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188,
+121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0,
+120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249,
+200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183,
+230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185,
+187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210,
+208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243,
+165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135,
+62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85,
+243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158,
+6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47,
+126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205,
+126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130,
+14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4,
+10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199,
+31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108,
+118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96,
+220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196,
+39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45,
+111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30,
+52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200,
+0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94,
+121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249,
+206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243,
+156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176,
+143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232,
+106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223,
+222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239,
+194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231,
+53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0,
+192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233,
+174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231,
+55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121,
+195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125,
+112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19,
+225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158,
+244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92,
+90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110,
+89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70,
+16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234,
+0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199,
+152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127,
+248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239,
+127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48,
+240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242,
+172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187,
+135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214,
+179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99,
+216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143,
+187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242,
+230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7,
+54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64,
+193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70,
+9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182,
+223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223,
+119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156,
+114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93,
+239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2,
+21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38,
+3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192,
+82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135,
+235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206,
+43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8,
+12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184,
+227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221,
+3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244,
+162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199,
+59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73,
+122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113,
+223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100,
+125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120,
+5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103,
+116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205,
+43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68,
+206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80,
+28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47,
+40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241,
+238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87,
+190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251,
+187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88,
+96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119,
+12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39,
+3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237,
+186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215,
+45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74,
+6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88,
+3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204,
+140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15,
+12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112,
+140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167,
+231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54,
+239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24,
+129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9,
+32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128,
+65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49,
+195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178,
+107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76,
+2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93,
+215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192,
+1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105,
+128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2,
+129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175,
+118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226,
+73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80,
+136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137,
+39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138,
+87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61,
+96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121,
+1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184,
+23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249,
+17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20,
+32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144,
+95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34,
+112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66,
+87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215,
+158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192,
+72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18,
+149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222,
+243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210,
+1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181,
+46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104,
+33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160,
+0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242,
+1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250,
+210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113,
+201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114,
+101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189,
+205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195,
+72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163,
+214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217,
+157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51,
+13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166,
+0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3,
+120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184,
+3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58,
+206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215,
+126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115,
+207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114,
+100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217,
+240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117,
+21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187,
+48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185,
+93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3,
+34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202,
+0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199,
+22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70,
+204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234,
+122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154,
+115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205,
+197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241,
+227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8,
+117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123,
+220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70,
+3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206,
+189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27,
+215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45,
+94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97,
+255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116,
+215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19,
+182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158,
+128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118,
+93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72,
+172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231,
+243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212,
+246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5,
+11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235,
+152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54,
+251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15,
+1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109,
+154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183,
+235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186,
+235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184,
+199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204,
+75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225,
+93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159,
+255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130,
+144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241,
+30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97,
+130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104,
+189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111,
+128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215,
+127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6,
+125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9,
+221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178,
+221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69,
+157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102,
+180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225,
+58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60,
+10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10,
+210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133,
+152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16,
+27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84,
+231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162,
+23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215,
+10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101,
+40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139,
+115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144,
+88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93,
+9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66,
+43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234,
+155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60,
+9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26,
+20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115,
+206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7,
+20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136,
+238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3,
+156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73,
+7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55,
+187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119,
+189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72,
+116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146,
+123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66,
+134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99,
+152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123,
+62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0,
+116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199,
+147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48,
+252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61,
+90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241,
+48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246,
+183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231,
+185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132,
+53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57,
+150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88,
+154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183,
+205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187,
+219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195,
+194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113,
+137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160,
+5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196,
+216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100,
+95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207,
+161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174,
+21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241,
+254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105,
+118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184,
+60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214,
+197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52,
+93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64,
+237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188,
+9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173,
+6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88,
+42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114,
+142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146,
+151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143,
+67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49,
+93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181,
+164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9,
+128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4,
+3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41,
+80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73,
+173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153,
+145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113,
+187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114,
+76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204,
+110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214,
+128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221,
+237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208,
+218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70,
+206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4,
+26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224,
+107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63,
+150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132,
+214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30,
+251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217,
+5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181,
+74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113,
+9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8,
+7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116,
+57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93,
+13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6,
+157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129,
+69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254,
+251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141,
+231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27,
+245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177,
+6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153,
+54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245,
+219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114,
+234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17,
+52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97,
+215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23,
+8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192,
+203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139,
+231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53,
+173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36,
+8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87,
+193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203,
+104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180,
+50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32,
+106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192,
+3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78,
+129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117,
+196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214,
+12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28,
+9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211,
+108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4,
+67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96,
+224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238,
+239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47,
+53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251,
+159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124,
+234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101,
+128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102,
+94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109,
+59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16,
+92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198,
+224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147,
+198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6,
+159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175,
+225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130,
+60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0,
+2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124,
+10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65,
+75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107,
+245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56,
+156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215,
+179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106,
+45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198,
+174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67,
+160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98,
+178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160,
+86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10,
+198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98,
+152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0,
+134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185,
+251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202,
+124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7,
+101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101,
+68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204,
+73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184,
+188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83,
+174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202,
+144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176,
+206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37,
+79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129,
+150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7,
+219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0,
+166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242,
+27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104,
+164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31,
+183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136,
+186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131,
+97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235,
+154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129,
+23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220,
+51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187,
+16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193,
+126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164,
+81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155,
+150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73,
+250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129,
+145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4,
+195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9,
+8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56,
+68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37,
+13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115,
+1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32,
+210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36,
+136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241,
+70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90,
+182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84,
+190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234,
+59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24,
+136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40,
+141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7,
+17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234,
+202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149,
+109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210,
+197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101,
+170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223,
+121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138,
+109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38,
+100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180,
+110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14,
+12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12,
+117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192,
+16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45,
+47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252,
+5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86,
+94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227,
+229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45,
+0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13,
+177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148,
+90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174,
+53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145,
+120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116,
+49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192,
+64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95,
+9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120,
+134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29,
+111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186,
+235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249,
+122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2,
+111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17,
+10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161,
+201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2,
+66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193,
+32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233,
+98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244,
+12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129,
+133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179,
+121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153,
+223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117,
+131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150,
+63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114,
+91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7,
+149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1,
+32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17,
+111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207,
+194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218,
+123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103,
+25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12,
+246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186,
+242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94,
+223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103,
+229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143,
+6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101,
+10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230,
+159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245,
+55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34,
+49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30,
+68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171,
+238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210,
+205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45,
+191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212,
+185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237,
+177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127,
+130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180,
+208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86,
+31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16,
+62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127,
+104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129,
+68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76,
+235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49,
+24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172,
+131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234,
+109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98,
+33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241,
+248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121,
+99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188,
+83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48,
+89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129,
+197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10,
+137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110,
+10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2,
+68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110,
+70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111,
+130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246,
+101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46,
+161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93,
+155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181,
+67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116,
+229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36,
+120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132,
+132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226,
+61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26,
+137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176,
+101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17,
+125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101,
+108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79,
+44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129,
+151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222,
+125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241,
+89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246,
+251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242,
+246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18,
+192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120,
+18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64,
+66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141,
+196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35,
+195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107,
+109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186,
+17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145,
+232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1,
+18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219,
+111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242,
+80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202,
+19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232,
+70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31,
+221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197,
+35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150,
+53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36,
+196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54,
+190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240,
+194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148,
+222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173,
+153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41,
+80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155,
+218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233,
+121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33,
+81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4,
+43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219,
+1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222,
+4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196,
+123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247,
+67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200,
+48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221,
+181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196,
+19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130,
+66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163,
+0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125,
+174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45,
+223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45,
+1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104,
+6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160,
+188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131,
+176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33,
+202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151,
+150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122,
+234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184,
+87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164,
+128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217,
+173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90,
+2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12,
+144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48,
+136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173,
+55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251,
+253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10,
+191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143,
+65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50,
+88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21,
+192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217,
+0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185,
+194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140,
+138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242,
+207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129,
+50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144,
+176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30,
+137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186,
+158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91,
+91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22,
+8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207,
+123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171,
+47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101,
+93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74,
+162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235,
+137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224,
+57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10,
+212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135,
+94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2,
+12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128,
+200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29,
+216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153,
+216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236,
+158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219,
+115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2,
+240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216,
+195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173,
+243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222,
+115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73,
+32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71,
+31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192,
+33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12,
+60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13,
+219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225,
+173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1,
+141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245,
+103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56,
+78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4,
+137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11,
+28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164,
+46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56,
+19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96,
+112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173,
+253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91,
+241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1,
+200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44,
+222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89,
+25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144,
+46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131,
+133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230,
+85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157,
+161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64,
+194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103,
+180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139,
+161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179,
+77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29,
+232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163,
+107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216,
+233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188,
+123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57,
+94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165,
+231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15,
+46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26,
+125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7,
+130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1,
+7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232,
+70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198,
+15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20,
+207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29,
+6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249,
+180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103,
+219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184,
+175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3,
+20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112,
+12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158,
+219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36,
+123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220,
+115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35,
+202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163,
+213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232,
+54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171,
+18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75,
+75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33,
+100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237,
+78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59,
+230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185,
+241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18,
+12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113,
+47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15,
+96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251,
+1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86,
+114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23,
+181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29,
+40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7,
+193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150,
+203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227,
+61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215,
+215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222,
+133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147,
+0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177,
+45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96,
+88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12,
+27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82,
+193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90,
+102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186,
+242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66,
+110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111,
+255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248,
+175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119,
+186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13,
+2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184,
+131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219,
+15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25,
+28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250,
+104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22,
+74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194,
+142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86,
+62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211,
+109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117,
+251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13,
+188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103,
+5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182,
+220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248,
+64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189,
+173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243,
+199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153,
+42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109,
+164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80,
+209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158,
+131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219,
+181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119,
+180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65,
+107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154,
+84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155,
+81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94,
+5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2,
+14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178,
+244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231,
+90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48,
+58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196,
+149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0,
+224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47,
+40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110,
+35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65,
+5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64,
+128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224,
+81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240,
+42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24,
+168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16,
+38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64,
+136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254,
+65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28,
+167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162,
+251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189,
+220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50,
+125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211,
+0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47,
+141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142,
+240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32,
+243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158,
+4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208,
+1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108,
+149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97,
+64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10,
+52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67,
+160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0,
+22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160,
+40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32,
+248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86,
+249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4,
+222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230,
+188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46,
+239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114,
+76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103,
+68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9,
+138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74,
+149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50,
+40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221,
+12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173,
+41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4,
+94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96,
+16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132,
+101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47,
+98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220,
+226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91,
+150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247,
+172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251,
+58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5,
+106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134,
+132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85,
+66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242,
+32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144,
+180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197,
+102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30,
+120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174,
+101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19,
+32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73,
+75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99,
+244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107,
+253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77,
+98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113,
+214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99,
+210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202,
+82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23,
+81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184,
+215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241,
+38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81,
+241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22,
+152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112,
+229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84,
+74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0,
+161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142,
+139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119,
+101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52,
+202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203,
+61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252,
+184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191,
+21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233,
+212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94,
+64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132,
+190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72,
+196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121,
+17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75,
+90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5,
+2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173,
+197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75,
+112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194,
+232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42,
+157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97,
+116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156,
+119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147,
+250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221,
+175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117,
+8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243,
+151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174,
+27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23,
+163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105,
+144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251,
+24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193,
+130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48,
+21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24,
+24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116,
+90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20,
+165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96,
+60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72,
+186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191,
+63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81,
+229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254,
+231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254,
+97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142,
+222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226,
+166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9,
+9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0,
+43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68,
+43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26,
+96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90,
+186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89,
+143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8,
+24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199,
+120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197,
+249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160,
+246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164,
+62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52,
+191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238,
+221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172,
+107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96,
+220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132,
+22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128,
+97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17,
+4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164,
+165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93,
+59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242,
+200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128,
+17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122,
+46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223,
+182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52,
+40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246,
+182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222,
+247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47,
+93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255,
+223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86,
+191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21,
+94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76,
+229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29,
+215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95,
+246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37,
+24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168,
+12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111,
+202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1,
+28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89,
+150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121,
+251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191,
+249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142,
+127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42,
+19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39,
+18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246,
+90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226,
+57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171,
+97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74,
+199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71,
+116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251,
+121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40,
+3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179,
+40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111,
+41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123,
+98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107,
+23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173,
+223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26,
+223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71,
+89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134,
+192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130,
+254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254,
+197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150,
+97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245,
+101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241,
+130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0,
+65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103,
+159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162,
+140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27,
+0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128,
+5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183,
+190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18,
+126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128,
+217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239,
+197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96,
+240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60,
+145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247,
+2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82,
+144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128,
+65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24,
+140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49,
+212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77,
+51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199,
+72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224,
+165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16,
+90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134,
+27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227,
+29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49,
+196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141,
+140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4,
+14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144,
+140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81,
+2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96,
+105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75,
+76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169,
+181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130,
+6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4,
+67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169,
+129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2,
+134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91,
+191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72,
+40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202,
+241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10,
+165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51,
+42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224,
+69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107,
+136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192,
+64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46,
+5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11,
+65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94,
+68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140,
+83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119,
+93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118,
+183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247,
+208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26,
+140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0,
+134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5,
+253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136,
+64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3,
+173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116,
+0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190,
+193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114,
+4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34,
+45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166,
+139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137,
+120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65,
+186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173,
+101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51,
+3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80,
+68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178,
+81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120,
+16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28,
+64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60,
+146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42,
+210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156,
+92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21,
+130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80,
+160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149,
+50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166,
+117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175,
+132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70,
+169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214,
+129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128,
+131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106,
+29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221,
+237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165,
+214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16,
+159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239,
+160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245,
+246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114,
+70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47,
+17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66,
+142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1,
+14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5,
+5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32,
+81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90,
+166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46,
+0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180,
+150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135,
+85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37,
+120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233,
+94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160,
+242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210,
+209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96,
+145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109,
+3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160,
+54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91,
+92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20,
+32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49,
+240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33,
+81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142,
+50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115,
+41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220,
+156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3,
+5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160,
+75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230,
+74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40,
+65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3,
+10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40,
+210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99,
+175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226,
+17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4,
+47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54,
+227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213,
+5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118,
+128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77,
+148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70,
+62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54,
+149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235,
+26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98,
+105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193,
+62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32,
+1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50,
+128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102,
+186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75,
+24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77,
+242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151,
+240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123,
+192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51,
+203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28,
+1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74,
+143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34,
+90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230,
+254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36,
+184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193,
+75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64,
+68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159,
+18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17,
+111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71,
+70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105,
+160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117,
+240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178,
+151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34,
+196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164,
+184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150,
+93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222,
+4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34,
+64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152,
+153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84,
+46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140,
+27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40,
+150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163,
+30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3,
+153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60,
+5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112,
+112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172,
+13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208,
+209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236,
+139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68,
+13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212,
+94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49,
+98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225,
+16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186,
+134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94,
+46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24,
+196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217,
+237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62,
+17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23,
+36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228,
+57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61,
+228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36,
+72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98,
+130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138,
+232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17,
+111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64,
+145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178,
+205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109,
+121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86,
+227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49,
+34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144,
+40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232,
+155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83,
+235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29,
+235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102,
+246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151,
+16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229,
+48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187,
+29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164,
+131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128,
+4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143,
+135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240,
+210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9,
+200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208,
+242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25,
+27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60,
+90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132,
+60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103,
+145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176,
+14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143,
+229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235,
+133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97,
+20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27,
+178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177,
+169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147,
+40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6,
+20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112,
+176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6,
+129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171,
+102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72,
+240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200,
+155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242,
+178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101,
+224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49,
+173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80,
+0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126,
+144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176,
+128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104,
+197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56,
+103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215,
+254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250,
+130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174,
+68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74,
+80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16,
+19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24,
+0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229,
+193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216,
+216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192,
+37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80,
+112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89,
+247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115,
+151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142,
+190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209,
+73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194,
+160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227,
+224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92,
+195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187,
+150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16,
+242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7,
+20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144,
+48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67,
+100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15,
+20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188,
+11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168,
+31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251,
+181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232,
+190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240,
+8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190,
+0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202,
+239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195,
+112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235,
+101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248,
+4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226,
+241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16,
+225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52,
+117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143,
+64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28,
+90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208,
+200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172,
+108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84,
+68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18,
+18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248,
+4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51,
+26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108,
+235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183,
+2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64,
+170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112,
+83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1,
+67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91,
+154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14,
+94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176,
+157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194,
+58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167,
+188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186,
+35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203,
+33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37,
+239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204,
+43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15,
+14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225,
+108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75,
+149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1,
+18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160,
+182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112,
+62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22,
+235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13,
+131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238,
+35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12,
+222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114,
+93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17,
+72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181,
+181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89,
+123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33,
+90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30,
+128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48,
+116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48,
+62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103,
+56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131,
+37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33,
+195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202,
+200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151,
+170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190,
+68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126,
+45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149,
+96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144,
+1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177,
+11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23,
+98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120,
+101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91,
+2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108,
+149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168,
+1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162,
+246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16,
+103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15,
+3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7,
+80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237,
+179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199,
+203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24,
+168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245,
+251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138,
+100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12,
+34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7,
+9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237,
+183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142,
+51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96,
+66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134,
+29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200,
+241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233,
+130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53,
+36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167,
+18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169,
+37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12,
+223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225,
+39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1,
+97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134,
+94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169,
+242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110,
+89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161,
+60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150,
+140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157,
+48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24,
+136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34,
+202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227,
+45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220,
+95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126,
+91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240,
+98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47,
+33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138,
+192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110,
+189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42,
+157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141,
+26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208,
+151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195,
+0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94,
+133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158,
+93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46,
+7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121,
+210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6,
+20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250,
+122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148,
+87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191,
+255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205,
+192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69,
+208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65,
+194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69,
+186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181,
+209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121,
+202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89,
+217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1,
+47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38,
+162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28,
+183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208,
+160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224,
+74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65,
+48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247,
+252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144,
+128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23,
+35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81,
+238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216,
+47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24,
+85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127,
+26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229,
+115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131,
+68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164,
+178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210,
+245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5,
+6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10,
+6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97,
+244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126,
+75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81,
+226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153,
+84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157,
+185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52,
+72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250,
+96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65,
+140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203,
+91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192,
+238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147,
+170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6,
+131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37,
+48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2,
+138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236,
+104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150,
+111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255,
+245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203,
+68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86,
+13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145,
+49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18,
+53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102,
+127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178,
+175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229,
+117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47,
+255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120,
+70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191,
+111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102,
+238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128,
+162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40,
+181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22,
+53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120,
+133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52,
+127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59,
+54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25,
+250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19,
+9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165,
+217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197,
+36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34,
+176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98,
+252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0,
+248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29,
+12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115,
+159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120,
+179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230,
+33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19,
+151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82,
+160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62,
+9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232,
+3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26,
+249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155,
+223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14,
+10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156,
+12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214,
+188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195,
+170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88,
+80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134,
+4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45,
+75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0,
+34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119,
+126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221,
+41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30,
+92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195,
+212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239,
+5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145,
+150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56,
+84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129,
+132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131,
+5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196,
+53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127,
+253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150,
+188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176,
+179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24,
+121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140,
+120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143,
+73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86,
+134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26,
+32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88,
+103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20,
+246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91,
+119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188,
+132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121,
+77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185,
+22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167,
+223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181,
+144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18,
+222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1,
+162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108,
+7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236,
+186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105,
+126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31,
+100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25,
+166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75,
+119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208,
+189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182,
+106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94,
+246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168,
+1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210,
+155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0,
+0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207,
+225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221,
+6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60,
+5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77,
+67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12,
+158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229,
+11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222,
+69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180,
+224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15,
+65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143,
+128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20,
+248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195,
+167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37,
+24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108,
+213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241,
+53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122,
+127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93,
+135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225,
+78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1,
+2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0,
+65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238,
+9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152,
+239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96,
+232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46,
+33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182,
+37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181,
+30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104,
+89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242,
+16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25,
+204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32,
+142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131,
+46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48,
+100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18,
+132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165,
+228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165,
+79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32,
+30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45,
+62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188,
+2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4,
+22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18,
+8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121,
+8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17,
+37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141,
+44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136,
+81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150,
+158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1,
+6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40,
+39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240,
+16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24,
+2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250,
+247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20,
+196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158,
+108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27,
+186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165,
+218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101,
+167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111,
+3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12,
+61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46,
+67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33,
+40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161,
+134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87,
+65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199,
+123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199,
+184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6,
+112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8,
+70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50,
+134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67,
+48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59,
+136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171,
+143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190,
+4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20,
+39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114,
+253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208,
+35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221,
+6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197,
+210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8,
+1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145,
+3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184,
+251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61,
+154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46,
+242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164,
+219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83,
+226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177,
+236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203,
+40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18,
+84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32,
+196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50,
+252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98,
+217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114,
+148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91,
+54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128,
+90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201,
+73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67,
+48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209,
+4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228,
+187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66,
+38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212,
+65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12,
+208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5,
+48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31,
+16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128,
+96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116,
+23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114,
+223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127,
+38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0,
+131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196,
+17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30,
+66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204,
+69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16,
+74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97,
+105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223,
+89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121,
+243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33,
+67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94,
+66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110,
+190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69,
+22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228,
+40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129,
+197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61,
+132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229,
+49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151,
+206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237,
+253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59,
+0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36,
+150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27,
+168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115,
+225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133,
+60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134,
+29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35,
+88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236,
+25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227,
+100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242,
+166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96,
+144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203,
+138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234,
+254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61,
+8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12,
+37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202,
+23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6,
+89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147,
+56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185,
+190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144,
+245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159,
+249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226,
+87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232,
+91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59,
+223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12,
+178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62,
+241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210,
+72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253,
+145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114,
+255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82,
+52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107,
+127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142,
+126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124,
+89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34,
+179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58,
+64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81,
+213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55,
+253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39,
+141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39,
+105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234,
+237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251,
+178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46,
+58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234,
+197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207,
+23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23,
+13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125,
+199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164,
+108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63,
+249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28,
+242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63,
+251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174,
+101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50,
+77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88,
+176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135,
+31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62,
+188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227,
+145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35,
+245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244,
+138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107,
+115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71,
+252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121,
+118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145,
+89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26,
+169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63,
+63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249,
+230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219,
+77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116,
+49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241,
+108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242,
+93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238,
+119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54,
+52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89,
+174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127,
+169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195,
+31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241,
+181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125,
+194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42,
+231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146,
+178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231,
+130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162,
+31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70,
+178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252,
+193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47,
+109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113,
+12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44,
+251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92,
+124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166,
+169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167,
+105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255,
+230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222,
+151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151,
+53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167,
+175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151,
+230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223,
+252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143,
+229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250,
+11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164,
+253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116,
+116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124,
+234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254,
+38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211,
+171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158,
+205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153,
+117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254,
+244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189,
+146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79,
+92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27,
+40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246,
+222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163,
+61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113,
+57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98,
+76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216,
+209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101,
+201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39,
+53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116,
+218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142,
+61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117,
+215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113,
+95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30,
+242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146,
+204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222,
+172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103,
+118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160,
+67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231,
+210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9,
+199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141,
+75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132,
+196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143,
+229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127,
+246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73,
+9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92,
+84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234,
+171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175,
+186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95,
+127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255,
+249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102,
+165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236,
+193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243,
+233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6,
+202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254,
+200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123,
+23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21,
+176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224,
+246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59,
+189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97,
+24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88,
+238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234,
+244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159,
+242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79,
+218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178,
+57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249,
+225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243,
+201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229,
+144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151,
+40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215,
+237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182,
+75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190,
+86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231,
+101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174,
+248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214,
+213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11,
+9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163,
+78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117,
+175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115,
+202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199,
+57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217,
+119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111,
+183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28,
+223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178,
+169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23,
+95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128,
+230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87,
+117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188,
+119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248,
+212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223,
+112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23,
+29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36,
+120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25,
+159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241,
+164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175,
+121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246,
+189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126,
+206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135,
+63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106,
+201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128,
+81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245,
+167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245,
+171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196,
+57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226,
+21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217,
+186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183,
+93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225,
+71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94,
+205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238,
+95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35,
+217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210,
+91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143,
+61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67,
+75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204,
+233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249,
+17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215,
+183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89,
+115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191,
+249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229,
+202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59,
+50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37,
+186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171,
+150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184,
+251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247,
+176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253,
+254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112,
+252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226,
+65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120,
+78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239,
+123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77,
+205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117,
+175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208,
+55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19,
+142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154,
+24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71,
+126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164,
+251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4,
+102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64,
+124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4,
+184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210,
+124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194,
+57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187,
+126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178,
+92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124,
+223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186,
+219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163,
+148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174,
+67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119,
+190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75,
+51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224,
+50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238,
+218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82,
+121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27,
+174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235,
+188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45,
+150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249,
+218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27,
+218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185,
+205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167,
+240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254,
+245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102,
+62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181,
+204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174,
+181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68,
+89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60,
+185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205,
+21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100,
+210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222,
+220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180,
+17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253,
+225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254,
+130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41,
+31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35,
+80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109,
+154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178,
+93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159,
+241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144,
+32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239,
+162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222,
+1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26,
+38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245,
+133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70,
+123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35,
+30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200,
+253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32,
+233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155,
+119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179,
+196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223,
+252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88,
+74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142,
+208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94,
+255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177,
+55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124,
+37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78,
+250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226,
+164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240,
+88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196,
+194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195,
+228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138,
+139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245,
+186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44,
+165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27,
+216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63,
+188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153,
+119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185,
+22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229,
+148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33,
+35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120,
+208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42,
+171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124,
+35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189,
+77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3,
+183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158,
+112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122,
+74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0,
+79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106,
+186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236,
+71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83,
+34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201,
+204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154,
+152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131,
+138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63,
+238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94,
+15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135,
+60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244,
+53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239,
+219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90,
+235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124,
+228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24,
+209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72,
+136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191,
+108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179,
+253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229,
+184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167,
+207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230,
+54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175,
+75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207,
+27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151,
+63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134,
+204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64,
+223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95,
+191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226,
+213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185,
+249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244,
+39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92,
+190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127,
+159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226,
+33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183,
+118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65,
+162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25,
+73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226,
+161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203,
+81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26,
+52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187,
+90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149,
+46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146,
+68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203,
+197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49,
+34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203,
+172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14,
+41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108,
+47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249,
+251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168,
+147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73,
+40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161,
+107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123,
+151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127,
+209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29,
+115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125,
+11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182,
+31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198,
+90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213,
+137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103,
+181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181,
+5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39,
+157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161,
+78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107,
+72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152,
+49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157,
+114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223,
+236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119,
+196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205,
+111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253,
+241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183,
+93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251,
+100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198,
+191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81,
+251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183,
+2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146,
+125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165,
+243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62,
+196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51,
+199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133,
+237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91,
+172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153,
+166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80,
+110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93,
+160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179,
+222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247,
+7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190,
+253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192,
+72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143,
+26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215,
+236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67,
+162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171,
+27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12,
+78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147,
+116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253,
+53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241,
+69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17,
+167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159,
+28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254,
+199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186,
+6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61,
+253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235,
+136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136,
+70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162,
+58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103,
+156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246,
+137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181,
+32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161,
+127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197,
+139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104,
+150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202,
+36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185,
+246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118,
+240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253,
+170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223,
+203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89,
+198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168,
+239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62,
+119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244,
+62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141,
+212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253,
+67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124,
+244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94,
+246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187,
+61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142,
+228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241,
+201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242,
+217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176,
+101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220,
+255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190,
+109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204,
+67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5,
+99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168,
+107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137,
+113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254,
+73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78,
+219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50,
+105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90,
+110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172,
+244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144,
+114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234,
+253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229,
+3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217,
+98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127,
+121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23,
+191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6,
+234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191,
+205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212,
+219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49,
+71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159,
+249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89,
+152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100,
+165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253,
+97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206,
+52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224,
+79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119,
+224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103,
+188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242,
+75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246,
+183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38,
+29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190,
+243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191,
+246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106,
+163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26,
+164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223,
+130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173,
+69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237,
+215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178,
+186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112,
+144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233,
+106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190,
+133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201,
+32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166,
+155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119,
+223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242,
+212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35,
+101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43,
+41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100,
+107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173,
+181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239,
+190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74,
+109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45,
+125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111,
+134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7,
+217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110,
+47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187,
+110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105,
+144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169,
+219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231,
+174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124,
+6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53,
+82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96,
+240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38,
+165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245,
+248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30,
+211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44,
+153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55,
+253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95,
+45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26,
+169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238,
+203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6,
+89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65,
+6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65,
+6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32,
+131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131,
+12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0,
+0,0,0,73,69,78,68,174,66,96,130};
+
+int splash_image6_sz = sizeof(splash_image6);
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage07.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage07.c
new file mode 100644
index 0000000000..351ded9d63
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage07.c
@@ -0,0 +1,2167 @@
+const unsigned char splash_image7[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82,
+146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,
+43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7,
+184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206,
+57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88,
+98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68,
+122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32,
+88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214,
+222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152,
+99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12,
+50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108,
+115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218,
+182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104,
+115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124,
+194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180,
+103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36,
+182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149,
+110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201,
+37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57,
+21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126,
+175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141,
+58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108,
+236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44,
+203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85,
+89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149,
+223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88,
+46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157,
+86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165,
+239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201,
+132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89,
+38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109,
+174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53,
+43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9,
+182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164,
+41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90,
+185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226,
+186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223,
+111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155,
+120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5,
+87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7,
+157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150,
+231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164,
+41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42,
+183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251,
+157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75,
+47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76,
+203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184,
+86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229,
+1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153,
+199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198,
+158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212,
+247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182,
+167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157,
+246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182,
+196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215,
+185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29,
+72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152,
+116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152,
+140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73,
+134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76,
+39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233,
+242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174,
+61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75,
+63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253,
+48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175,
+16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172,
+133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197,
+117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216,
+203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249,
+94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237,
+241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64,
+110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34,
+93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53,
+35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185,
+245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191,
+58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186,
+173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157,
+59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222,
+163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115,
+174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66,
+224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4,
+90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222,
+71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231,
+94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233,
+170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182,
+82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148,
+114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175,
+200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101,
+62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168,
+82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3,
+36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137,
+173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45,
+3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12,
+50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,
+200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200,
+84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51,
+196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86,
+195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247,
+122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162,
+139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91,
+88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191,
+85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159,
+105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207,
+53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211,
+142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81,
+94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182,
+41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131,
+236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27,
+109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147,
+5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151,
+140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188,
+137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173,
+166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215,
+1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61,
+246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203,
+97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181,
+0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233,
+194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92,
+69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102,
+207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226,
+124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59,
+245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103,
+88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27,
+249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73,
+180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28,
+166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239,
+180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86,
+129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254,
+190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250,
+45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83,
+116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227,
+231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223,
+178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28,
+166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254,
+58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73,
+149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89,
+231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215,
+195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201,
+211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171,
+42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50,
+215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235,
+201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152,
+6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93,
+178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255,
+111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235,
+141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159,
+233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206,
+199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116,
+137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223,
+92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49,
+25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255,
+143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147,
+209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152,
+76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79,
+207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108,
+123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231,
+99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252,
+242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12,
+245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212,
+109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220,
+181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167,
+44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219,
+61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95,
+46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99,
+73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214,
+231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73,
+101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142,
+46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45,
+24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46,
+60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122,
+142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167,
+147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140,
+227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140,
+109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249,
+157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55,
+231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178,
+184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69,
+50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241,
+107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120,
+94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165,
+190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246,
+90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211,
+242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4,
+186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61,
+200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25,
+100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,
+170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,
+12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,
+144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,
+24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,
+100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100,
+144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98,
+123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205,
+55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28,
+179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252,
+228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186,
+230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215,
+94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226,
+94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119,
+148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75,
+141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69,
+115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1,
+7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233,
+159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255,
+220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204,
+230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37,
+134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75,
+35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47,
+236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188,
+121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0,
+120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249,
+200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183,
+230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185,
+187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210,
+208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243,
+165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135,
+62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85,
+243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158,
+6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47,
+126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205,
+126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130,
+14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4,
+10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199,
+31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108,
+118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96,
+220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196,
+39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45,
+111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30,
+52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200,
+0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94,
+121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249,
+206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243,
+156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176,
+143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232,
+106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223,
+222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239,
+194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231,
+53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0,
+192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233,
+174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231,
+55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121,
+195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125,
+112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19,
+225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158,
+244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92,
+90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110,
+89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70,
+16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234,
+0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199,
+152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127,
+248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239,
+127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48,
+240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242,
+172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187,
+135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214,
+179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99,
+216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143,
+187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242,
+230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7,
+54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64,
+193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70,
+9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182,
+223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223,
+119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156,
+114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93,
+239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2,
+21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38,
+3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192,
+82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135,
+235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206,
+43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8,
+12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184,
+227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221,
+3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244,
+162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199,
+59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73,
+122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113,
+223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100,
+125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120,
+5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103,
+116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205,
+43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68,
+206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80,
+28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47,
+40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241,
+238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87,
+190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251,
+187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88,
+96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119,
+12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39,
+3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237,
+186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215,
+45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74,
+6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88,
+3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204,
+140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15,
+12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112,
+140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167,
+231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54,
+239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24,
+129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9,
+32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128,
+65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49,
+195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178,
+107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76,
+2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93,
+215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192,
+1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105,
+128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2,
+129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175,
+118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226,
+73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80,
+136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137,
+39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138,
+87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61,
+96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121,
+1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184,
+23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249,
+17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20,
+32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144,
+95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34,
+112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66,
+87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215,
+158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192,
+72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18,
+149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222,
+243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210,
+1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181,
+46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104,
+33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160,
+0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242,
+1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250,
+210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113,
+201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114,
+101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189,
+205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195,
+72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163,
+214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217,
+157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51,
+13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166,
+0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3,
+120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184,
+3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58,
+206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215,
+126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115,
+207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114,
+100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217,
+240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117,
+21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187,
+48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185,
+93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3,
+34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202,
+0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199,
+22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70,
+204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234,
+122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154,
+115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205,
+197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241,
+227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8,
+117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123,
+220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70,
+3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206,
+189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27,
+215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45,
+94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97,
+255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116,
+215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19,
+182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158,
+128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118,
+93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72,
+172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231,
+243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212,
+246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5,
+11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235,
+152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54,
+251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15,
+1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109,
+154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183,
+235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186,
+235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184,
+199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204,
+75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225,
+93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159,
+255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130,
+144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241,
+30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97,
+130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104,
+189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111,
+128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215,
+127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6,
+125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9,
+221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178,
+221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69,
+157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102,
+180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225,
+58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60,
+10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10,
+210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133,
+152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16,
+27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84,
+231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162,
+23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215,
+10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101,
+40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139,
+115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144,
+88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93,
+9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66,
+43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234,
+155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60,
+9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26,
+20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115,
+206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7,
+20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136,
+238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3,
+156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73,
+7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55,
+187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119,
+189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72,
+116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146,
+123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66,
+134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99,
+152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123,
+62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0,
+116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199,
+147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48,
+252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61,
+90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241,
+48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246,
+183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231,
+185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132,
+53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57,
+150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88,
+154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183,
+205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187,
+219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195,
+194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113,
+137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160,
+5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196,
+216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100,
+95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207,
+161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174,
+21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241,
+254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105,
+118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184,
+60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214,
+197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52,
+93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64,
+237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188,
+9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173,
+6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88,
+42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114,
+142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146,
+151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143,
+67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49,
+93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181,
+164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9,
+128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4,
+3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41,
+80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73,
+173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153,
+145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113,
+187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114,
+76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204,
+110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214,
+128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221,
+237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208,
+218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70,
+206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4,
+26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224,
+107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63,
+150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132,
+214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30,
+251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217,
+5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181,
+74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113,
+9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8,
+7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116,
+57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93,
+13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6,
+157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129,
+69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254,
+251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141,
+231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27,
+245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177,
+6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153,
+54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245,
+219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114,
+234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17,
+52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97,
+215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23,
+8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192,
+203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139,
+231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53,
+173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36,
+8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87,
+193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203,
+104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180,
+50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32,
+106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192,
+3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78,
+129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117,
+196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214,
+12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28,
+9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211,
+108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4,
+67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96,
+224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238,
+239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47,
+53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251,
+159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124,
+234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101,
+128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102,
+94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109,
+59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16,
+92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198,
+224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147,
+198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6,
+159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175,
+225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130,
+60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0,
+2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124,
+10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65,
+75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107,
+245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56,
+156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215,
+179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106,
+45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198,
+174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67,
+160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98,
+178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160,
+86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10,
+198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98,
+152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0,
+134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185,
+251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202,
+124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7,
+101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101,
+68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204,
+73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184,
+188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83,
+174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202,
+144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176,
+206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37,
+79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129,
+150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7,
+219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0,
+166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242,
+27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104,
+164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31,
+183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136,
+186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131,
+97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235,
+154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129,
+23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220,
+51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187,
+16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193,
+126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164,
+81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155,
+150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73,
+250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129,
+145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4,
+195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9,
+8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56,
+68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37,
+13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115,
+1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32,
+210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36,
+136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241,
+70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90,
+182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84,
+190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234,
+59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24,
+136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40,
+141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7,
+17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234,
+202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149,
+109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210,
+197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101,
+170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223,
+121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138,
+109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38,
+100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180,
+110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14,
+12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12,
+117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192,
+16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45,
+47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252,
+5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86,
+94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227,
+229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45,
+0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13,
+177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148,
+90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174,
+53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145,
+120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116,
+49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192,
+64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95,
+9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120,
+134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29,
+111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186,
+235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249,
+122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2,
+111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17,
+10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161,
+201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2,
+66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193,
+32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233,
+98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244,
+12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129,
+133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179,
+121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153,
+223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117,
+131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150,
+63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114,
+91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7,
+149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1,
+32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17,
+111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207,
+194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218,
+123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103,
+25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12,
+246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186,
+242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94,
+223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103,
+229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143,
+6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101,
+10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230,
+159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245,
+55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34,
+49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30,
+68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171,
+238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210,
+205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45,
+191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212,
+185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237,
+177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127,
+130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180,
+208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86,
+31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16,
+62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127,
+104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129,
+68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76,
+235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49,
+24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172,
+131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234,
+109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98,
+33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241,
+248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121,
+99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188,
+83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48,
+89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129,
+197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10,
+137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110,
+10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2,
+68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110,
+70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111,
+130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246,
+101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46,
+161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93,
+155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181,
+67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116,
+229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36,
+120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132,
+132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226,
+61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26,
+137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176,
+101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17,
+125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101,
+108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79,
+44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129,
+151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222,
+125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241,
+89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246,
+251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242,
+246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18,
+192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120,
+18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64,
+66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141,
+196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35,
+195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107,
+109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186,
+17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145,
+232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1,
+18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219,
+111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242,
+80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202,
+19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232,
+70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31,
+221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197,
+35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150,
+53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36,
+196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54,
+190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240,
+194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148,
+222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173,
+153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41,
+80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155,
+218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233,
+121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33,
+81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4,
+43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219,
+1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222,
+4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196,
+123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247,
+67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200,
+48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221,
+181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196,
+19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130,
+66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163,
+0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125,
+174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45,
+223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45,
+1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104,
+6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160,
+188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131,
+176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33,
+202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151,
+150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122,
+234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184,
+87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164,
+128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217,
+173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90,
+2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12,
+144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48,
+136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173,
+55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251,
+253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10,
+191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143,
+65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50,
+88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21,
+192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217,
+0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185,
+194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140,
+138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242,
+207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129,
+50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144,
+176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30,
+137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186,
+158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91,
+91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22,
+8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207,
+123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171,
+47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101,
+93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74,
+162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235,
+137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224,
+57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10,
+212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135,
+94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2,
+12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128,
+200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29,
+216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153,
+216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236,
+158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219,
+115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2,
+240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216,
+195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173,
+243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222,
+115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73,
+32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71,
+31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192,
+33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12,
+60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13,
+219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225,
+173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1,
+141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245,
+103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56,
+78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4,
+137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11,
+28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164,
+46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56,
+19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96,
+112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173,
+253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91,
+241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1,
+200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44,
+222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89,
+25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144,
+46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131,
+133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230,
+85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157,
+161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64,
+194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103,
+180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139,
+161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179,
+77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29,
+232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163,
+107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216,
+233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188,
+123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57,
+94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165,
+231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15,
+46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26,
+125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7,
+130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1,
+7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232,
+70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198,
+15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20,
+207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29,
+6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249,
+180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103,
+219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184,
+175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3,
+20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112,
+12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158,
+219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36,
+123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220,
+115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35,
+202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163,
+213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232,
+54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171,
+18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75,
+75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33,
+100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237,
+78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59,
+230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185,
+241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18,
+12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113,
+47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15,
+96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251,
+1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86,
+114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23,
+181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29,
+40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7,
+193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150,
+203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227,
+61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215,
+215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222,
+133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147,
+0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177,
+45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96,
+88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12,
+27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82,
+193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90,
+102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186,
+242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66,
+110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111,
+255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248,
+175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119,
+186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13,
+2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184,
+131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219,
+15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25,
+28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250,
+104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22,
+74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194,
+142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86,
+62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211,
+109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117,
+251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13,
+188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103,
+5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182,
+220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248,
+64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189,
+173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243,
+199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153,
+42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109,
+164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80,
+209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158,
+131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219,
+181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119,
+180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65,
+107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154,
+84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155,
+81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94,
+5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2,
+14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178,
+244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231,
+90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48,
+58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196,
+149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0,
+224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47,
+40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110,
+35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65,
+5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64,
+128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224,
+81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240,
+42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24,
+168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16,
+38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64,
+136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254,
+65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28,
+167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162,
+251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189,
+220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50,
+125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211,
+0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47,
+141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142,
+240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32,
+243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158,
+4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208,
+1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108,
+149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97,
+64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10,
+52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67,
+160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0,
+22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160,
+40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32,
+248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86,
+249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4,
+222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230,
+188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46,
+239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114,
+76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103,
+68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9,
+138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74,
+149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50,
+40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221,
+12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173,
+41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4,
+94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96,
+16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132,
+101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47,
+98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220,
+226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91,
+150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247,
+172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251,
+58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5,
+106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134,
+132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85,
+66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242,
+32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144,
+180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197,
+102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30,
+120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174,
+101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19,
+32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73,
+75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99,
+244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107,
+253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77,
+98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113,
+214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99,
+210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202,
+82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23,
+81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184,
+215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241,
+38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81,
+241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22,
+152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112,
+229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84,
+74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0,
+161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142,
+139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119,
+101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52,
+202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203,
+61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252,
+184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191,
+21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233,
+212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94,
+64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132,
+190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72,
+196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121,
+17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75,
+90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5,
+2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173,
+197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75,
+112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194,
+232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42,
+157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97,
+116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156,
+119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147,
+250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221,
+175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117,
+8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243,
+151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174,
+27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23,
+163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105,
+144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251,
+24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193,
+130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48,
+21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24,
+24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116,
+90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20,
+165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96,
+60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72,
+186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191,
+63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81,
+229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254,
+231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254,
+97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142,
+222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226,
+166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9,
+9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0,
+43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68,
+43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26,
+96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90,
+186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89,
+143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8,
+24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199,
+120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197,
+249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160,
+246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164,
+62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52,
+191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238,
+221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172,
+107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96,
+220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132,
+22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128,
+97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17,
+4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164,
+165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93,
+59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242,
+200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128,
+17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122,
+46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223,
+182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52,
+40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246,
+182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222,
+247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47,
+93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255,
+223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86,
+191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21,
+94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76,
+229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29,
+215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95,
+246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37,
+24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168,
+12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111,
+202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1,
+28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89,
+150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121,
+251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191,
+249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142,
+127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42,
+19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39,
+18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246,
+90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226,
+57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171,
+97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74,
+199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71,
+116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251,
+121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40,
+3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179,
+40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111,
+41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123,
+98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107,
+23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173,
+223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26,
+223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71,
+89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134,
+192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130,
+254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254,
+197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150,
+97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245,
+101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241,
+130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0,
+65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103,
+159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162,
+140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27,
+0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128,
+5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183,
+190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18,
+126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128,
+217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239,
+197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96,
+240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60,
+145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247,
+2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82,
+144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128,
+65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24,
+140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49,
+212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77,
+51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199,
+72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224,
+165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16,
+90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134,
+27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227,
+29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49,
+196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141,
+140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4,
+14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144,
+140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81,
+2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96,
+105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75,
+76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169,
+181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130,
+6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4,
+67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169,
+129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2,
+134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91,
+191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72,
+40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202,
+241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10,
+165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51,
+42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224,
+69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107,
+136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192,
+64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46,
+5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11,
+65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94,
+68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140,
+83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119,
+93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118,
+183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247,
+208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26,
+140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0,
+134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5,
+253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136,
+64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3,
+173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116,
+0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190,
+193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114,
+4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34,
+45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166,
+139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137,
+120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65,
+186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173,
+101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51,
+3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80,
+68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178,
+81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120,
+16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28,
+64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60,
+146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42,
+210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156,
+92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21,
+130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80,
+160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149,
+50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166,
+117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175,
+132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70,
+169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214,
+129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128,
+131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106,
+29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221,
+237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165,
+214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16,
+159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239,
+160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245,
+246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114,
+70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47,
+17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66,
+142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1,
+14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5,
+5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32,
+81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90,
+166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46,
+0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180,
+150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135,
+85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37,
+120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233,
+94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160,
+242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210,
+209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96,
+145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109,
+3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160,
+54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91,
+92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20,
+32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49,
+240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33,
+81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142,
+50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115,
+41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220,
+156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3,
+5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160,
+75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230,
+74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40,
+65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3,
+10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40,
+210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99,
+175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226,
+17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4,
+47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54,
+227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213,
+5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118,
+128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77,
+148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70,
+62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54,
+149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235,
+26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98,
+105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193,
+62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32,
+1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50,
+128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102,
+186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75,
+24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77,
+242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151,
+240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123,
+192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51,
+203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28,
+1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74,
+143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34,
+90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230,
+254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36,
+184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193,
+75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64,
+68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159,
+18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17,
+111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71,
+70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105,
+160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117,
+240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178,
+151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34,
+196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164,
+184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150,
+93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222,
+4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34,
+64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152,
+153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84,
+46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140,
+27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40,
+150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163,
+30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3,
+153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60,
+5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112,
+112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172,
+13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208,
+209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236,
+139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68,
+13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212,
+94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49,
+98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225,
+16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186,
+134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94,
+46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24,
+196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217,
+237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62,
+17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23,
+36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228,
+57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61,
+228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36,
+72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98,
+130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138,
+232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17,
+111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64,
+145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178,
+205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109,
+121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86,
+227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49,
+34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144,
+40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232,
+155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83,
+235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29,
+235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102,
+246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151,
+16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229,
+48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187,
+29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164,
+131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128,
+4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143,
+135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240,
+210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9,
+200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208,
+242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25,
+27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60,
+90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132,
+60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103,
+145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176,
+14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143,
+229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235,
+133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97,
+20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27,
+178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177,
+169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147,
+40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6,
+20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112,
+176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6,
+129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171,
+102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72,
+240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200,
+155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242,
+178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101,
+224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49,
+173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80,
+0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126,
+144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176,
+128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104,
+197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56,
+103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215,
+254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250,
+130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174,
+68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74,
+80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16,
+19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24,
+0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229,
+193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216,
+216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192,
+37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80,
+112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89,
+247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115,
+151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142,
+190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209,
+73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194,
+160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227,
+224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92,
+195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187,
+150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16,
+242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7,
+20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144,
+48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67,
+100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15,
+20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188,
+11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168,
+31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251,
+181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232,
+190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240,
+8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190,
+0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202,
+239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195,
+112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235,
+101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248,
+4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226,
+241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16,
+225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52,
+117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143,
+64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28,
+90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208,
+200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172,
+108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84,
+68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18,
+18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248,
+4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51,
+26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108,
+235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183,
+2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64,
+170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112,
+83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1,
+67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91,
+154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14,
+94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176,
+157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194,
+58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167,
+188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186,
+35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203,
+33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37,
+239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204,
+43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15,
+14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225,
+108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75,
+149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1,
+18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160,
+182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112,
+62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22,
+235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13,
+131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238,
+35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12,
+222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114,
+93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17,
+72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181,
+181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89,
+123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33,
+90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30,
+128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48,
+116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48,
+62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103,
+56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131,
+37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33,
+195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202,
+200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151,
+170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190,
+68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126,
+45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149,
+96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144,
+1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177,
+11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23,
+98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120,
+101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91,
+2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108,
+149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168,
+1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162,
+246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16,
+103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15,
+3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7,
+80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237,
+179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199,
+203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24,
+168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245,
+251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138,
+100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12,
+34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7,
+9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237,
+183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142,
+51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96,
+66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134,
+29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200,
+241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233,
+130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53,
+36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167,
+18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169,
+37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12,
+223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225,
+39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1,
+97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134,
+94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169,
+242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110,
+89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161,
+60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150,
+140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157,
+48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24,
+136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34,
+202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227,
+45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220,
+95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126,
+91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240,
+98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47,
+33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138,
+192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110,
+189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42,
+157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141,
+26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208,
+151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195,
+0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94,
+133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158,
+93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46,
+7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121,
+210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6,
+20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250,
+122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148,
+87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191,
+255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205,
+192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69,
+208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65,
+194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69,
+186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181,
+209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121,
+202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89,
+217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1,
+47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38,
+162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28,
+183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208,
+160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224,
+74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65,
+48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247,
+252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144,
+128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23,
+35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81,
+238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216,
+47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24,
+85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127,
+26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229,
+115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131,
+68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164,
+178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210,
+245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5,
+6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10,
+6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97,
+244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126,
+75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81,
+226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153,
+84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157,
+185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52,
+72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250,
+96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65,
+140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203,
+91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192,
+238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147,
+170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6,
+131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37,
+48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2,
+138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236,
+104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150,
+111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255,
+245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203,
+68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86,
+13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145,
+49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18,
+53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102,
+127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178,
+175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229,
+117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47,
+255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120,
+70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191,
+111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102,
+238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128,
+162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40,
+181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22,
+53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120,
+133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52,
+127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59,
+54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25,
+250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19,
+9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165,
+217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197,
+36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34,
+176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98,
+252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0,
+248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29,
+12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115,
+159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120,
+179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230,
+33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19,
+151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82,
+160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62,
+9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232,
+3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26,
+249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155,
+223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14,
+10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156,
+12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214,
+188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195,
+170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88,
+80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134,
+4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45,
+75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0,
+34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119,
+126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221,
+41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30,
+92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195,
+212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239,
+5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145,
+150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56,
+84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129,
+132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131,
+5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196,
+53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127,
+253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150,
+188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176,
+179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24,
+121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140,
+120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143,
+73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86,
+134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26,
+32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88,
+103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20,
+246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91,
+119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188,
+132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121,
+77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185,
+22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167,
+223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181,
+144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18,
+222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1,
+162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108,
+7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236,
+186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105,
+126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31,
+100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25,
+166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75,
+119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208,
+189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182,
+106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94,
+246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168,
+1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210,
+155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0,
+0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207,
+225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221,
+6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60,
+5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77,
+67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12,
+158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229,
+11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222,
+69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180,
+224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15,
+65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143,
+128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20,
+248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195,
+167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37,
+24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108,
+213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241,
+53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122,
+127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93,
+135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225,
+78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1,
+2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0,
+65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238,
+9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152,
+239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96,
+232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46,
+33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182,
+37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181,
+30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104,
+89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242,
+16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25,
+204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32,
+142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131,
+46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48,
+100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18,
+132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165,
+228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165,
+79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32,
+30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45,
+62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188,
+2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4,
+22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18,
+8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121,
+8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17,
+37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141,
+44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136,
+81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150,
+158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1,
+6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40,
+39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240,
+16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24,
+2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250,
+247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20,
+196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158,
+108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27,
+186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165,
+218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101,
+167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111,
+3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12,
+61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46,
+67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33,
+40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161,
+134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87,
+65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199,
+123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199,
+184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6,
+112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8,
+70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50,
+134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67,
+48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59,
+136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171,
+143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190,
+4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20,
+39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114,
+253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208,
+35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221,
+6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197,
+210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8,
+1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145,
+3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184,
+251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61,
+154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46,
+242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164,
+219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83,
+226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177,
+236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203,
+40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18,
+84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32,
+196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50,
+252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98,
+217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114,
+148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91,
+54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128,
+90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201,
+73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67,
+48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209,
+4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228,
+187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66,
+38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212,
+65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12,
+208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5,
+48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31,
+16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128,
+96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116,
+23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114,
+223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127,
+38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0,
+131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196,
+17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30,
+66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204,
+69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16,
+74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97,
+105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223,
+89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121,
+243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33,
+67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94,
+66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110,
+190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69,
+22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228,
+40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129,
+197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61,
+132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229,
+49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151,
+206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237,
+253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59,
+0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36,
+150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27,
+168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115,
+225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133,
+60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134,
+29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35,
+88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236,
+25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227,
+100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242,
+166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96,
+144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203,
+138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234,
+254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61,
+8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12,
+37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202,
+23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6,
+89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147,
+56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185,
+190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144,
+245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159,
+249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226,
+87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232,
+91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59,
+223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12,
+178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62,
+241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210,
+72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253,
+145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114,
+255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82,
+52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107,
+127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142,
+126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124,
+89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34,
+179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58,
+64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81,
+213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55,
+253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39,
+141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39,
+105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234,
+237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251,
+178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46,
+58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234,
+197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207,
+23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23,
+13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125,
+199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164,
+108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63,
+249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28,
+242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63,
+251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174,
+101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50,
+77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88,
+176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135,
+31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62,
+188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227,
+145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35,
+245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244,
+138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107,
+115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71,
+252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121,
+118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145,
+89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26,
+169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63,
+63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249,
+230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219,
+77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116,
+49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241,
+108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242,
+93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238,
+119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54,
+52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89,
+174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127,
+169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195,
+31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241,
+181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125,
+194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42,
+231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146,
+178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231,
+130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162,
+31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70,
+178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252,
+193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47,
+109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113,
+12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44,
+251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92,
+124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166,
+169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167,
+105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255,
+230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222,
+151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151,
+53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167,
+175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151,
+230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223,
+252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143,
+229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250,
+11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164,
+253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116,
+116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124,
+234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254,
+38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211,
+171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158,
+205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153,
+117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254,
+244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189,
+146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79,
+92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27,
+40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246,
+222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163,
+61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113,
+57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98,
+76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216,
+209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101,
+201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39,
+53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116,
+218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142,
+61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117,
+215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113,
+95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30,
+242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146,
+204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222,
+172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103,
+118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160,
+67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231,
+210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9,
+199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141,
+75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132,
+196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143,
+229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127,
+246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73,
+9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92,
+84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234,
+171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175,
+186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95,
+127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255,
+249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102,
+165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236,
+193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243,
+233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6,
+202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254,
+200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123,
+23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21,
+176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224,
+246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59,
+189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97,
+24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88,
+238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234,
+244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159,
+242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79,
+218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178,
+57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249,
+225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243,
+201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229,
+144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151,
+40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215,
+237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182,
+75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190,
+86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231,
+101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174,
+248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214,
+213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11,
+9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163,
+78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117,
+175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115,
+202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199,
+57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217,
+119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111,
+183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28,
+223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178,
+169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23,
+95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128,
+230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87,
+117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188,
+119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248,
+212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223,
+112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23,
+29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36,
+120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25,
+159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241,
+164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175,
+121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246,
+189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126,
+206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135,
+63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106,
+201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128,
+81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245,
+167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245,
+171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196,
+57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226,
+21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217,
+186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183,
+93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225,
+71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94,
+205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238,
+95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35,
+217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210,
+91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143,
+61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67,
+75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204,
+233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249,
+17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215,
+183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89,
+115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191,
+249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229,
+202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59,
+50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37,
+186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171,
+150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184,
+251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247,
+176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253,
+254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112,
+252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226,
+65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120,
+78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239,
+123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77,
+205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117,
+175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208,
+55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19,
+142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154,
+24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71,
+126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164,
+251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4,
+102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64,
+124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4,
+184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210,
+124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194,
+57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187,
+126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178,
+92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124,
+223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186,
+219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163,
+148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174,
+67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119,
+190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75,
+51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224,
+50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238,
+218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82,
+121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27,
+174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235,
+188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45,
+150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249,
+218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27,
+218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185,
+205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167,
+240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254,
+245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102,
+62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181,
+204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174,
+181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68,
+89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60,
+185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205,
+21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100,
+210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222,
+220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180,
+17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253,
+225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254,
+130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41,
+31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35,
+80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109,
+154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178,
+93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159,
+241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144,
+32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239,
+162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222,
+1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26,
+38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245,
+133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70,
+123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35,
+30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200,
+253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32,
+233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155,
+119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179,
+196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223,
+252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88,
+74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142,
+208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94,
+255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177,
+55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124,
+37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78,
+250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226,
+164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240,
+88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196,
+194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195,
+228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138,
+139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245,
+186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44,
+165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27,
+216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63,
+188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153,
+119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185,
+22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229,
+148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33,
+35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120,
+208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42,
+171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124,
+35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189,
+77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3,
+183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158,
+112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122,
+74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0,
+79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106,
+186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236,
+71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83,
+34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201,
+204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154,
+152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131,
+138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63,
+238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94,
+15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135,
+60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244,
+53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239,
+219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90,
+235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124,
+228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24,
+209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72,
+136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191,
+108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179,
+253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229,
+184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167,
+207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230,
+54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175,
+75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207,
+27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151,
+63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134,
+204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64,
+223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95,
+191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226,
+213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185,
+249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244,
+39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92,
+190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127,
+159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226,
+33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183,
+118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65,
+162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25,
+73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226,
+161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203,
+81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26,
+52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187,
+90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149,
+46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146,
+68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203,
+197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49,
+34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203,
+172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14,
+41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108,
+47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249,
+251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168,
+147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73,
+40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161,
+107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123,
+151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127,
+209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29,
+115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125,
+11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182,
+31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198,
+90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213,
+137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103,
+181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181,
+5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39,
+157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161,
+78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107,
+72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152,
+49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157,
+114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223,
+236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119,
+196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205,
+111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253,
+241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183,
+93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251,
+100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198,
+191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81,
+251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183,
+2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146,
+125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165,
+243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62,
+196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51,
+199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133,
+237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91,
+172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153,
+166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80,
+110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93,
+160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179,
+222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247,
+7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190,
+253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192,
+72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143,
+26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215,
+236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67,
+162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171,
+27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12,
+78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147,
+116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253,
+53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241,
+69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17,
+167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159,
+28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254,
+199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186,
+6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61,
+253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235,
+136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136,
+70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162,
+58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103,
+156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246,
+137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181,
+32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161,
+127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197,
+139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104,
+150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202,
+36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185,
+246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118,
+240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253,
+170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223,
+203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89,
+198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168,
+239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62,
+119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244,
+62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141,
+212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253,
+67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124,
+244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94,
+246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187,
+61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142,
+228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241,
+201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242,
+217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176,
+101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220,
+255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190,
+109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204,
+67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5,
+99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168,
+107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137,
+113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254,
+73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78,
+219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50,
+105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90,
+110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172,
+244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144,
+114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234,
+253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229,
+3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217,
+98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127,
+121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23,
+191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6,
+234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191,
+205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212,
+219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49,
+71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159,
+249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89,
+152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100,
+165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253,
+97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206,
+52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224,
+79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119,
+224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103,
+188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242,
+75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246,
+183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38,
+29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190,
+243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191,
+246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106,
+163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26,
+164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223,
+130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173,
+69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237,
+215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178,
+186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112,
+144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233,
+106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190,
+133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201,
+32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166,
+155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119,
+223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242,
+212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35,
+101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43,
+41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100,
+107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173,
+181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239,
+190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74,
+109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45,
+125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111,
+134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7,
+217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110,
+47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187,
+110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105,
+144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169,
+219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231,
+174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124,
+6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53,
+82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96,
+240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38,
+165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245,
+248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30,
+211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44,
+153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55,
+253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95,
+45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26,
+169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238,
+203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6,
+89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65,
+6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65,
+6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32,
+131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131,
+12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0,
+0,0,0,73,69,78,68,174,66,96,130};
+
+int splash_image7_sz = sizeof(splash_image7);
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage08.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage08.c
new file mode 100644
index 0000000000..9403cf86f1
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage08.c
@@ -0,0 +1,2167 @@
+const unsigned char splash_image8[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82,
+146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,
+43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7,
+184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206,
+57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88,
+98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68,
+122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32,
+88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214,
+222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152,
+99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12,
+50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108,
+115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218,
+182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104,
+115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124,
+194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180,
+103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36,
+182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149,
+110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201,
+37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57,
+21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126,
+175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141,
+58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108,
+236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44,
+203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85,
+89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149,
+223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88,
+46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157,
+86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165,
+239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201,
+132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89,
+38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109,
+174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53,
+43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9,
+182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164,
+41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90,
+185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226,
+186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223,
+111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155,
+120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5,
+87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7,
+157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150,
+231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164,
+41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42,
+183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251,
+157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75,
+47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76,
+203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184,
+86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229,
+1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153,
+199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198,
+158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212,
+247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182,
+167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157,
+246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182,
+196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215,
+185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29,
+72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152,
+116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152,
+140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73,
+134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76,
+39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233,
+242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174,
+61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75,
+63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253,
+48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175,
+16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172,
+133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197,
+117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216,
+203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249,
+94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237,
+241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64,
+110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34,
+93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53,
+35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185,
+245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191,
+58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186,
+173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157,
+59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222,
+163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115,
+174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66,
+224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4,
+90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222,
+71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231,
+94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233,
+170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182,
+82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148,
+114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175,
+200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101,
+62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168,
+82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3,
+36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137,
+173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45,
+3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12,
+50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,
+200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200,
+84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51,
+196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86,
+195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247,
+122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162,
+139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91,
+88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191,
+85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159,
+105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207,
+53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211,
+142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81,
+94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182,
+41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131,
+236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27,
+109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147,
+5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151,
+140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188,
+137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173,
+166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215,
+1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61,
+246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203,
+97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181,
+0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233,
+194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92,
+69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102,
+207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226,
+124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59,
+245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103,
+88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27,
+249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73,
+180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28,
+166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239,
+180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86,
+129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254,
+190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250,
+45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83,
+116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227,
+231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223,
+178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28,
+166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254,
+58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73,
+149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89,
+231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215,
+195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201,
+211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171,
+42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50,
+215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235,
+201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152,
+6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93,
+178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255,
+111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235,
+141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159,
+233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206,
+199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116,
+137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223,
+92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49,
+25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255,
+143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147,
+209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152,
+76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79,
+207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108,
+123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231,
+99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252,
+242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12,
+245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212,
+109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220,
+181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167,
+44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219,
+61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95,
+46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99,
+73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214,
+231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73,
+101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142,
+46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45,
+24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46,
+60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122,
+142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167,
+147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140,
+227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140,
+109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249,
+157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55,
+231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178,
+184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69,
+50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241,
+107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120,
+94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165,
+190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246,
+90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211,
+242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4,
+186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61,
+200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25,
+100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,
+170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,
+12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,
+144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,
+24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,
+100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100,
+144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98,
+123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205,
+55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28,
+179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252,
+228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186,
+230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215,
+94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226,
+94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119,
+148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75,
+141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69,
+115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1,
+7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233,
+159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255,
+220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204,
+230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37,
+134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75,
+35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47,
+236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188,
+121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0,
+120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249,
+200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183,
+230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185,
+187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210,
+208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243,
+165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135,
+62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85,
+243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158,
+6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47,
+126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205,
+126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130,
+14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4,
+10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199,
+31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108,
+118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96,
+220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196,
+39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45,
+111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30,
+52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200,
+0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94,
+121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249,
+206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243,
+156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176,
+143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232,
+106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223,
+222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239,
+194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231,
+53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0,
+192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233,
+174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231,
+55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121,
+195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125,
+112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19,
+225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158,
+244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92,
+90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110,
+89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70,
+16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234,
+0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199,
+152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127,
+248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239,
+127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48,
+240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242,
+172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187,
+135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214,
+179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99,
+216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143,
+187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242,
+230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7,
+54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64,
+193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70,
+9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182,
+223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223,
+119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156,
+114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93,
+239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2,
+21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38,
+3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192,
+82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135,
+235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206,
+43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8,
+12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184,
+227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221,
+3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244,
+162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199,
+59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73,
+122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113,
+223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100,
+125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120,
+5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103,
+116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205,
+43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68,
+206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80,
+28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47,
+40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241,
+238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87,
+190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251,
+187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88,
+96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119,
+12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39,
+3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237,
+186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215,
+45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74,
+6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88,
+3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204,
+140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15,
+12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112,
+140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167,
+231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54,
+239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24,
+129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9,
+32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128,
+65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49,
+195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178,
+107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76,
+2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93,
+215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192,
+1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105,
+128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2,
+129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175,
+118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226,
+73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80,
+136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137,
+39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138,
+87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61,
+96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121,
+1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184,
+23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249,
+17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20,
+32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144,
+95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34,
+112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66,
+87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215,
+158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192,
+72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18,
+149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222,
+243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210,
+1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181,
+46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104,
+33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160,
+0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242,
+1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250,
+210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113,
+201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114,
+101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189,
+205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195,
+72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163,
+214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217,
+157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51,
+13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166,
+0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3,
+120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184,
+3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58,
+206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215,
+126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115,
+207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114,
+100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217,
+240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117,
+21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187,
+48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185,
+93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3,
+34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202,
+0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199,
+22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70,
+204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234,
+122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154,
+115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205,
+197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241,
+227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8,
+117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123,
+220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70,
+3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206,
+189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27,
+215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45,
+94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97,
+255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116,
+215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19,
+182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158,
+128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118,
+93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72,
+172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231,
+243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212,
+246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5,
+11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235,
+152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54,
+251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15,
+1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109,
+154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183,
+235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186,
+235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184,
+199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204,
+75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225,
+93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159,
+255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130,
+144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241,
+30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97,
+130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104,
+189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111,
+128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215,
+127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6,
+125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9,
+221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178,
+221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69,
+157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102,
+180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225,
+58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60,
+10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10,
+210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133,
+152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16,
+27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84,
+231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162,
+23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215,
+10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101,
+40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139,
+115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144,
+88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93,
+9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66,
+43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234,
+155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60,
+9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26,
+20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115,
+206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7,
+20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136,
+238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3,
+156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73,
+7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55,
+187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119,
+189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72,
+116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146,
+123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66,
+134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99,
+152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123,
+62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0,
+116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199,
+147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48,
+252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61,
+90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241,
+48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246,
+183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231,
+185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132,
+53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57,
+150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88,
+154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183,
+205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187,
+219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195,
+194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113,
+137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160,
+5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196,
+216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100,
+95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207,
+161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174,
+21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241,
+254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105,
+118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184,
+60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214,
+197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52,
+93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64,
+237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188,
+9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173,
+6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88,
+42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114,
+142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146,
+151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143,
+67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49,
+93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181,
+164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9,
+128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4,
+3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41,
+80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73,
+173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153,
+145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113,
+187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114,
+76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204,
+110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214,
+128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221,
+237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208,
+218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70,
+206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4,
+26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224,
+107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63,
+150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132,
+214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30,
+251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217,
+5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181,
+74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113,
+9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8,
+7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116,
+57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93,
+13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6,
+157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129,
+69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254,
+251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141,
+231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27,
+245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177,
+6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153,
+54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245,
+219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114,
+234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17,
+52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97,
+215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23,
+8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192,
+203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139,
+231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53,
+173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36,
+8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87,
+193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203,
+104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180,
+50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32,
+106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192,
+3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78,
+129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117,
+196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214,
+12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28,
+9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211,
+108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4,
+67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96,
+224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238,
+239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47,
+53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251,
+159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124,
+234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101,
+128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102,
+94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109,
+59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16,
+92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198,
+224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147,
+198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6,
+159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175,
+225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130,
+60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0,
+2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124,
+10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65,
+75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107,
+245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56,
+156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215,
+179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106,
+45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198,
+174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67,
+160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98,
+178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160,
+86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10,
+198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98,
+152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0,
+134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185,
+251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202,
+124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7,
+101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101,
+68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204,
+73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184,
+188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83,
+174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202,
+144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176,
+206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37,
+79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129,
+150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7,
+219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0,
+166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242,
+27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104,
+164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31,
+183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136,
+186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131,
+97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235,
+154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129,
+23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220,
+51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187,
+16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193,
+126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164,
+81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155,
+150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73,
+250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129,
+145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4,
+195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9,
+8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56,
+68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37,
+13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115,
+1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32,
+210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36,
+136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241,
+70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90,
+182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84,
+190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234,
+59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24,
+136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40,
+141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7,
+17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234,
+202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149,
+109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210,
+197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101,
+170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223,
+121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138,
+109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38,
+100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180,
+110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14,
+12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12,
+117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192,
+16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45,
+47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252,
+5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86,
+94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227,
+229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45,
+0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13,
+177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148,
+90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174,
+53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145,
+120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116,
+49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192,
+64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95,
+9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120,
+134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29,
+111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186,
+235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249,
+122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2,
+111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17,
+10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161,
+201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2,
+66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193,
+32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233,
+98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244,
+12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129,
+133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179,
+121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153,
+223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117,
+131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150,
+63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114,
+91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7,
+149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1,
+32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17,
+111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207,
+194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218,
+123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103,
+25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12,
+246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186,
+242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94,
+223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103,
+229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143,
+6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101,
+10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230,
+159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245,
+55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34,
+49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30,
+68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171,
+238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210,
+205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45,
+191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212,
+185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237,
+177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127,
+130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180,
+208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86,
+31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16,
+62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127,
+104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129,
+68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76,
+235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49,
+24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172,
+131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234,
+109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98,
+33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241,
+248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121,
+99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188,
+83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48,
+89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129,
+197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10,
+137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110,
+10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2,
+68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110,
+70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111,
+130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246,
+101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46,
+161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93,
+155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181,
+67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116,
+229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36,
+120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132,
+132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226,
+61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26,
+137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176,
+101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17,
+125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101,
+108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79,
+44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129,
+151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222,
+125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241,
+89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246,
+251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242,
+246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18,
+192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120,
+18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64,
+66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141,
+196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35,
+195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107,
+109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186,
+17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145,
+232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1,
+18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219,
+111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242,
+80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202,
+19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232,
+70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31,
+221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197,
+35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150,
+53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36,
+196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54,
+190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240,
+194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148,
+222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173,
+153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41,
+80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155,
+218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233,
+121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33,
+81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4,
+43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219,
+1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222,
+4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196,
+123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247,
+67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200,
+48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221,
+181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196,
+19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130,
+66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163,
+0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125,
+174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45,
+223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45,
+1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104,
+6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160,
+188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131,
+176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33,
+202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151,
+150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122,
+234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184,
+87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164,
+128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217,
+173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90,
+2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12,
+144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48,
+136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173,
+55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251,
+253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10,
+191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143,
+65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50,
+88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21,
+192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217,
+0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185,
+194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140,
+138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242,
+207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129,
+50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144,
+176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30,
+137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186,
+158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91,
+91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22,
+8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207,
+123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171,
+47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101,
+93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74,
+162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235,
+137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224,
+57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10,
+212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135,
+94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2,
+12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128,
+200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29,
+216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153,
+216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236,
+158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219,
+115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2,
+240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216,
+195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173,
+243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222,
+115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73,
+32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71,
+31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192,
+33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12,
+60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13,
+219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225,
+173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1,
+141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245,
+103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56,
+78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4,
+137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11,
+28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164,
+46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56,
+19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96,
+112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173,
+253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91,
+241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1,
+200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44,
+222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89,
+25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144,
+46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131,
+133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230,
+85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157,
+161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64,
+194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103,
+180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139,
+161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179,
+77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29,
+232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163,
+107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216,
+233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188,
+123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57,
+94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165,
+231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15,
+46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26,
+125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7,
+130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1,
+7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232,
+70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198,
+15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20,
+207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29,
+6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249,
+180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103,
+219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184,
+175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3,
+20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112,
+12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158,
+219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36,
+123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220,
+115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35,
+202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163,
+213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232,
+54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171,
+18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75,
+75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33,
+100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237,
+78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59,
+230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185,
+241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18,
+12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113,
+47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15,
+96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251,
+1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86,
+114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23,
+181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29,
+40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7,
+193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150,
+203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227,
+61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215,
+215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222,
+133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147,
+0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177,
+45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96,
+88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12,
+27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82,
+193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90,
+102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186,
+242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66,
+110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111,
+255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248,
+175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119,
+186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13,
+2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184,
+131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219,
+15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25,
+28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250,
+104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22,
+74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194,
+142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86,
+62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211,
+109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117,
+251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13,
+188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103,
+5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182,
+220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248,
+64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189,
+173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243,
+199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153,
+42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109,
+164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80,
+209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158,
+131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219,
+181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119,
+180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65,
+107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154,
+84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155,
+81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94,
+5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2,
+14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178,
+244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231,
+90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48,
+58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196,
+149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0,
+224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47,
+40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110,
+35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65,
+5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64,
+128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224,
+81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240,
+42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24,
+168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16,
+38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64,
+136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254,
+65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28,
+167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162,
+251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189,
+220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50,
+125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211,
+0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47,
+141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142,
+240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32,
+243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158,
+4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208,
+1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108,
+149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97,
+64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10,
+52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67,
+160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0,
+22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160,
+40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32,
+248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86,
+249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4,
+222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230,
+188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46,
+239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114,
+76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103,
+68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9,
+138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74,
+149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50,
+40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221,
+12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173,
+41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4,
+94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96,
+16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132,
+101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47,
+98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220,
+226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91,
+150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247,
+172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251,
+58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5,
+106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134,
+132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85,
+66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242,
+32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144,
+180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197,
+102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30,
+120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174,
+101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19,
+32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73,
+75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99,
+244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107,
+253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77,
+98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113,
+214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99,
+210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202,
+82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23,
+81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184,
+215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241,
+38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81,
+241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22,
+152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112,
+229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84,
+74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0,
+161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142,
+139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119,
+101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52,
+202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203,
+61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252,
+184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191,
+21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233,
+212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94,
+64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132,
+190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72,
+196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121,
+17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75,
+90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5,
+2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173,
+197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75,
+112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194,
+232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42,
+157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97,
+116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156,
+119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147,
+250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221,
+175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117,
+8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243,
+151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174,
+27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23,
+163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105,
+144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251,
+24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193,
+130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48,
+21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24,
+24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116,
+90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20,
+165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96,
+60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72,
+186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191,
+63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81,
+229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254,
+231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254,
+97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142,
+222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226,
+166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9,
+9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0,
+43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68,
+43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26,
+96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90,
+186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89,
+143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8,
+24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199,
+120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197,
+249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160,
+246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164,
+62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52,
+191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238,
+221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172,
+107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96,
+220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132,
+22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128,
+97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17,
+4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164,
+165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93,
+59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242,
+200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128,
+17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122,
+46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223,
+182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52,
+40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246,
+182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222,
+247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47,
+93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255,
+223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86,
+191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21,
+94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76,
+229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29,
+215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95,
+246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37,
+24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168,
+12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111,
+202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1,
+28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89,
+150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121,
+251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191,
+249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142,
+127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42,
+19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39,
+18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246,
+90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226,
+57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171,
+97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74,
+199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71,
+116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251,
+121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40,
+3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179,
+40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111,
+41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123,
+98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107,
+23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173,
+223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26,
+223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71,
+89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134,
+192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130,
+254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254,
+197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150,
+97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245,
+101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241,
+130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0,
+65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103,
+159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162,
+140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27,
+0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128,
+5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183,
+190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18,
+126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128,
+217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239,
+197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96,
+240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60,
+145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247,
+2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82,
+144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128,
+65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24,
+140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49,
+212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77,
+51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199,
+72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224,
+165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16,
+90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134,
+27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227,
+29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49,
+196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141,
+140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4,
+14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144,
+140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81,
+2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96,
+105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75,
+76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169,
+181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130,
+6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4,
+67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169,
+129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2,
+134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91,
+191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72,
+40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202,
+241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10,
+165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51,
+42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224,
+69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107,
+136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192,
+64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46,
+5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11,
+65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94,
+68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140,
+83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119,
+93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118,
+183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247,
+208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26,
+140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0,
+134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5,
+253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136,
+64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3,
+173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116,
+0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190,
+193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114,
+4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34,
+45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166,
+139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137,
+120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65,
+186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173,
+101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51,
+3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80,
+68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178,
+81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120,
+16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28,
+64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60,
+146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42,
+210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156,
+92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21,
+130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80,
+160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149,
+50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166,
+117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175,
+132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70,
+169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214,
+129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128,
+131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106,
+29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221,
+237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165,
+214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16,
+159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239,
+160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245,
+246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114,
+70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47,
+17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66,
+142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1,
+14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5,
+5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32,
+81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90,
+166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46,
+0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180,
+150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135,
+85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37,
+120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233,
+94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160,
+242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210,
+209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96,
+145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109,
+3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160,
+54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91,
+92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20,
+32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49,
+240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33,
+81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142,
+50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115,
+41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220,
+156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3,
+5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160,
+75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230,
+74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40,
+65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3,
+10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40,
+210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99,
+175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226,
+17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4,
+47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54,
+227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213,
+5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118,
+128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77,
+148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70,
+62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54,
+149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235,
+26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98,
+105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193,
+62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32,
+1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50,
+128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102,
+186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75,
+24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77,
+242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151,
+240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123,
+192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51,
+203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28,
+1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74,
+143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34,
+90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230,
+254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36,
+184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193,
+75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64,
+68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159,
+18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17,
+111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71,
+70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105,
+160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117,
+240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178,
+151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34,
+196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164,
+184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150,
+93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222,
+4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34,
+64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152,
+153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84,
+46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140,
+27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40,
+150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163,
+30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3,
+153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60,
+5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112,
+112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172,
+13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208,
+209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236,
+139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68,
+13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212,
+94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49,
+98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225,
+16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186,
+134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94,
+46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24,
+196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217,
+237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62,
+17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23,
+36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228,
+57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61,
+228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36,
+72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98,
+130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138,
+232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17,
+111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64,
+145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178,
+205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109,
+121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86,
+227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49,
+34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144,
+40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232,
+155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83,
+235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29,
+235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102,
+246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151,
+16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229,
+48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187,
+29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164,
+131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128,
+4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143,
+135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240,
+210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9,
+200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208,
+242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25,
+27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60,
+90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132,
+60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103,
+145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176,
+14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143,
+229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235,
+133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97,
+20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27,
+178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177,
+169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147,
+40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6,
+20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112,
+176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6,
+129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171,
+102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72,
+240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200,
+155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242,
+178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101,
+224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49,
+173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80,
+0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126,
+144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176,
+128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104,
+197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56,
+103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215,
+254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250,
+130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174,
+68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74,
+80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16,
+19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24,
+0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229,
+193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216,
+216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192,
+37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80,
+112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89,
+247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115,
+151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142,
+190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209,
+73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194,
+160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227,
+224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92,
+195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187,
+150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16,
+242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7,
+20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144,
+48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67,
+100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15,
+20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188,
+11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168,
+31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251,
+181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232,
+190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240,
+8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190,
+0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202,
+239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195,
+112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235,
+101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248,
+4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226,
+241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16,
+225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52,
+117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143,
+64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28,
+90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208,
+200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172,
+108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84,
+68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18,
+18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248,
+4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51,
+26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108,
+235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183,
+2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64,
+170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112,
+83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1,
+67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91,
+154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14,
+94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176,
+157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194,
+58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167,
+188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186,
+35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203,
+33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37,
+239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204,
+43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15,
+14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225,
+108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75,
+149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1,
+18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160,
+182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112,
+62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22,
+235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13,
+131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238,
+35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12,
+222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114,
+93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17,
+72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181,
+181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89,
+123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33,
+90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30,
+128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48,
+116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48,
+62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103,
+56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131,
+37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33,
+195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202,
+200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151,
+170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190,
+68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126,
+45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149,
+96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144,
+1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177,
+11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23,
+98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120,
+101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91,
+2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108,
+149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168,
+1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162,
+246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16,
+103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15,
+3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7,
+80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237,
+179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199,
+203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24,
+168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245,
+251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138,
+100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12,
+34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7,
+9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237,
+183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142,
+51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96,
+66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134,
+29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200,
+241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233,
+130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53,
+36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167,
+18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169,
+37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12,
+223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225,
+39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1,
+97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134,
+94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169,
+242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110,
+89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161,
+60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150,
+140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157,
+48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24,
+136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34,
+202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227,
+45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220,
+95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126,
+91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240,
+98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47,
+33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138,
+192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110,
+189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42,
+157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141,
+26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208,
+151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195,
+0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94,
+133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158,
+93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46,
+7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121,
+210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6,
+20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250,
+122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148,
+87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191,
+255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205,
+192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69,
+208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65,
+194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69,
+186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181,
+209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121,
+202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89,
+217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1,
+47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38,
+162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28,
+183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208,
+160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224,
+74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65,
+48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247,
+252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144,
+128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23,
+35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81,
+238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216,
+47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24,
+85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127,
+26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229,
+115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131,
+68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164,
+178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210,
+245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5,
+6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10,
+6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97,
+244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126,
+75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81,
+226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153,
+84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157,
+185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52,
+72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250,
+96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65,
+140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203,
+91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192,
+238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147,
+170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6,
+131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37,
+48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2,
+138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236,
+104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150,
+111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255,
+245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203,
+68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86,
+13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145,
+49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18,
+53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102,
+127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178,
+175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229,
+117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47,
+255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120,
+70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191,
+111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102,
+238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128,
+162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40,
+181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22,
+53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120,
+133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52,
+127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59,
+54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25,
+250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19,
+9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165,
+217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197,
+36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34,
+176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98,
+252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0,
+248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29,
+12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115,
+159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120,
+179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230,
+33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19,
+151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82,
+160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62,
+9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232,
+3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26,
+249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155,
+223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14,
+10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156,
+12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214,
+188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195,
+170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88,
+80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134,
+4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45,
+75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0,
+34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119,
+126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221,
+41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30,
+92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195,
+212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239,
+5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145,
+150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56,
+84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129,
+132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131,
+5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196,
+53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127,
+253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150,
+188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176,
+179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24,
+121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140,
+120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143,
+73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86,
+134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26,
+32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88,
+103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20,
+246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91,
+119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188,
+132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121,
+77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185,
+22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167,
+223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181,
+144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18,
+222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1,
+162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108,
+7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236,
+186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105,
+126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31,
+100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25,
+166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75,
+119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208,
+189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182,
+106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94,
+246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168,
+1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210,
+155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0,
+0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207,
+225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221,
+6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60,
+5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77,
+67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12,
+158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229,
+11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222,
+69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180,
+224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15,
+65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143,
+128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20,
+248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195,
+167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37,
+24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108,
+213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241,
+53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122,
+127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93,
+135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225,
+78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1,
+2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0,
+65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238,
+9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152,
+239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96,
+232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46,
+33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182,
+37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181,
+30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104,
+89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242,
+16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25,
+204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32,
+142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131,
+46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48,
+100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18,
+132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165,
+228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165,
+79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32,
+30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45,
+62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188,
+2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4,
+22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18,
+8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121,
+8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17,
+37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141,
+44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136,
+81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150,
+158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1,
+6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40,
+39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240,
+16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24,
+2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250,
+247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20,
+196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158,
+108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27,
+186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165,
+218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101,
+167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111,
+3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12,
+61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46,
+67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33,
+40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161,
+134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87,
+65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199,
+123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199,
+184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6,
+112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8,
+70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50,
+134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67,
+48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59,
+136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171,
+143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190,
+4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20,
+39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114,
+253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208,
+35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221,
+6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197,
+210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8,
+1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145,
+3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184,
+251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61,
+154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46,
+242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164,
+219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83,
+226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177,
+236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203,
+40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18,
+84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32,
+196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50,
+252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98,
+217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114,
+148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91,
+54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128,
+90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201,
+73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67,
+48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209,
+4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228,
+187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66,
+38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212,
+65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12,
+208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5,
+48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31,
+16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128,
+96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116,
+23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114,
+223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127,
+38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0,
+131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196,
+17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30,
+66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204,
+69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16,
+74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97,
+105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223,
+89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121,
+243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33,
+67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94,
+66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110,
+190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69,
+22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228,
+40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129,
+197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61,
+132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229,
+49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151,
+206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237,
+253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59,
+0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36,
+150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27,
+168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115,
+225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133,
+60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134,
+29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35,
+88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236,
+25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227,
+100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242,
+166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96,
+144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203,
+138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234,
+254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61,
+8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12,
+37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202,
+23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6,
+89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147,
+56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185,
+190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144,
+245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159,
+249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226,
+87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232,
+91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59,
+223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12,
+178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62,
+241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210,
+72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253,
+145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114,
+255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82,
+52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107,
+127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142,
+126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124,
+89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34,
+179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58,
+64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81,
+213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55,
+253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39,
+141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39,
+105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234,
+237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251,
+178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46,
+58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234,
+197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207,
+23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23,
+13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125,
+199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164,
+108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63,
+249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28,
+242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63,
+251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174,
+101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50,
+77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88,
+176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135,
+31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62,
+188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227,
+145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35,
+245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244,
+138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107,
+115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71,
+252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121,
+118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145,
+89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26,
+169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63,
+63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249,
+230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219,
+77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116,
+49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241,
+108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242,
+93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238,
+119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54,
+52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89,
+174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127,
+169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195,
+31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241,
+181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125,
+194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42,
+231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146,
+178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231,
+130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162,
+31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70,
+178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252,
+193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47,
+109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113,
+12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44,
+251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92,
+124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166,
+169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167,
+105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255,
+230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222,
+151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151,
+53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167,
+175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151,
+230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223,
+252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143,
+229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250,
+11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164,
+253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116,
+116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124,
+234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254,
+38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211,
+171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158,
+205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153,
+117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254,
+244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189,
+146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79,
+92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27,
+40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246,
+222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163,
+61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113,
+57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98,
+76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216,
+209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101,
+201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39,
+53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116,
+218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142,
+61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117,
+215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113,
+95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30,
+242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146,
+204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222,
+172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103,
+118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160,
+67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231,
+210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9,
+199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141,
+75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132,
+196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143,
+229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127,
+246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73,
+9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92,
+84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234,
+171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175,
+186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95,
+127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255,
+249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102,
+165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236,
+193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243,
+233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6,
+202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254,
+200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123,
+23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21,
+176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224,
+246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59,
+189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97,
+24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88,
+238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234,
+244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159,
+242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79,
+218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178,
+57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249,
+225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243,
+201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229,
+144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151,
+40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215,
+237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182,
+75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190,
+86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231,
+101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174,
+248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214,
+213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11,
+9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163,
+78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117,
+175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115,
+202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199,
+57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217,
+119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111,
+183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28,
+223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178,
+169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23,
+95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128,
+230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87,
+117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188,
+119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248,
+212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223,
+112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23,
+29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36,
+120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25,
+159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241,
+164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175,
+121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246,
+189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126,
+206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135,
+63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106,
+201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128,
+81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245,
+167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245,
+171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196,
+57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226,
+21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217,
+186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183,
+93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225,
+71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94,
+205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238,
+95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35,
+217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210,
+91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143,
+61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67,
+75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204,
+233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249,
+17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215,
+183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89,
+115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191,
+249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229,
+202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59,
+50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37,
+186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171,
+150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184,
+251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247,
+176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253,
+254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112,
+252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226,
+65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120,
+78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239,
+123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77,
+205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117,
+175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208,
+55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19,
+142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154,
+24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71,
+126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164,
+251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4,
+102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64,
+124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4,
+184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210,
+124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194,
+57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187,
+126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178,
+92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124,
+223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186,
+219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163,
+148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174,
+67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119,
+190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75,
+51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224,
+50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238,
+218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82,
+121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27,
+174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235,
+188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45,
+150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249,
+218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27,
+218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185,
+205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167,
+240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254,
+245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102,
+62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181,
+204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174,
+181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68,
+89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60,
+185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205,
+21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100,
+210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222,
+220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180,
+17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253,
+225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254,
+130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41,
+31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35,
+80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109,
+154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178,
+93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159,
+241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144,
+32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239,
+162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222,
+1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26,
+38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245,
+133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70,
+123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35,
+30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200,
+253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32,
+233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155,
+119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179,
+196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223,
+252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88,
+74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142,
+208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94,
+255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177,
+55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124,
+37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78,
+250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226,
+164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240,
+88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196,
+194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195,
+228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138,
+139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245,
+186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44,
+165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27,
+216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63,
+188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153,
+119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185,
+22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229,
+148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33,
+35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120,
+208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42,
+171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124,
+35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189,
+77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3,
+183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158,
+112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122,
+74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0,
+79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106,
+186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236,
+71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83,
+34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201,
+204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154,
+152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131,
+138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63,
+238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94,
+15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135,
+60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244,
+53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239,
+219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90,
+235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124,
+228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24,
+209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72,
+136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191,
+108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179,
+253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229,
+184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167,
+207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230,
+54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175,
+75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207,
+27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151,
+63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134,
+204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64,
+223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95,
+191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226,
+213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185,
+249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244,
+39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92,
+190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127,
+159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226,
+33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183,
+118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65,
+162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25,
+73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226,
+161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203,
+81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26,
+52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187,
+90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149,
+46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146,
+68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203,
+197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49,
+34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203,
+172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14,
+41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108,
+47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249,
+251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168,
+147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73,
+40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161,
+107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123,
+151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127,
+209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29,
+115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125,
+11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182,
+31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198,
+90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213,
+137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103,
+181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181,
+5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39,
+157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161,
+78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107,
+72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152,
+49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157,
+114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223,
+236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119,
+196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205,
+111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253,
+241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183,
+93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251,
+100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198,
+191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81,
+251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183,
+2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146,
+125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165,
+243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62,
+196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51,
+199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133,
+237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91,
+172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153,
+166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80,
+110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93,
+160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179,
+222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247,
+7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190,
+253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192,
+72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143,
+26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215,
+236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67,
+162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171,
+27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12,
+78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147,
+116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253,
+53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241,
+69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17,
+167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159,
+28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254,
+199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186,
+6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61,
+253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235,
+136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136,
+70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162,
+58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103,
+156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246,
+137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181,
+32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161,
+127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197,
+139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104,
+150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202,
+36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185,
+246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118,
+240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253,
+170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223,
+203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89,
+198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168,
+239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62,
+119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244,
+62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141,
+212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253,
+67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124,
+244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94,
+246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187,
+61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142,
+228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241,
+201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242,
+217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176,
+101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220,
+255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190,
+109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204,
+67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5,
+99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168,
+107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137,
+113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254,
+73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78,
+219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50,
+105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90,
+110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172,
+244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144,
+114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234,
+253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229,
+3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217,
+98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127,
+121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23,
+191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6,
+234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191,
+205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212,
+219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49,
+71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159,
+249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89,
+152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100,
+165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253,
+97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206,
+52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224,
+79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119,
+224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103,
+188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242,
+75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246,
+183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38,
+29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190,
+243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191,
+246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106,
+163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26,
+164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223,
+130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173,
+69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237,
+215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178,
+186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112,
+144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233,
+106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190,
+133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201,
+32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166,
+155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119,
+223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242,
+212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35,
+101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43,
+41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100,
+107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173,
+181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239,
+190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74,
+109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45,
+125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111,
+134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7,
+217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110,
+47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187,
+110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105,
+144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169,
+219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231,
+174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124,
+6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53,
+82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96,
+240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38,
+165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245,
+248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30,
+211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44,
+153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55,
+253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95,
+45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26,
+169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238,
+203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6,
+89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65,
+6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65,
+6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32,
+131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131,
+12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0,
+0,0,0,73,69,78,68,174,66,96,130};
+
+int splash_image8_sz = sizeof(splash_image8);
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage09.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage09.c
new file mode 100644
index 0000000000..dc5fa9bd74
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage09.c
@@ -0,0 +1,2167 @@
+const unsigned char splash_image9[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82,
+146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,
+43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7,
+184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206,
+57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88,
+98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68,
+122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32,
+88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214,
+222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152,
+99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12,
+50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108,
+115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218,
+182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104,
+115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124,
+194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180,
+103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36,
+182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149,
+110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201,
+37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57,
+21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126,
+175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141,
+58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108,
+236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44,
+203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85,
+89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149,
+223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88,
+46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157,
+86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165,
+239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201,
+132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89,
+38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109,
+174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53,
+43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9,
+182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164,
+41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90,
+185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226,
+186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223,
+111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155,
+120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5,
+87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7,
+157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150,
+231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164,
+41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42,
+183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251,
+157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75,
+47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76,
+203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184,
+86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229,
+1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153,
+199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198,
+158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212,
+247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182,
+167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157,
+246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182,
+196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215,
+185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29,
+72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152,
+116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152,
+140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73,
+134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76,
+39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233,
+242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174,
+61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75,
+63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253,
+48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175,
+16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172,
+133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197,
+117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216,
+203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249,
+94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237,
+241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64,
+110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34,
+93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53,
+35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185,
+245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191,
+58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186,
+173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157,
+59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222,
+163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115,
+174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66,
+224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4,
+90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222,
+71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231,
+94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233,
+170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182,
+82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148,
+114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175,
+200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101,
+62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168,
+82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3,
+36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137,
+173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45,
+3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12,
+50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,
+200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200,
+84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51,
+196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86,
+195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247,
+122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162,
+139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91,
+88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191,
+85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159,
+105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207,
+53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211,
+142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81,
+94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182,
+41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131,
+236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27,
+109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147,
+5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151,
+140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188,
+137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173,
+166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215,
+1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61,
+246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203,
+97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181,
+0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233,
+194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92,
+69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102,
+207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226,
+124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59,
+245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103,
+88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27,
+249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73,
+180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28,
+166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239,
+180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86,
+129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254,
+190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250,
+45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83,
+116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227,
+231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223,
+178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28,
+166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254,
+58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73,
+149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89,
+231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215,
+195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201,
+211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171,
+42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50,
+215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235,
+201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152,
+6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93,
+178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255,
+111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235,
+141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159,
+233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206,
+199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116,
+137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223,
+92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49,
+25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255,
+143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147,
+209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152,
+76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79,
+207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108,
+123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231,
+99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252,
+242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12,
+245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212,
+109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220,
+181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167,
+44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219,
+61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95,
+46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99,
+73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214,
+231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73,
+101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142,
+46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45,
+24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46,
+60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122,
+142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167,
+147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140,
+227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140,
+109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249,
+157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55,
+231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178,
+184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69,
+50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241,
+107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120,
+94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165,
+190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246,
+90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211,
+242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4,
+186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61,
+200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25,
+100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,
+170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,
+12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,
+144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,
+24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,
+100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100,
+144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98,
+123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205,
+55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28,
+179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252,
+228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186,
+230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215,
+94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226,
+94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119,
+148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75,
+141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69,
+115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1,
+7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233,
+159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255,
+220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204,
+230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37,
+134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75,
+35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47,
+236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188,
+121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0,
+120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249,
+200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183,
+230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185,
+187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210,
+208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243,
+165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135,
+62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85,
+243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158,
+6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47,
+126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205,
+126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130,
+14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4,
+10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199,
+31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108,
+118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96,
+220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196,
+39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45,
+111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30,
+52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200,
+0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94,
+121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249,
+206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243,
+156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176,
+143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232,
+106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223,
+222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239,
+194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231,
+53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0,
+192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233,
+174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231,
+55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121,
+195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125,
+112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19,
+225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158,
+244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92,
+90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110,
+89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70,
+16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234,
+0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199,
+152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127,
+248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239,
+127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48,
+240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242,
+172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187,
+135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214,
+179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99,
+216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143,
+187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242,
+230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7,
+54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64,
+193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70,
+9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182,
+223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223,
+119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156,
+114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93,
+239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2,
+21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38,
+3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192,
+82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135,
+235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206,
+43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8,
+12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184,
+227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221,
+3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244,
+162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199,
+59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73,
+122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113,
+223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100,
+125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120,
+5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103,
+116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205,
+43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68,
+206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80,
+28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47,
+40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241,
+238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87,
+190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251,
+187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88,
+96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119,
+12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39,
+3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237,
+186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215,
+45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74,
+6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88,
+3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204,
+140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15,
+12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112,
+140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167,
+231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54,
+239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24,
+129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9,
+32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128,
+65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49,
+195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178,
+107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76,
+2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93,
+215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192,
+1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105,
+128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2,
+129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175,
+118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226,
+73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80,
+136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137,
+39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138,
+87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61,
+96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121,
+1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184,
+23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249,
+17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20,
+32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144,
+95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34,
+112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66,
+87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215,
+158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192,
+72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18,
+149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222,
+243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210,
+1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181,
+46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104,
+33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160,
+0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242,
+1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250,
+210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113,
+201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114,
+101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189,
+205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195,
+72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163,
+214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217,
+157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51,
+13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166,
+0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3,
+120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184,
+3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58,
+206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215,
+126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115,
+207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114,
+100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217,
+240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117,
+21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187,
+48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185,
+93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3,
+34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202,
+0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199,
+22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70,
+204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234,
+122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154,
+115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205,
+197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241,
+227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8,
+117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123,
+220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70,
+3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206,
+189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27,
+215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45,
+94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97,
+255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116,
+215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19,
+182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158,
+128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118,
+93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72,
+172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231,
+243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212,
+246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5,
+11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235,
+152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54,
+251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15,
+1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109,
+154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183,
+235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186,
+235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184,
+199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204,
+75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225,
+93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159,
+255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130,
+144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241,
+30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97,
+130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104,
+189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111,
+128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215,
+127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6,
+125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9,
+221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178,
+221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69,
+157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102,
+180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225,
+58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60,
+10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10,
+210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133,
+152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16,
+27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84,
+231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162,
+23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215,
+10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101,
+40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139,
+115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144,
+88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93,
+9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66,
+43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234,
+155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60,
+9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26,
+20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115,
+206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7,
+20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136,
+238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3,
+156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73,
+7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55,
+187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119,
+189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72,
+116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146,
+123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66,
+134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99,
+152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123,
+62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0,
+116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199,
+147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48,
+252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61,
+90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241,
+48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246,
+183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231,
+185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132,
+53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57,
+150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88,
+154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183,
+205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187,
+219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195,
+194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113,
+137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160,
+5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196,
+216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100,
+95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207,
+161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174,
+21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241,
+254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105,
+118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184,
+60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214,
+197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52,
+93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64,
+237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188,
+9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173,
+6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88,
+42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114,
+142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146,
+151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143,
+67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49,
+93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181,
+164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9,
+128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4,
+3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41,
+80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73,
+173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153,
+145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113,
+187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114,
+76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204,
+110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214,
+128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221,
+237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208,
+218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70,
+206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4,
+26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224,
+107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63,
+150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132,
+214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30,
+251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217,
+5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181,
+74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113,
+9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8,
+7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116,
+57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93,
+13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6,
+157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129,
+69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254,
+251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141,
+231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27,
+245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177,
+6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153,
+54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245,
+219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114,
+234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17,
+52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97,
+215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23,
+8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192,
+203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139,
+231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53,
+173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36,
+8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87,
+193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203,
+104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180,
+50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32,
+106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192,
+3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78,
+129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117,
+196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214,
+12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28,
+9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211,
+108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4,
+67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96,
+224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238,
+239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47,
+53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251,
+159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124,
+234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101,
+128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102,
+94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109,
+59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16,
+92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198,
+224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147,
+198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6,
+159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175,
+225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130,
+60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0,
+2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124,
+10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65,
+75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107,
+245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56,
+156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215,
+179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106,
+45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198,
+174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67,
+160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98,
+178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160,
+86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10,
+198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98,
+152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0,
+134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185,
+251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202,
+124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7,
+101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101,
+68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204,
+73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184,
+188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83,
+174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202,
+144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176,
+206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37,
+79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129,
+150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7,
+219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0,
+166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242,
+27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104,
+164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31,
+183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136,
+186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131,
+97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235,
+154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129,
+23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220,
+51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187,
+16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193,
+126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164,
+81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155,
+150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73,
+250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129,
+145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4,
+195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9,
+8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56,
+68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37,
+13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115,
+1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32,
+210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36,
+136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241,
+70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90,
+182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84,
+190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234,
+59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24,
+136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40,
+141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7,
+17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234,
+202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149,
+109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210,
+197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101,
+170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223,
+121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138,
+109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38,
+100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180,
+110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14,
+12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12,
+117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192,
+16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45,
+47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252,
+5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86,
+94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227,
+229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45,
+0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13,
+177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148,
+90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174,
+53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145,
+120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116,
+49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192,
+64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95,
+9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120,
+134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29,
+111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186,
+235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249,
+122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2,
+111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17,
+10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161,
+201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2,
+66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193,
+32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233,
+98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244,
+12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129,
+133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179,
+121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153,
+223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117,
+131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150,
+63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114,
+91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7,
+149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1,
+32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17,
+111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207,
+194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218,
+123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103,
+25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12,
+246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186,
+242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94,
+223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103,
+229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143,
+6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101,
+10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230,
+159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245,
+55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34,
+49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30,
+68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171,
+238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210,
+205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45,
+191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212,
+185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237,
+177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127,
+130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180,
+208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86,
+31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16,
+62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127,
+104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129,
+68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76,
+235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49,
+24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172,
+131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234,
+109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98,
+33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241,
+248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121,
+99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188,
+83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48,
+89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129,
+197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10,
+137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110,
+10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2,
+68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110,
+70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111,
+130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246,
+101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46,
+161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93,
+155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181,
+67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116,
+229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36,
+120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132,
+132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226,
+61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26,
+137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176,
+101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17,
+125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101,
+108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79,
+44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129,
+151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222,
+125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241,
+89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246,
+251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242,
+246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18,
+192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120,
+18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64,
+66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141,
+196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35,
+195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107,
+109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186,
+17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145,
+232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1,
+18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219,
+111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242,
+80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202,
+19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232,
+70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31,
+221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197,
+35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150,
+53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36,
+196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54,
+190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240,
+194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148,
+222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173,
+153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41,
+80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155,
+218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233,
+121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33,
+81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4,
+43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219,
+1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222,
+4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196,
+123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247,
+67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200,
+48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221,
+181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196,
+19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130,
+66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163,
+0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125,
+174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45,
+223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45,
+1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104,
+6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160,
+188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131,
+176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33,
+202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151,
+150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122,
+234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184,
+87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164,
+128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217,
+173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90,
+2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12,
+144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48,
+136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173,
+55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251,
+253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10,
+191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143,
+65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50,
+88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21,
+192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217,
+0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185,
+194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140,
+138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242,
+207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129,
+50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144,
+176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30,
+137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186,
+158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91,
+91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22,
+8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207,
+123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171,
+47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101,
+93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74,
+162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235,
+137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224,
+57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10,
+212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135,
+94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2,
+12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128,
+200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29,
+216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153,
+216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236,
+158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219,
+115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2,
+240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216,
+195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173,
+243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222,
+115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73,
+32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71,
+31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192,
+33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12,
+60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13,
+219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225,
+173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1,
+141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245,
+103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56,
+78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4,
+137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11,
+28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164,
+46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56,
+19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96,
+112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173,
+253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91,
+241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1,
+200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44,
+222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89,
+25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144,
+46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131,
+133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230,
+85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157,
+161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64,
+194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103,
+180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139,
+161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179,
+77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29,
+232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163,
+107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216,
+233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188,
+123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57,
+94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165,
+231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15,
+46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26,
+125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7,
+130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1,
+7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232,
+70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198,
+15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20,
+207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29,
+6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249,
+180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103,
+219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184,
+175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3,
+20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112,
+12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158,
+219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36,
+123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220,
+115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35,
+202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163,
+213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232,
+54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171,
+18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75,
+75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33,
+100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237,
+78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59,
+230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185,
+241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18,
+12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113,
+47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15,
+96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251,
+1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86,
+114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23,
+181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29,
+40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7,
+193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150,
+203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227,
+61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215,
+215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222,
+133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147,
+0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177,
+45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96,
+88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12,
+27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82,
+193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90,
+102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186,
+242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66,
+110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111,
+255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248,
+175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119,
+186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13,
+2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184,
+131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219,
+15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25,
+28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250,
+104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22,
+74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194,
+142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86,
+62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211,
+109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117,
+251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13,
+188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103,
+5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182,
+220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248,
+64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189,
+173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243,
+199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153,
+42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109,
+164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80,
+209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158,
+131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219,
+181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119,
+180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65,
+107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154,
+84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155,
+81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94,
+5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2,
+14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178,
+244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231,
+90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48,
+58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196,
+149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0,
+224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47,
+40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110,
+35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65,
+5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64,
+128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224,
+81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240,
+42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24,
+168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16,
+38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64,
+136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254,
+65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28,
+167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162,
+251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189,
+220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50,
+125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211,
+0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47,
+141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142,
+240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32,
+243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158,
+4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208,
+1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108,
+149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97,
+64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10,
+52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67,
+160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0,
+22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160,
+40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32,
+248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86,
+249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4,
+222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230,
+188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46,
+239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114,
+76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103,
+68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9,
+138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74,
+149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50,
+40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221,
+12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173,
+41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4,
+94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96,
+16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132,
+101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47,
+98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220,
+226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91,
+150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247,
+172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251,
+58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5,
+106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134,
+132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85,
+66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242,
+32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144,
+180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197,
+102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30,
+120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174,
+101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19,
+32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73,
+75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99,
+244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107,
+253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77,
+98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113,
+214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99,
+210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202,
+82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23,
+81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184,
+215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241,
+38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81,
+241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22,
+152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112,
+229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84,
+74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0,
+161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142,
+139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119,
+101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52,
+202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203,
+61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252,
+184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191,
+21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233,
+212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94,
+64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132,
+190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72,
+196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121,
+17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75,
+90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5,
+2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173,
+197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75,
+112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194,
+232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42,
+157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97,
+116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156,
+119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147,
+250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221,
+175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117,
+8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243,
+151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174,
+27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23,
+163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105,
+144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251,
+24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193,
+130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48,
+21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24,
+24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116,
+90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20,
+165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96,
+60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72,
+186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191,
+63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81,
+229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254,
+231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254,
+97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142,
+222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226,
+166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9,
+9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0,
+43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68,
+43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26,
+96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90,
+186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89,
+143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8,
+24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199,
+120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197,
+249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160,
+246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164,
+62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52,
+191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238,
+221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172,
+107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96,
+220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132,
+22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128,
+97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17,
+4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164,
+165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93,
+59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242,
+200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128,
+17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122,
+46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223,
+182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52,
+40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246,
+182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222,
+247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47,
+93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255,
+223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86,
+191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21,
+94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76,
+229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29,
+215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95,
+246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37,
+24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168,
+12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111,
+202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1,
+28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89,
+150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121,
+251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191,
+249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142,
+127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42,
+19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39,
+18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246,
+90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226,
+57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171,
+97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74,
+199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71,
+116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251,
+121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40,
+3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179,
+40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111,
+41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123,
+98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107,
+23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173,
+223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26,
+223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71,
+89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134,
+192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130,
+254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254,
+197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150,
+97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245,
+101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241,
+130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0,
+65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103,
+159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162,
+140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27,
+0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128,
+5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183,
+190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18,
+126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128,
+217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239,
+197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96,
+240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60,
+145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247,
+2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82,
+144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128,
+65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24,
+140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49,
+212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77,
+51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199,
+72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224,
+165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16,
+90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134,
+27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227,
+29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49,
+196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141,
+140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4,
+14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144,
+140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81,
+2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96,
+105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75,
+76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169,
+181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130,
+6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4,
+67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169,
+129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2,
+134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91,
+191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72,
+40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202,
+241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10,
+165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51,
+42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224,
+69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107,
+136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192,
+64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46,
+5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11,
+65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94,
+68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140,
+83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119,
+93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118,
+183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247,
+208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26,
+140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0,
+134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5,
+253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136,
+64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3,
+173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116,
+0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190,
+193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114,
+4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34,
+45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166,
+139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137,
+120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65,
+186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173,
+101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51,
+3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80,
+68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178,
+81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120,
+16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28,
+64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60,
+146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42,
+210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156,
+92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21,
+130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80,
+160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149,
+50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166,
+117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175,
+132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70,
+169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214,
+129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128,
+131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106,
+29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221,
+237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165,
+214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16,
+159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239,
+160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245,
+246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114,
+70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47,
+17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66,
+142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1,
+14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5,
+5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32,
+81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90,
+166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46,
+0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180,
+150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135,
+85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37,
+120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233,
+94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160,
+242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210,
+209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96,
+145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109,
+3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160,
+54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91,
+92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20,
+32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49,
+240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33,
+81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142,
+50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115,
+41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220,
+156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3,
+5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160,
+75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230,
+74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40,
+65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3,
+10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40,
+210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99,
+175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226,
+17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4,
+47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54,
+227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213,
+5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118,
+128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77,
+148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70,
+62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54,
+149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235,
+26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98,
+105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193,
+62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32,
+1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50,
+128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102,
+186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75,
+24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77,
+242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151,
+240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123,
+192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51,
+203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28,
+1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74,
+143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34,
+90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230,
+254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36,
+184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193,
+75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64,
+68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159,
+18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17,
+111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71,
+70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105,
+160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117,
+240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178,
+151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34,
+196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164,
+184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150,
+93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222,
+4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34,
+64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152,
+153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84,
+46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140,
+27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40,
+150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163,
+30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3,
+153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60,
+5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112,
+112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172,
+13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208,
+209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236,
+139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68,
+13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212,
+94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49,
+98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225,
+16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186,
+134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94,
+46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24,
+196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217,
+237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62,
+17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23,
+36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228,
+57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61,
+228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36,
+72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98,
+130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138,
+232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17,
+111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64,
+145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178,
+205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109,
+121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86,
+227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49,
+34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144,
+40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232,
+155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83,
+235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29,
+235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102,
+246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151,
+16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229,
+48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187,
+29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164,
+131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128,
+4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143,
+135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240,
+210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9,
+200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208,
+242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25,
+27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60,
+90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132,
+60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103,
+145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176,
+14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143,
+229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235,
+133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97,
+20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27,
+178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177,
+169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147,
+40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6,
+20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112,
+176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6,
+129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171,
+102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72,
+240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200,
+155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242,
+178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101,
+224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49,
+173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80,
+0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126,
+144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176,
+128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104,
+197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56,
+103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215,
+254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250,
+130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174,
+68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74,
+80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16,
+19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24,
+0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229,
+193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216,
+216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192,
+37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80,
+112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89,
+247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115,
+151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142,
+190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209,
+73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194,
+160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227,
+224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92,
+195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187,
+150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16,
+242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7,
+20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144,
+48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67,
+100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15,
+20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188,
+11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168,
+31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251,
+181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232,
+190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240,
+8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190,
+0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202,
+239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195,
+112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235,
+101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248,
+4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226,
+241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16,
+225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52,
+117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143,
+64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28,
+90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208,
+200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172,
+108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84,
+68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18,
+18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248,
+4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51,
+26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108,
+235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183,
+2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64,
+170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112,
+83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1,
+67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91,
+154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14,
+94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176,
+157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194,
+58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167,
+188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186,
+35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203,
+33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37,
+239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204,
+43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15,
+14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225,
+108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75,
+149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1,
+18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160,
+182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112,
+62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22,
+235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13,
+131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238,
+35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12,
+222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114,
+93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17,
+72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181,
+181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89,
+123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33,
+90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30,
+128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48,
+116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48,
+62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103,
+56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131,
+37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33,
+195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202,
+200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151,
+170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190,
+68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126,
+45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149,
+96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144,
+1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177,
+11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23,
+98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120,
+101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91,
+2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108,
+149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168,
+1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162,
+246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16,
+103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15,
+3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7,
+80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237,
+179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199,
+203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24,
+168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245,
+251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138,
+100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12,
+34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7,
+9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237,
+183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142,
+51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96,
+66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134,
+29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200,
+241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233,
+130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53,
+36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167,
+18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169,
+37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12,
+223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225,
+39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1,
+97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134,
+94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169,
+242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110,
+89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161,
+60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150,
+140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157,
+48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24,
+136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34,
+202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227,
+45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220,
+95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126,
+91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240,
+98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47,
+33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138,
+192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110,
+189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42,
+157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141,
+26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208,
+151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195,
+0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94,
+133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158,
+93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46,
+7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121,
+210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6,
+20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250,
+122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148,
+87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191,
+255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205,
+192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69,
+208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65,
+194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69,
+186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181,
+209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121,
+202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89,
+217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1,
+47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38,
+162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28,
+183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208,
+160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224,
+74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65,
+48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247,
+252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144,
+128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23,
+35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81,
+238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216,
+47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24,
+85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127,
+26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229,
+115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131,
+68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164,
+178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210,
+245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5,
+6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10,
+6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97,
+244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126,
+75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81,
+226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153,
+84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157,
+185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52,
+72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250,
+96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65,
+140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203,
+91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192,
+238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147,
+170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6,
+131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37,
+48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2,
+138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236,
+104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150,
+111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255,
+245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203,
+68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86,
+13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145,
+49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18,
+53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102,
+127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178,
+175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229,
+117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47,
+255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120,
+70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191,
+111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102,
+238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128,
+162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40,
+181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22,
+53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120,
+133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52,
+127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59,
+54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25,
+250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19,
+9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165,
+217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197,
+36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34,
+176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98,
+252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0,
+248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29,
+12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115,
+159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120,
+179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230,
+33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19,
+151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82,
+160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62,
+9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232,
+3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26,
+249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155,
+223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14,
+10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156,
+12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214,
+188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195,
+170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88,
+80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134,
+4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45,
+75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0,
+34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119,
+126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221,
+41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30,
+92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195,
+212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239,
+5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145,
+150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56,
+84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129,
+132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131,
+5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196,
+53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127,
+253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150,
+188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176,
+179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24,
+121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140,
+120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143,
+73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86,
+134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26,
+32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88,
+103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20,
+246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91,
+119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188,
+132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121,
+77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185,
+22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167,
+223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181,
+144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18,
+222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1,
+162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108,
+7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236,
+186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105,
+126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31,
+100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25,
+166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75,
+119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208,
+189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182,
+106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94,
+246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168,
+1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210,
+155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0,
+0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207,
+225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221,
+6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60,
+5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77,
+67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12,
+158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229,
+11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222,
+69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180,
+224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15,
+65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143,
+128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20,
+248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195,
+167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37,
+24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108,
+213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241,
+53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122,
+127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93,
+135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225,
+78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1,
+2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0,
+65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238,
+9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152,
+239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96,
+232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46,
+33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182,
+37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181,
+30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104,
+89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242,
+16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25,
+204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32,
+142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131,
+46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48,
+100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18,
+132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165,
+228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165,
+79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32,
+30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45,
+62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188,
+2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4,
+22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18,
+8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121,
+8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17,
+37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141,
+44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136,
+81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150,
+158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1,
+6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40,
+39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240,
+16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24,
+2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250,
+247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20,
+196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158,
+108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27,
+186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165,
+218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101,
+167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111,
+3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12,
+61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46,
+67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33,
+40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161,
+134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87,
+65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199,
+123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199,
+184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6,
+112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8,
+70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50,
+134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67,
+48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59,
+136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171,
+143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190,
+4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20,
+39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114,
+253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208,
+35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221,
+6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197,
+210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8,
+1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145,
+3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184,
+251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61,
+154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46,
+242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164,
+219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83,
+226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177,
+236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203,
+40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18,
+84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32,
+196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50,
+252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98,
+217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114,
+148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91,
+54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128,
+90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201,
+73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67,
+48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209,
+4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228,
+187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66,
+38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212,
+65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12,
+208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5,
+48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31,
+16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128,
+96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116,
+23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114,
+223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127,
+38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0,
+131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196,
+17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30,
+66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204,
+69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16,
+74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97,
+105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223,
+89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121,
+243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33,
+67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94,
+66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110,
+190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69,
+22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228,
+40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129,
+197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61,
+132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229,
+49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151,
+206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237,
+253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59,
+0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36,
+150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27,
+168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115,
+225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133,
+60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134,
+29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35,
+88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236,
+25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227,
+100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242,
+166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96,
+144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203,
+138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234,
+254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61,
+8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12,
+37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202,
+23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6,
+89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147,
+56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185,
+190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144,
+245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159,
+249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226,
+87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232,
+91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59,
+223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12,
+178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62,
+241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210,
+72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253,
+145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114,
+255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82,
+52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107,
+127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142,
+126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124,
+89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34,
+179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58,
+64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81,
+213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55,
+253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39,
+141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39,
+105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234,
+237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251,
+178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46,
+58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234,
+197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207,
+23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23,
+13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125,
+199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164,
+108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63,
+249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28,
+242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63,
+251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174,
+101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50,
+77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88,
+176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135,
+31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62,
+188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227,
+145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35,
+245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244,
+138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107,
+115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71,
+252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121,
+118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145,
+89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26,
+169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63,
+63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249,
+230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219,
+77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116,
+49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241,
+108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242,
+93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238,
+119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54,
+52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89,
+174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127,
+169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195,
+31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241,
+181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125,
+194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42,
+231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146,
+178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231,
+130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162,
+31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70,
+178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252,
+193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47,
+109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113,
+12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44,
+251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92,
+124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166,
+169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167,
+105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255,
+230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222,
+151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151,
+53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167,
+175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151,
+230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223,
+252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143,
+229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250,
+11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164,
+253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116,
+116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124,
+234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254,
+38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211,
+171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158,
+205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153,
+117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254,
+244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189,
+146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79,
+92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27,
+40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246,
+222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163,
+61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113,
+57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98,
+76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216,
+209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101,
+201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39,
+53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116,
+218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142,
+61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117,
+215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113,
+95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30,
+242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146,
+204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222,
+172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103,
+118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160,
+67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231,
+210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9,
+199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141,
+75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132,
+196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143,
+229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127,
+246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73,
+9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92,
+84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234,
+171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175,
+186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95,
+127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255,
+249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102,
+165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236,
+193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243,
+233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6,
+202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254,
+200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123,
+23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21,
+176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224,
+246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59,
+189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97,
+24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88,
+238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234,
+244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159,
+242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79,
+218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178,
+57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249,
+225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243,
+201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229,
+144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151,
+40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215,
+237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182,
+75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190,
+86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231,
+101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174,
+248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214,
+213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11,
+9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163,
+78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117,
+175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115,
+202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199,
+57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217,
+119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111,
+183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28,
+223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178,
+169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23,
+95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128,
+230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87,
+117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188,
+119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248,
+212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223,
+112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23,
+29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36,
+120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25,
+159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241,
+164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175,
+121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246,
+189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126,
+206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135,
+63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106,
+201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128,
+81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245,
+167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245,
+171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196,
+57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226,
+21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217,
+186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183,
+93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225,
+71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94,
+205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238,
+95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35,
+217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210,
+91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143,
+61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67,
+75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204,
+233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249,
+17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215,
+183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89,
+115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191,
+249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229,
+202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59,
+50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37,
+186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171,
+150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184,
+251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247,
+176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253,
+254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112,
+252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226,
+65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120,
+78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239,
+123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77,
+205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117,
+175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208,
+55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19,
+142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154,
+24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71,
+126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164,
+251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4,
+102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64,
+124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4,
+184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210,
+124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194,
+57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187,
+126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178,
+92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124,
+223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186,
+219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163,
+148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174,
+67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119,
+190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75,
+51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224,
+50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238,
+218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82,
+121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27,
+174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235,
+188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45,
+150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249,
+218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27,
+218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185,
+205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167,
+240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254,
+245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102,
+62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181,
+204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174,
+181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68,
+89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60,
+185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205,
+21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100,
+210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222,
+220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180,
+17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253,
+225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254,
+130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41,
+31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35,
+80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109,
+154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178,
+93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159,
+241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144,
+32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239,
+162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222,
+1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26,
+38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245,
+133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70,
+123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35,
+30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200,
+253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32,
+233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155,
+119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179,
+196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223,
+252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88,
+74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142,
+208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94,
+255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177,
+55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124,
+37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78,
+250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226,
+164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240,
+88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196,
+194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195,
+228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138,
+139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245,
+186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44,
+165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27,
+216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63,
+188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153,
+119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185,
+22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229,
+148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33,
+35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120,
+208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42,
+171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124,
+35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189,
+77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3,
+183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158,
+112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122,
+74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0,
+79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106,
+186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236,
+71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83,
+34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201,
+204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154,
+152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131,
+138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63,
+238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94,
+15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135,
+60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244,
+53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239,
+219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90,
+235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124,
+228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24,
+209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72,
+136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191,
+108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179,
+253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229,
+184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167,
+207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230,
+54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175,
+75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207,
+27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151,
+63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134,
+204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64,
+223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95,
+191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226,
+213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185,
+249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244,
+39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92,
+190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127,
+159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226,
+33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183,
+118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65,
+162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25,
+73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226,
+161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203,
+81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26,
+52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187,
+90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149,
+46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146,
+68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203,
+197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49,
+34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203,
+172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14,
+41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108,
+47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249,
+251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168,
+147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73,
+40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161,
+107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123,
+151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127,
+209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29,
+115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125,
+11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182,
+31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198,
+90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213,
+137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103,
+181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181,
+5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39,
+157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161,
+78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107,
+72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152,
+49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157,
+114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223,
+236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119,
+196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205,
+111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253,
+241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183,
+93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251,
+100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198,
+191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81,
+251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183,
+2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146,
+125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165,
+243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62,
+196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51,
+199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133,
+237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91,
+172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153,
+166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80,
+110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93,
+160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179,
+222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247,
+7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190,
+253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192,
+72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143,
+26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215,
+236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67,
+162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171,
+27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12,
+78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147,
+116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253,
+53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241,
+69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17,
+167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159,
+28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254,
+199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186,
+6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61,
+253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235,
+136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136,
+70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162,
+58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103,
+156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246,
+137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181,
+32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161,
+127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197,
+139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104,
+150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202,
+36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185,
+246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118,
+240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253,
+170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223,
+203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89,
+198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168,
+239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62,
+119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244,
+62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141,
+212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253,
+67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124,
+244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94,
+246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187,
+61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142,
+228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241,
+201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242,
+217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176,
+101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220,
+255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190,
+109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204,
+67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5,
+99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168,
+107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137,
+113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254,
+73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78,
+219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50,
+105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90,
+110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172,
+244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144,
+114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234,
+253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229,
+3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217,
+98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127,
+121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23,
+191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6,
+234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191,
+205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212,
+219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49,
+71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159,
+249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89,
+152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100,
+165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253,
+97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206,
+52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224,
+79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119,
+224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103,
+188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242,
+75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246,
+183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38,
+29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190,
+243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191,
+246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106,
+163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26,
+164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223,
+130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173,
+69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237,
+215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178,
+186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112,
+144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233,
+106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190,
+133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201,
+32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166,
+155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119,
+223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242,
+212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35,
+101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43,
+41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100,
+107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173,
+181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239,
+190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74,
+109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45,
+125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111,
+134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7,
+217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110,
+47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187,
+110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105,
+144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169,
+219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231,
+174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124,
+6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53,
+82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96,
+240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38,
+165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245,
+248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30,
+211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44,
+153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55,
+253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95,
+45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26,
+169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238,
+203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6,
+89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65,
+6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65,
+6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32,
+131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131,
+12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0,
+0,0,0,73,69,78,68,174,66,96,130};
+
+int splash_image9_sz = sizeof(splash_image9);
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage10.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage10.c
new file mode 100644
index 0000000000..02c2c42e28
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage10.c
@@ -0,0 +1,2167 @@
+const unsigned char splash_image10[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82,
+146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,
+43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7,
+184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206,
+57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88,
+98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68,
+122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32,
+88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214,
+222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152,
+99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12,
+50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108,
+115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218,
+182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104,
+115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124,
+194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180,
+103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36,
+182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149,
+110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201,
+37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57,
+21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126,
+175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141,
+58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108,
+236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44,
+203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85,
+89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149,
+223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88,
+46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157,
+86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165,
+239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201,
+132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89,
+38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109,
+174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53,
+43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9,
+182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164,
+41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90,
+185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226,
+186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223,
+111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155,
+120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5,
+87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7,
+157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150,
+231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164,
+41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42,
+183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251,
+157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75,
+47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76,
+203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184,
+86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229,
+1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153,
+199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198,
+158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212,
+247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182,
+167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157,
+246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182,
+196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215,
+185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29,
+72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152,
+116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152,
+140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73,
+134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76,
+39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233,
+242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174,
+61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75,
+63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253,
+48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175,
+16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172,
+133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197,
+117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216,
+203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249,
+94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237,
+241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64,
+110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34,
+93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53,
+35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185,
+245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191,
+58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186,
+173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157,
+59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222,
+163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115,
+174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66,
+224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4,
+90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222,
+71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231,
+94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233,
+170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182,
+82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148,
+114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175,
+200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101,
+62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168,
+82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3,
+36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137,
+173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45,
+3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12,
+50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,
+200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200,
+84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51,
+196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86,
+195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247,
+122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162,
+139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91,
+88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191,
+85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159,
+105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207,
+53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211,
+142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81,
+94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182,
+41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131,
+236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27,
+109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147,
+5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151,
+140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188,
+137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173,
+166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215,
+1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61,
+246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203,
+97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181,
+0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233,
+194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92,
+69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102,
+207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226,
+124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59,
+245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103,
+88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27,
+249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73,
+180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28,
+166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239,
+180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86,
+129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254,
+190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250,
+45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83,
+116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227,
+231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223,
+178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28,
+166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254,
+58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73,
+149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89,
+231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215,
+195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201,
+211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171,
+42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50,
+215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235,
+201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152,
+6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93,
+178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255,
+111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235,
+141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159,
+233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206,
+199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116,
+137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223,
+92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49,
+25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255,
+143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147,
+209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152,
+76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79,
+207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108,
+123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231,
+99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252,
+242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12,
+245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212,
+109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220,
+181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167,
+44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219,
+61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95,
+46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99,
+73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214,
+231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73,
+101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142,
+46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45,
+24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46,
+60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122,
+142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167,
+147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140,
+227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140,
+109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249,
+157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55,
+231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178,
+184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69,
+50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241,
+107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120,
+94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165,
+190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246,
+90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211,
+242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4,
+186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61,
+200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25,
+100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,
+170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,
+12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,
+144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,
+24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,
+100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100,
+144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98,
+123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205,
+55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28,
+179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252,
+228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186,
+230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215,
+94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226,
+94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119,
+148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75,
+141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69,
+115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1,
+7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233,
+159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255,
+220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204,
+230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37,
+134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75,
+35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47,
+236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188,
+121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0,
+120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249,
+200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183,
+230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185,
+187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210,
+208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243,
+165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135,
+62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85,
+243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158,
+6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47,
+126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205,
+126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130,
+14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4,
+10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199,
+31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108,
+118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96,
+220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196,
+39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45,
+111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30,
+52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200,
+0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94,
+121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249,
+206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243,
+156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176,
+143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232,
+106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223,
+222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239,
+194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231,
+53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0,
+192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233,
+174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231,
+55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121,
+195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125,
+112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19,
+225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158,
+244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92,
+90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110,
+89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70,
+16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234,
+0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199,
+152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127,
+248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239,
+127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48,
+240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242,
+172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187,
+135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214,
+179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99,
+216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143,
+187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242,
+230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7,
+54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64,
+193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70,
+9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182,
+223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223,
+119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156,
+114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93,
+239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2,
+21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38,
+3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192,
+82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135,
+235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206,
+43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8,
+12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184,
+227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221,
+3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244,
+162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199,
+59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73,
+122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113,
+223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100,
+125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120,
+5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103,
+116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205,
+43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68,
+206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80,
+28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47,
+40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241,
+238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87,
+190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251,
+187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88,
+96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119,
+12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39,
+3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237,
+186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215,
+45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74,
+6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88,
+3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204,
+140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15,
+12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112,
+140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167,
+231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54,
+239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24,
+129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9,
+32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128,
+65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49,
+195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178,
+107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76,
+2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93,
+215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192,
+1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105,
+128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2,
+129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175,
+118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226,
+73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80,
+136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137,
+39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138,
+87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61,
+96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121,
+1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184,
+23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249,
+17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20,
+32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144,
+95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34,
+112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66,
+87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215,
+158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192,
+72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18,
+149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222,
+243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210,
+1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181,
+46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104,
+33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160,
+0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242,
+1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250,
+210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113,
+201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114,
+101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189,
+205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195,
+72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163,
+214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217,
+157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51,
+13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166,
+0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3,
+120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184,
+3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58,
+206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215,
+126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115,
+207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114,
+100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217,
+240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117,
+21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187,
+48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185,
+93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3,
+34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202,
+0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199,
+22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70,
+204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234,
+122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154,
+115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205,
+197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241,
+227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8,
+117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123,
+220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70,
+3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206,
+189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27,
+215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45,
+94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97,
+255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116,
+215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19,
+182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158,
+128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118,
+93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72,
+172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231,
+243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212,
+246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5,
+11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235,
+152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54,
+251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15,
+1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109,
+154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183,
+235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186,
+235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184,
+199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204,
+75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225,
+93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159,
+255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130,
+144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241,
+30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97,
+130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104,
+189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111,
+128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215,
+127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6,
+125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9,
+221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178,
+221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69,
+157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102,
+180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225,
+58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60,
+10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10,
+210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133,
+152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16,
+27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84,
+231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162,
+23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215,
+10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101,
+40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139,
+115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144,
+88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93,
+9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66,
+43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234,
+155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60,
+9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26,
+20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115,
+206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7,
+20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136,
+238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3,
+156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73,
+7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55,
+187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119,
+189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72,
+116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146,
+123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66,
+134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99,
+152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123,
+62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0,
+116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199,
+147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48,
+252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61,
+90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241,
+48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246,
+183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231,
+185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132,
+53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57,
+150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88,
+154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183,
+205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187,
+219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195,
+194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113,
+137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160,
+5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196,
+216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100,
+95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207,
+161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174,
+21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241,
+254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105,
+118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184,
+60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214,
+197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52,
+93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64,
+237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188,
+9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173,
+6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88,
+42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114,
+142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146,
+151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143,
+67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49,
+93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181,
+164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9,
+128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4,
+3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41,
+80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73,
+173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153,
+145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113,
+187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114,
+76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204,
+110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214,
+128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221,
+237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208,
+218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70,
+206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4,
+26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224,
+107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63,
+150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132,
+214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30,
+251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217,
+5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181,
+74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113,
+9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8,
+7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116,
+57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93,
+13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6,
+157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129,
+69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254,
+251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141,
+231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27,
+245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177,
+6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153,
+54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245,
+219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114,
+234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17,
+52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97,
+215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23,
+8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192,
+203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139,
+231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53,
+173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36,
+8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87,
+193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203,
+104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180,
+50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32,
+106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192,
+3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78,
+129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117,
+196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214,
+12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28,
+9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211,
+108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4,
+67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96,
+224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238,
+239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47,
+53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251,
+159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124,
+234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101,
+128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102,
+94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109,
+59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16,
+92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198,
+224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147,
+198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6,
+159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175,
+225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130,
+60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0,
+2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124,
+10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65,
+75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107,
+245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56,
+156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215,
+179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106,
+45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198,
+174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67,
+160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98,
+178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160,
+86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10,
+198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98,
+152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0,
+134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185,
+251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202,
+124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7,
+101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101,
+68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204,
+73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184,
+188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83,
+174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202,
+144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176,
+206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37,
+79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129,
+150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7,
+219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0,
+166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242,
+27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104,
+164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31,
+183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136,
+186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131,
+97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235,
+154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129,
+23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220,
+51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187,
+16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193,
+126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164,
+81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155,
+150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73,
+250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129,
+145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4,
+195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9,
+8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56,
+68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37,
+13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115,
+1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32,
+210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36,
+136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241,
+70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90,
+182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84,
+190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234,
+59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24,
+136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40,
+141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7,
+17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234,
+202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149,
+109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210,
+197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101,
+170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223,
+121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138,
+109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38,
+100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180,
+110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14,
+12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12,
+117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192,
+16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45,
+47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252,
+5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86,
+94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227,
+229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45,
+0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13,
+177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148,
+90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174,
+53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145,
+120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116,
+49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192,
+64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95,
+9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120,
+134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29,
+111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186,
+235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249,
+122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2,
+111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17,
+10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161,
+201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2,
+66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193,
+32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233,
+98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244,
+12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129,
+133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179,
+121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153,
+223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117,
+131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150,
+63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114,
+91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7,
+149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1,
+32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17,
+111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207,
+194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218,
+123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103,
+25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12,
+246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186,
+242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94,
+223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103,
+229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143,
+6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101,
+10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230,
+159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245,
+55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34,
+49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30,
+68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171,
+238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210,
+205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45,
+191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212,
+185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237,
+177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127,
+130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180,
+208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86,
+31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16,
+62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127,
+104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129,
+68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76,
+235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49,
+24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172,
+131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234,
+109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98,
+33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241,
+248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121,
+99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188,
+83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48,
+89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129,
+197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10,
+137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110,
+10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2,
+68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110,
+70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111,
+130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246,
+101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46,
+161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93,
+155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181,
+67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116,
+229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36,
+120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132,
+132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226,
+61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26,
+137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176,
+101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17,
+125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101,
+108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79,
+44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129,
+151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222,
+125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241,
+89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246,
+251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242,
+246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18,
+192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120,
+18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64,
+66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141,
+196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35,
+195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107,
+109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186,
+17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145,
+232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1,
+18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219,
+111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242,
+80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202,
+19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232,
+70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31,
+221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197,
+35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150,
+53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36,
+196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54,
+190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240,
+194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148,
+222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173,
+153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41,
+80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155,
+218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233,
+121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33,
+81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4,
+43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219,
+1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222,
+4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196,
+123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247,
+67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200,
+48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221,
+181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196,
+19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130,
+66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163,
+0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125,
+174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45,
+223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45,
+1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104,
+6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160,
+188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131,
+176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33,
+202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151,
+150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122,
+234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184,
+87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164,
+128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217,
+173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90,
+2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12,
+144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48,
+136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173,
+55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251,
+253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10,
+191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143,
+65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50,
+88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21,
+192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217,
+0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185,
+194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140,
+138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242,
+207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129,
+50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144,
+176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30,
+137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186,
+158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91,
+91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22,
+8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207,
+123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171,
+47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101,
+93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74,
+162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235,
+137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224,
+57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10,
+212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135,
+94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2,
+12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128,
+200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29,
+216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153,
+216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236,
+158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219,
+115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2,
+240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216,
+195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173,
+243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222,
+115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73,
+32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71,
+31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192,
+33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12,
+60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13,
+219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225,
+173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1,
+141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245,
+103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56,
+78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4,
+137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11,
+28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164,
+46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56,
+19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96,
+112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173,
+253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91,
+241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1,
+200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44,
+222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89,
+25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144,
+46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131,
+133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230,
+85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157,
+161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64,
+194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103,
+180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139,
+161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179,
+77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29,
+232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163,
+107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216,
+233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188,
+123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57,
+94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165,
+231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15,
+46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26,
+125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7,
+130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1,
+7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232,
+70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198,
+15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20,
+207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29,
+6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249,
+180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103,
+219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184,
+175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3,
+20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112,
+12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158,
+219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36,
+123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220,
+115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35,
+202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163,
+213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232,
+54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171,
+18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75,
+75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33,
+100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237,
+78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59,
+230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185,
+241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18,
+12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113,
+47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15,
+96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251,
+1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86,
+114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23,
+181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29,
+40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7,
+193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150,
+203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227,
+61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215,
+215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222,
+133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147,
+0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177,
+45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96,
+88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12,
+27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82,
+193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90,
+102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186,
+242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66,
+110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111,
+255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248,
+175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119,
+186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13,
+2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184,
+131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219,
+15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25,
+28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250,
+104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22,
+74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194,
+142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86,
+62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211,
+109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117,
+251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13,
+188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103,
+5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182,
+220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248,
+64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189,
+173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243,
+199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153,
+42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109,
+164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80,
+209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158,
+131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219,
+181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119,
+180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65,
+107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154,
+84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155,
+81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94,
+5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2,
+14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178,
+244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231,
+90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48,
+58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196,
+149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0,
+224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47,
+40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110,
+35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65,
+5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64,
+128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224,
+81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240,
+42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24,
+168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16,
+38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64,
+136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254,
+65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28,
+167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162,
+251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189,
+220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50,
+125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211,
+0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47,
+141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142,
+240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32,
+243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158,
+4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208,
+1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108,
+149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97,
+64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10,
+52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67,
+160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0,
+22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160,
+40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32,
+248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86,
+249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4,
+222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230,
+188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46,
+239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114,
+76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103,
+68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9,
+138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74,
+149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50,
+40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221,
+12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173,
+41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4,
+94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96,
+16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132,
+101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47,
+98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220,
+226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91,
+150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247,
+172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251,
+58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5,
+106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134,
+132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85,
+66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242,
+32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144,
+180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197,
+102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30,
+120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174,
+101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19,
+32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73,
+75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99,
+244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107,
+253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77,
+98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113,
+214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99,
+210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202,
+82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23,
+81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184,
+215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241,
+38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81,
+241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22,
+152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112,
+229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84,
+74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0,
+161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142,
+139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119,
+101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52,
+202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203,
+61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252,
+184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191,
+21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233,
+212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94,
+64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132,
+190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72,
+196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121,
+17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75,
+90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5,
+2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173,
+197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75,
+112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194,
+232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42,
+157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97,
+116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156,
+119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147,
+250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221,
+175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117,
+8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243,
+151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174,
+27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23,
+163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105,
+144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251,
+24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193,
+130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48,
+21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24,
+24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116,
+90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20,
+165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96,
+60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72,
+186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191,
+63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81,
+229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254,
+231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254,
+97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142,
+222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226,
+166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9,
+9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0,
+43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68,
+43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26,
+96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90,
+186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89,
+143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8,
+24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199,
+120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197,
+249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160,
+246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164,
+62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52,
+191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238,
+221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172,
+107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96,
+220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132,
+22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128,
+97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17,
+4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164,
+165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93,
+59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242,
+200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128,
+17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122,
+46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223,
+182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52,
+40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246,
+182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222,
+247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47,
+93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255,
+223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86,
+191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21,
+94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76,
+229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29,
+215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95,
+246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37,
+24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168,
+12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111,
+202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1,
+28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89,
+150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121,
+251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191,
+249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142,
+127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42,
+19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39,
+18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246,
+90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226,
+57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171,
+97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74,
+199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71,
+116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251,
+121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40,
+3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179,
+40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111,
+41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123,
+98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107,
+23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173,
+223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26,
+223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71,
+89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134,
+192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130,
+254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254,
+197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150,
+97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245,
+101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241,
+130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0,
+65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103,
+159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162,
+140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27,
+0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128,
+5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183,
+190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18,
+126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128,
+217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239,
+197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96,
+240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60,
+145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247,
+2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82,
+144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128,
+65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24,
+140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49,
+212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77,
+51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199,
+72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224,
+165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16,
+90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134,
+27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227,
+29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49,
+196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141,
+140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4,
+14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144,
+140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81,
+2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96,
+105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75,
+76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169,
+181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130,
+6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4,
+67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169,
+129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2,
+134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91,
+191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72,
+40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202,
+241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10,
+165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51,
+42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224,
+69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107,
+136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192,
+64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46,
+5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11,
+65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94,
+68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140,
+83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119,
+93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118,
+183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247,
+208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26,
+140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0,
+134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5,
+253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136,
+64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3,
+173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116,
+0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190,
+193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114,
+4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34,
+45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166,
+139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137,
+120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65,
+186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173,
+101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51,
+3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80,
+68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178,
+81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120,
+16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28,
+64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60,
+146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42,
+210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156,
+92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21,
+130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80,
+160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149,
+50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166,
+117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175,
+132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70,
+169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214,
+129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128,
+131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106,
+29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221,
+237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165,
+214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16,
+159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239,
+160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245,
+246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114,
+70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47,
+17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66,
+142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1,
+14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5,
+5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32,
+81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90,
+166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46,
+0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180,
+150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135,
+85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37,
+120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233,
+94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160,
+242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210,
+209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96,
+145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109,
+3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160,
+54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91,
+92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20,
+32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49,
+240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33,
+81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142,
+50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115,
+41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220,
+156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3,
+5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160,
+75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230,
+74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40,
+65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3,
+10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40,
+210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99,
+175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226,
+17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4,
+47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54,
+227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213,
+5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118,
+128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77,
+148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70,
+62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54,
+149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235,
+26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98,
+105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193,
+62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32,
+1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50,
+128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102,
+186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75,
+24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77,
+242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151,
+240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123,
+192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51,
+203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28,
+1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74,
+143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34,
+90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230,
+254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36,
+184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193,
+75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64,
+68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159,
+18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17,
+111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71,
+70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105,
+160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117,
+240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178,
+151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34,
+196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164,
+184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150,
+93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222,
+4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34,
+64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152,
+153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84,
+46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140,
+27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40,
+150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163,
+30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3,
+153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60,
+5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112,
+112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172,
+13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208,
+209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236,
+139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68,
+13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212,
+94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49,
+98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225,
+16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186,
+134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94,
+46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24,
+196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217,
+237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62,
+17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23,
+36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228,
+57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61,
+228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36,
+72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98,
+130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138,
+232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17,
+111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64,
+145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178,
+205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109,
+121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86,
+227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49,
+34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144,
+40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232,
+155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83,
+235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29,
+235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102,
+246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151,
+16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229,
+48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187,
+29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164,
+131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128,
+4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143,
+135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240,
+210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9,
+200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208,
+242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25,
+27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60,
+90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132,
+60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103,
+145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176,
+14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143,
+229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235,
+133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97,
+20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27,
+178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177,
+169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147,
+40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6,
+20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112,
+176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6,
+129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171,
+102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72,
+240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200,
+155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242,
+178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101,
+224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49,
+173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80,
+0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126,
+144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176,
+128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104,
+197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56,
+103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215,
+254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250,
+130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174,
+68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74,
+80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16,
+19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24,
+0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229,
+193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216,
+216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192,
+37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80,
+112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89,
+247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115,
+151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142,
+190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209,
+73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194,
+160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227,
+224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92,
+195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187,
+150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16,
+242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7,
+20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144,
+48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67,
+100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15,
+20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188,
+11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168,
+31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251,
+181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232,
+190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240,
+8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190,
+0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202,
+239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195,
+112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235,
+101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248,
+4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226,
+241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16,
+225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52,
+117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143,
+64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28,
+90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208,
+200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172,
+108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84,
+68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18,
+18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248,
+4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51,
+26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108,
+235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183,
+2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64,
+170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112,
+83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1,
+67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91,
+154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14,
+94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176,
+157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194,
+58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167,
+188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186,
+35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203,
+33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37,
+239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204,
+43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15,
+14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225,
+108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75,
+149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1,
+18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160,
+182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112,
+62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22,
+235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13,
+131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238,
+35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12,
+222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114,
+93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17,
+72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181,
+181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89,
+123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33,
+90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30,
+128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48,
+116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48,
+62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103,
+56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131,
+37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33,
+195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202,
+200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151,
+170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190,
+68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126,
+45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149,
+96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144,
+1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177,
+11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23,
+98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120,
+101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91,
+2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108,
+149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168,
+1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162,
+246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16,
+103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15,
+3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7,
+80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237,
+179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199,
+203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24,
+168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245,
+251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138,
+100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12,
+34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7,
+9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237,
+183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142,
+51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96,
+66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134,
+29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200,
+241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233,
+130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53,
+36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167,
+18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169,
+37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12,
+223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225,
+39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1,
+97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134,
+94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169,
+242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110,
+89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161,
+60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150,
+140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157,
+48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24,
+136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34,
+202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227,
+45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220,
+95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126,
+91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240,
+98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47,
+33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138,
+192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110,
+189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42,
+157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141,
+26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208,
+151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195,
+0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94,
+133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158,
+93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46,
+7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121,
+210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6,
+20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250,
+122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148,
+87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191,
+255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205,
+192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69,
+208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65,
+194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69,
+186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181,
+209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121,
+202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89,
+217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1,
+47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38,
+162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28,
+183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208,
+160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224,
+74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65,
+48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247,
+252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144,
+128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23,
+35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81,
+238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216,
+47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24,
+85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127,
+26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229,
+115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131,
+68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164,
+178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210,
+245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5,
+6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10,
+6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97,
+244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126,
+75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81,
+226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153,
+84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157,
+185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52,
+72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250,
+96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65,
+140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203,
+91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192,
+238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147,
+170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6,
+131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37,
+48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2,
+138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236,
+104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150,
+111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255,
+245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203,
+68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86,
+13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145,
+49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18,
+53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102,
+127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178,
+175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229,
+117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47,
+255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120,
+70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191,
+111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102,
+238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128,
+162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40,
+181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22,
+53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120,
+133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52,
+127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59,
+54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25,
+250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19,
+9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165,
+217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197,
+36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34,
+176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98,
+252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0,
+248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29,
+12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115,
+159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120,
+179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230,
+33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19,
+151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82,
+160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62,
+9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232,
+3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26,
+249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155,
+223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14,
+10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156,
+12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214,
+188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195,
+170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88,
+80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134,
+4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45,
+75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0,
+34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119,
+126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221,
+41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30,
+92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195,
+212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239,
+5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145,
+150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56,
+84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129,
+132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131,
+5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196,
+53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127,
+253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150,
+188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176,
+179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24,
+121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140,
+120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143,
+73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86,
+134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26,
+32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88,
+103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20,
+246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91,
+119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188,
+132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121,
+77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185,
+22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167,
+223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181,
+144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18,
+222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1,
+162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108,
+7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236,
+186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105,
+126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31,
+100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25,
+166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75,
+119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208,
+189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182,
+106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94,
+246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168,
+1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210,
+155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0,
+0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207,
+225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221,
+6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60,
+5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77,
+67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12,
+158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229,
+11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222,
+69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180,
+224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15,
+65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143,
+128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20,
+248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195,
+167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37,
+24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108,
+213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241,
+53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122,
+127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93,
+135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225,
+78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1,
+2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0,
+65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238,
+9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152,
+239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96,
+232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46,
+33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182,
+37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181,
+30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104,
+89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242,
+16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25,
+204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32,
+142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131,
+46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48,
+100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18,
+132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165,
+228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165,
+79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32,
+30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45,
+62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188,
+2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4,
+22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18,
+8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121,
+8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17,
+37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141,
+44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136,
+81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150,
+158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1,
+6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40,
+39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240,
+16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24,
+2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250,
+247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20,
+196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158,
+108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27,
+186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165,
+218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101,
+167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111,
+3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12,
+61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46,
+67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33,
+40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161,
+134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87,
+65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199,
+123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199,
+184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6,
+112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8,
+70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50,
+134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67,
+48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59,
+136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171,
+143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190,
+4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20,
+39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114,
+253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208,
+35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221,
+6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197,
+210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8,
+1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145,
+3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184,
+251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61,
+154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46,
+242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164,
+219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83,
+226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177,
+236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203,
+40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18,
+84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32,
+196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50,
+252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98,
+217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114,
+148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91,
+54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128,
+90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201,
+73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67,
+48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209,
+4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228,
+187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66,
+38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212,
+65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12,
+208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5,
+48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31,
+16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128,
+96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116,
+23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114,
+223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127,
+38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0,
+131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196,
+17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30,
+66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204,
+69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16,
+74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97,
+105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223,
+89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121,
+243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33,
+67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94,
+66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110,
+190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69,
+22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228,
+40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129,
+197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61,
+132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229,
+49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151,
+206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237,
+253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59,
+0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36,
+150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27,
+168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115,
+225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133,
+60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134,
+29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35,
+88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236,
+25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227,
+100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242,
+166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96,
+144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203,
+138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234,
+254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61,
+8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12,
+37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202,
+23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6,
+89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147,
+56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185,
+190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144,
+245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159,
+249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226,
+87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232,
+91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59,
+223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12,
+178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62,
+241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210,
+72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253,
+145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114,
+255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82,
+52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107,
+127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142,
+126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124,
+89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34,
+179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58,
+64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81,
+213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55,
+253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39,
+141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39,
+105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234,
+237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251,
+178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46,
+58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234,
+197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207,
+23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23,
+13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125,
+199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164,
+108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63,
+249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28,
+242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63,
+251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174,
+101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50,
+77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88,
+176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135,
+31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62,
+188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227,
+145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35,
+245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244,
+138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107,
+115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71,
+252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121,
+118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145,
+89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26,
+169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63,
+63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249,
+230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219,
+77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116,
+49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241,
+108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242,
+93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238,
+119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54,
+52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89,
+174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127,
+169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195,
+31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241,
+181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125,
+194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42,
+231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146,
+178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231,
+130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162,
+31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70,
+178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252,
+193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47,
+109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113,
+12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44,
+251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92,
+124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166,
+169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167,
+105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255,
+230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222,
+151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151,
+53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167,
+175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151,
+230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223,
+252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143,
+229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250,
+11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164,
+253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116,
+116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124,
+234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254,
+38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211,
+171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158,
+205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153,
+117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254,
+244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189,
+146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79,
+92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27,
+40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246,
+222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163,
+61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113,
+57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98,
+76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216,
+209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101,
+201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39,
+53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116,
+218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142,
+61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117,
+215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113,
+95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30,
+242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146,
+204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222,
+172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103,
+118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160,
+67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231,
+210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9,
+199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141,
+75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132,
+196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143,
+229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127,
+246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73,
+9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92,
+84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234,
+171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175,
+186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95,
+127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255,
+249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102,
+165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236,
+193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243,
+233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6,
+202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254,
+200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123,
+23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21,
+176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224,
+246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59,
+189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97,
+24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88,
+238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234,
+244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159,
+242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79,
+218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178,
+57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249,
+225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243,
+201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229,
+144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151,
+40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215,
+237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182,
+75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190,
+86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231,
+101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174,
+248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214,
+213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11,
+9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163,
+78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117,
+175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115,
+202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199,
+57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217,
+119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111,
+183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28,
+223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178,
+169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23,
+95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128,
+230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87,
+117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188,
+119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248,
+212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223,
+112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23,
+29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36,
+120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25,
+159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241,
+164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175,
+121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246,
+189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126,
+206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135,
+63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106,
+201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128,
+81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245,
+167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245,
+171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196,
+57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226,
+21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217,
+186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183,
+93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225,
+71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94,
+205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238,
+95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35,
+217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210,
+91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143,
+61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67,
+75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204,
+233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249,
+17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215,
+183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89,
+115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191,
+249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229,
+202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59,
+50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37,
+186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171,
+150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184,
+251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247,
+176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253,
+254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112,
+252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226,
+65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120,
+78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239,
+123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77,
+205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117,
+175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208,
+55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19,
+142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154,
+24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71,
+126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164,
+251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4,
+102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64,
+124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4,
+184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210,
+124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194,
+57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187,
+126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178,
+92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124,
+223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186,
+219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163,
+148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174,
+67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119,
+190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75,
+51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224,
+50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238,
+218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82,
+121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27,
+174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235,
+188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45,
+150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249,
+218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27,
+218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185,
+205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167,
+240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254,
+245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102,
+62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181,
+204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174,
+181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68,
+89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60,
+185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205,
+21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100,
+210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222,
+220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180,
+17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253,
+225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254,
+130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41,
+31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35,
+80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109,
+154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178,
+93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159,
+241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144,
+32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239,
+162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222,
+1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26,
+38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245,
+133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70,
+123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35,
+30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200,
+253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32,
+233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155,
+119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179,
+196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223,
+252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88,
+74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142,
+208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94,
+255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177,
+55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124,
+37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78,
+250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226,
+164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240,
+88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196,
+194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195,
+228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138,
+139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245,
+186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44,
+165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27,
+216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63,
+188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153,
+119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185,
+22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229,
+148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33,
+35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120,
+208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42,
+171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124,
+35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189,
+77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3,
+183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158,
+112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122,
+74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0,
+79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106,
+186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236,
+71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83,
+34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201,
+204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154,
+152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131,
+138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63,
+238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94,
+15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135,
+60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244,
+53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239,
+219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90,
+235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124,
+228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24,
+209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72,
+136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191,
+108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179,
+253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229,
+184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167,
+207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230,
+54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175,
+75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207,
+27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151,
+63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134,
+204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64,
+223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95,
+191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226,
+213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185,
+249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244,
+39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92,
+190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127,
+159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226,
+33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183,
+118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65,
+162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25,
+73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226,
+161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203,
+81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26,
+52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187,
+90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149,
+46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146,
+68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203,
+197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49,
+34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203,
+172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14,
+41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108,
+47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249,
+251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168,
+147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73,
+40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161,
+107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123,
+151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127,
+209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29,
+115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125,
+11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182,
+31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198,
+90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213,
+137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103,
+181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181,
+5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39,
+157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161,
+78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107,
+72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152,
+49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157,
+114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223,
+236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119,
+196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205,
+111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253,
+241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183,
+93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251,
+100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198,
+191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81,
+251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183,
+2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146,
+125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165,
+243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62,
+196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51,
+199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133,
+237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91,
+172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153,
+166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80,
+110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93,
+160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179,
+222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247,
+7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190,
+253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192,
+72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143,
+26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215,
+236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67,
+162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171,
+27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12,
+78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147,
+116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253,
+53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241,
+69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17,
+167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159,
+28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254,
+199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186,
+6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61,
+253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235,
+136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136,
+70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162,
+58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103,
+156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246,
+137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181,
+32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161,
+127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197,
+139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104,
+150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202,
+36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185,
+246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118,
+240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253,
+170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223,
+203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89,
+198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168,
+239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62,
+119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244,
+62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141,
+212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253,
+67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124,
+244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94,
+246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187,
+61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142,
+228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241,
+201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242,
+217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176,
+101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220,
+255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190,
+109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204,
+67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5,
+99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168,
+107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137,
+113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254,
+73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78,
+219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50,
+105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90,
+110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172,
+244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144,
+114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234,
+253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229,
+3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217,
+98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127,
+121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23,
+191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6,
+234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191,
+205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212,
+219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49,
+71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159,
+249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89,
+152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100,
+165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253,
+97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206,
+52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224,
+79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119,
+224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103,
+188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242,
+75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246,
+183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38,
+29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190,
+243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191,
+246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106,
+163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26,
+164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223,
+130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173,
+69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237,
+215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178,
+186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112,
+144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233,
+106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190,
+133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201,
+32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166,
+155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119,
+223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242,
+212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35,
+101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43,
+41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100,
+107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173,
+181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239,
+190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74,
+109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45,
+125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111,
+134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7,
+217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110,
+47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187,
+110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105,
+144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169,
+219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231,
+174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124,
+6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53,
+82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96,
+240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38,
+165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245,
+248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30,
+211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44,
+153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55,
+253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95,
+45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26,
+169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238,
+203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6,
+89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65,
+6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65,
+6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32,
+131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131,
+12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0,
+0,0,0,73,69,78,68,174,66,96,130};
+
+int splash_image10_sz = sizeof(splash_image10);
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage11.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage11.c
new file mode 100644
index 0000000000..e4db7de19b
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage11.c
@@ -0,0 +1,2168 @@
+const unsigned char splash_image11[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82,
+146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,
+43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7,
+184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206,
+57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88,
+98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68,
+122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32,
+88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214,
+222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152,
+99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12,
+50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108,
+115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218,
+182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104,
+115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124,
+194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180,
+103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36,
+182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149,
+110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201,
+37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57,
+21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126,
+175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141,
+58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108,
+236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44,
+203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85,
+89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149,
+223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88,
+46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157,
+86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165,
+239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201,
+132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89,
+38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109,
+174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53,
+43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9,
+182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164,
+41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90,
+185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226,
+186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223,
+111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155,
+120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5,
+87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7,
+157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150,
+231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164,
+41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42,
+183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251,
+157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75,
+47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76,
+203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184,
+86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229,
+1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153,
+199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198,
+158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212,
+247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182,
+167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157,
+246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182,
+196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215,
+185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29,
+72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152,
+116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152,
+140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73,
+134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76,
+39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233,
+242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174,
+61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75,
+63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253,
+48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175,
+16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172,
+133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197,
+117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216,
+203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249,
+94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237,
+241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64,
+110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34,
+93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53,
+35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185,
+245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191,
+58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186,
+173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157,
+59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222,
+163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115,
+174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66,
+224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4,
+90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222,
+71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231,
+94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233,
+170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182,
+82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148,
+114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175,
+200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101,
+62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168,
+82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3,
+36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137,
+173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45,
+3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12,
+50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,
+200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200,
+84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51,
+196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86,
+195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247,
+122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162,
+139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91,
+88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191,
+85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159,
+105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207,
+53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211,
+142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81,
+94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182,
+41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131,
+236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27,
+109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147,
+5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151,
+140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188,
+137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173,
+166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215,
+1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61,
+246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203,
+97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181,
+0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233,
+194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92,
+69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102,
+207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226,
+124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59,
+245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103,
+88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27,
+249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73,
+180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28,
+166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239,
+180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86,
+129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254,
+190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250,
+45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83,
+116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227,
+231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223,
+178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28,
+166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254,
+58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73,
+149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89,
+231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215,
+195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201,
+211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171,
+42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50,
+215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235,
+201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152,
+6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93,
+178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255,
+111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235,
+141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159,
+233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206,
+199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116,
+137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223,
+92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49,
+25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255,
+143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147,
+209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152,
+76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79,
+207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108,
+123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231,
+99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252,
+242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12,
+245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212,
+109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220,
+181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167,
+44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219,
+61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95,
+46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99,
+73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214,
+231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73,
+101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142,
+46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45,
+24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46,
+60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122,
+142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167,
+147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140,
+227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140,
+109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249,
+157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55,
+231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178,
+184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69,
+50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241,
+107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120,
+94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165,
+190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246,
+90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211,
+242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4,
+186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61,
+200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25,
+100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,
+170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,
+12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,
+144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,
+24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,
+100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100,
+144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98,
+123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205,
+55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28,
+179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252,
+228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186,
+230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215,
+94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226,
+94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119,
+148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75,
+141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69,
+115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1,
+7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233,
+159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255,
+220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204,
+230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37,
+134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75,
+35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47,
+236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188,
+121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0,
+120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249,
+200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183,
+230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185,
+187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210,
+208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243,
+165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135,
+62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85,
+243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158,
+6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47,
+126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205,
+126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130,
+14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4,
+10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199,
+31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108,
+118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96,
+220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196,
+39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45,
+111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30,
+52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200,
+0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94,
+121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249,
+206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243,
+156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176,
+143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232,
+106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223,
+222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239,
+194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231,
+53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0,
+192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233,
+174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231,
+55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121,
+195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125,
+112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19,
+225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158,
+244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92,
+90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110,
+89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70,
+16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234,
+0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199,
+152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127,
+248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239,
+127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48,
+240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242,
+172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187,
+135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214,
+179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99,
+216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143,
+187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242,
+230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7,
+54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64,
+193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70,
+9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182,
+223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223,
+119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156,
+114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93,
+239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2,
+21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38,
+3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192,
+82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135,
+235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206,
+43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8,
+12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184,
+227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221,
+3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244,
+162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199,
+59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73,
+122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113,
+223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100,
+125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120,
+5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103,
+116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205,
+43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68,
+206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80,
+28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47,
+40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241,
+238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87,
+190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251,
+187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88,
+96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119,
+12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39,
+3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237,
+186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215,
+45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74,
+6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88,
+3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204,
+140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15,
+12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112,
+140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167,
+231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54,
+239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24,
+129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9,
+32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128,
+65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49,
+195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178,
+107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76,
+2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93,
+215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192,
+1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105,
+128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2,
+129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175,
+118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226,
+73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80,
+136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137,
+39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138,
+87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61,
+96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121,
+1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184,
+23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249,
+17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20,
+32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144,
+95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34,
+112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66,
+87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215,
+158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192,
+72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18,
+149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222,
+243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210,
+1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181,
+46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104,
+33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160,
+0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242,
+1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250,
+210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113,
+201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114,
+101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189,
+205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195,
+72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163,
+214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217,
+157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51,
+13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166,
+0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3,
+120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184,
+3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58,
+206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215,
+126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115,
+207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114,
+100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217,
+240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117,
+21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187,
+48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185,
+93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3,
+34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202,
+0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199,
+22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70,
+204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234,
+122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154,
+115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205,
+197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241,
+227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8,
+117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123,
+220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70,
+3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206,
+189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27,
+215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45,
+94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97,
+255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116,
+215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19,
+182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158,
+128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118,
+93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72,
+172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231,
+243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212,
+246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5,
+11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235,
+152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54,
+251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15,
+1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109,
+154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183,
+235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186,
+235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184,
+199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204,
+75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225,
+93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159,
+255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130,
+144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241,
+30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97,
+130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104,
+189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111,
+128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215,
+127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6,
+125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9,
+221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178,
+221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69,
+157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102,
+180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225,
+58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60,
+10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10,
+210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133,
+152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16,
+27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84,
+231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162,
+23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215,
+10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101,
+40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139,
+115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144,
+88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93,
+9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66,
+43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234,
+155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60,
+9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26,
+20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115,
+206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7,
+20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136,
+238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3,
+156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73,
+7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55,
+187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119,
+189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72,
+116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146,
+123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66,
+134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99,
+152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123,
+62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0,
+116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199,
+147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48,
+252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61,
+90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241,
+48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246,
+183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231,
+185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132,
+53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57,
+150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88,
+154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183,
+205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187,
+219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195,
+194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113,
+137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160,
+5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196,
+216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100,
+95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207,
+161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174,
+21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241,
+254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105,
+118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184,
+60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214,
+197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52,
+93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64,
+237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188,
+9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173,
+6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88,
+42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114,
+142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146,
+151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143,
+67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49,
+93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181,
+164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9,
+128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4,
+3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41,
+80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73,
+173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153,
+145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113,
+187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114,
+76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204,
+110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214,
+128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221,
+237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208,
+218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70,
+206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4,
+26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224,
+107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63,
+150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132,
+214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30,
+251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217,
+5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181,
+74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113,
+9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8,
+7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116,
+57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93,
+13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6,
+157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129,
+69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254,
+251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141,
+231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27,
+245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177,
+6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153,
+54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245,
+219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114,
+234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17,
+52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97,
+215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23,
+8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192,
+203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139,
+231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53,
+173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36,
+8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87,
+193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203,
+104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180,
+50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32,
+106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192,
+3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78,
+129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117,
+196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214,
+12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28,
+9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211,
+108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4,
+67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96,
+224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238,
+239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47,
+53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251,
+159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124,
+234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101,
+128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102,
+94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109,
+59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16,
+92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198,
+224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147,
+198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6,
+159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175,
+225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130,
+60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0,
+2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124,
+10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65,
+75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107,
+245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56,
+156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215,
+179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106,
+45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198,
+174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67,
+160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98,
+178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160,
+86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10,
+198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98,
+152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0,
+134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185,
+251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202,
+124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7,
+101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101,
+68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204,
+73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184,
+188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83,
+174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202,
+144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176,
+206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37,
+79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129,
+150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7,
+219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0,
+166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242,
+27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104,
+164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31,
+183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136,
+186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131,
+97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235,
+154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129,
+23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220,
+51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187,
+16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193,
+126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164,
+81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155,
+150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73,
+250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129,
+145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4,
+195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9,
+8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56,
+68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37,
+13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115,
+1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32,
+210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36,
+136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241,
+70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90,
+182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84,
+190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234,
+59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24,
+136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40,
+141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7,
+17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234,
+202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149,
+109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210,
+197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101,
+170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223,
+121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138,
+109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38,
+100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180,
+110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14,
+12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12,
+117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192,
+16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45,
+47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252,
+5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86,
+94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227,
+229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45,
+0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13,
+177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148,
+90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174,
+53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145,
+120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116,
+49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192,
+64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95,
+9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120,
+134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29,
+111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186,
+235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249,
+122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2,
+111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17,
+10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161,
+201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2,
+66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193,
+32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233,
+98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244,
+12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129,
+133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179,
+121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153,
+223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117,
+131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150,
+63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114,
+91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7,
+149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1,
+32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17,
+111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207,
+194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218,
+123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103,
+25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12,
+246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186,
+242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94,
+223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103,
+229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143,
+6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101,
+10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230,
+159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245,
+55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34,
+49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30,
+68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171,
+238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210,
+205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45,
+191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212,
+185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237,
+177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127,
+130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180,
+208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86,
+31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16,
+62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127,
+104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129,
+68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76,
+235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49,
+24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172,
+131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234,
+109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98,
+33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241,
+248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121,
+99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188,
+83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48,
+89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129,
+197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10,
+137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110,
+10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2,
+68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110,
+70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111,
+130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246,
+101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46,
+161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93,
+155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181,
+67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116,
+229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36,
+120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132,
+132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226,
+61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26,
+137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176,
+101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17,
+125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101,
+108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79,
+44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129,
+151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222,
+125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241,
+89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246,
+251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242,
+246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18,
+192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120,
+18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64,
+66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141,
+196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35,
+195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107,
+109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186,
+17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145,
+232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1,
+18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219,
+111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242,
+80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202,
+19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232,
+70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31,
+221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197,
+35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150,
+53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36,
+196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54,
+190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240,
+194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148,
+222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173,
+153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41,
+80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155,
+218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233,
+121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33,
+81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4,
+43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219,
+1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222,
+4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196,
+123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247,
+67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200,
+48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221,
+181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196,
+19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130,
+66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163,
+0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125,
+174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45,
+223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45,
+1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104,
+6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160,
+188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131,
+176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33,
+202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151,
+150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122,
+234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184,
+87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164,
+128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217,
+173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90,
+2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12,
+144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48,
+136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173,
+55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251,
+253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10,
+191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143,
+65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50,
+88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21,
+192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217,
+0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185,
+194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140,
+138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242,
+207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129,
+50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144,
+176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30,
+137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186,
+158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91,
+91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22,
+8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207,
+123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171,
+47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101,
+93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74,
+162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235,
+137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224,
+57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10,
+212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135,
+94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2,
+12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128,
+200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29,
+216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153,
+216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236,
+158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219,
+115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2,
+240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216,
+195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173,
+243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222,
+115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73,
+32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71,
+31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192,
+33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12,
+60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13,
+219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225,
+173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1,
+141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245,
+103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56,
+78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4,
+137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11,
+28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164,
+46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56,
+19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96,
+112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173,
+253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91,
+241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1,
+200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44,
+222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89,
+25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144,
+46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131,
+133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230,
+85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157,
+161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64,
+194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103,
+180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139,
+161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179,
+77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29,
+232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163,
+107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216,
+233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188,
+123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57,
+94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165,
+231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15,
+46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26,
+125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7,
+130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1,
+7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232,
+70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198,
+15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20,
+207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29,
+6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249,
+180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103,
+219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184,
+175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3,
+20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112,
+12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158,
+219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36,
+123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220,
+115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35,
+202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163,
+213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232,
+54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171,
+18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75,
+75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33,
+100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237,
+78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59,
+230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185,
+241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18,
+12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113,
+47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15,
+96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251,
+1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86,
+114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23,
+181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29,
+40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7,
+193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150,
+203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227,
+61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215,
+215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222,
+133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147,
+0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177,
+45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96,
+88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12,
+27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82,
+193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90,
+102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186,
+242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66,
+110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111,
+255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248,
+175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119,
+186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13,
+2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184,
+131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219,
+15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25,
+28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250,
+104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22,
+74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194,
+142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86,
+62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211,
+109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117,
+251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13,
+188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103,
+5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182,
+220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248,
+64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189,
+173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243,
+199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153,
+42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109,
+164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80,
+209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158,
+131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219,
+181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119,
+180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65,
+107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154,
+84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155,
+81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94,
+5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2,
+14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178,
+244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231,
+90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48,
+58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196,
+149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0,
+224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47,
+40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110,
+35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65,
+5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64,
+128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224,
+81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240,
+42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24,
+168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16,
+38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64,
+136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254,
+65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28,
+167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162,
+251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189,
+220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50,
+125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211,
+0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47,
+141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142,
+240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32,
+243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158,
+4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208,
+1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108,
+149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97,
+64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10,
+52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67,
+160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0,
+22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160,
+40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32,
+248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86,
+249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4,
+222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230,
+188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46,
+239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114,
+76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103,
+68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9,
+138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74,
+149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50,
+40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221,
+12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173,
+41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4,
+94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96,
+16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132,
+101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47,
+98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220,
+226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91,
+150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247,
+172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251,
+58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5,
+106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134,
+132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85,
+66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242,
+32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144,
+180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197,
+102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30,
+120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174,
+101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19,
+32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73,
+75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99,
+244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107,
+253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77,
+98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113,
+214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99,
+210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202,
+82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23,
+81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184,
+215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241,
+38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81,
+241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22,
+152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112,
+229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84,
+74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0,
+161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142,
+139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119,
+101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52,
+202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203,
+61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252,
+184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191,
+21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233,
+212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94,
+64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132,
+190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72,
+196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121,
+17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75,
+90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5,
+2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173,
+197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75,
+112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194,
+232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42,
+157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97,
+116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156,
+119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147,
+250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221,
+175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117,
+8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243,
+151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174,
+27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23,
+163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105,
+144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251,
+24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193,
+130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48,
+21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24,
+24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116,
+90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20,
+165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96,
+60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72,
+186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191,
+63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81,
+229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254,
+231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254,
+97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142,
+222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226,
+166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9,
+9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0,
+43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68,
+43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26,
+96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90,
+186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89,
+143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8,
+24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199,
+120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197,
+249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160,
+246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164,
+62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52,
+191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238,
+221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172,
+107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96,
+220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132,
+22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128,
+97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17,
+4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164,
+165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93,
+59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242,
+200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128,
+17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122,
+46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223,
+182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52,
+40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246,
+182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222,
+247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47,
+93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255,
+223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86,
+191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21,
+94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76,
+229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29,
+215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95,
+246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37,
+24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168,
+12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111,
+202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1,
+28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89,
+150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121,
+251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191,
+249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142,
+127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42,
+19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39,
+18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246,
+90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226,
+57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171,
+97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74,
+199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71,
+116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251,
+121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40,
+3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179,
+40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111,
+41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123,
+98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107,
+23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173,
+223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26,
+223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71,
+89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134,
+192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130,
+254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254,
+197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150,
+97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245,
+101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241,
+130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0,
+65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103,
+159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162,
+140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27,
+0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128,
+5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183,
+190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18,
+126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128,
+217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239,
+197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96,
+240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60,
+145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247,
+2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82,
+144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128,
+65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24,
+140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49,
+212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77,
+51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199,
+72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224,
+165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16,
+90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134,
+27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227,
+29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49,
+196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141,
+140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4,
+14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144,
+140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81,
+2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96,
+105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75,
+76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169,
+181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130,
+6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4,
+67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169,
+129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2,
+134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91,
+191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72,
+40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202,
+241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10,
+165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51,
+42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224,
+69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107,
+136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192,
+64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46,
+5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11,
+65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94,
+68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140,
+83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119,
+93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118,
+183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247,
+208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26,
+140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0,
+134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5,
+253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136,
+64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3,
+173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116,
+0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190,
+193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114,
+4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34,
+45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166,
+139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137,
+120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65,
+186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173,
+101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51,
+3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80,
+68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178,
+81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120,
+16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28,
+64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60,
+146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42,
+210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156,
+92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21,
+130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80,
+160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149,
+50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166,
+117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175,
+132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70,
+169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214,
+129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128,
+131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106,
+29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221,
+237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165,
+214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16,
+159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239,
+160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245,
+246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114,
+70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47,
+17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66,
+142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1,
+14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5,
+5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32,
+81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90,
+166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46,
+0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180,
+150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135,
+85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37,
+120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233,
+94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160,
+242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210,
+209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96,
+145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109,
+3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160,
+54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91,
+92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20,
+32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49,
+240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33,
+81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142,
+50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115,
+41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220,
+156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3,
+5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160,
+75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230,
+74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40,
+65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3,
+10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40,
+210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99,
+175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226,
+17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4,
+47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54,
+227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213,
+5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118,
+128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77,
+148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70,
+62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54,
+149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235,
+26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98,
+105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193,
+62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32,
+1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50,
+128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102,
+186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75,
+24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77,
+242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151,
+240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123,
+192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51,
+203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28,
+1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74,
+143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34,
+90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230,
+254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36,
+184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193,
+75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64,
+68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159,
+18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17,
+111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71,
+70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105,
+160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117,
+240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178,
+151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34,
+196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164,
+184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150,
+93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222,
+4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34,
+64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152,
+153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84,
+46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140,
+27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40,
+150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163,
+30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3,
+153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60,
+5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112,
+112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172,
+13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208,
+209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236,
+139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68,
+13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212,
+94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49,
+98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225,
+16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186,
+134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94,
+46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24,
+196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217,
+237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62,
+17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23,
+36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228,
+57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61,
+228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36,
+72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98,
+130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138,
+232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17,
+111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64,
+145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178,
+205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109,
+121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86,
+227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49,
+34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144,
+40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232,
+155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83,
+235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29,
+235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102,
+246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151,
+16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229,
+48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187,
+29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164,
+131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128,
+4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143,
+135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240,
+210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9,
+200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208,
+242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25,
+27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60,
+90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132,
+60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103,
+145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176,
+14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143,
+229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235,
+133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97,
+20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27,
+178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177,
+169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147,
+40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6,
+20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112,
+176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6,
+129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171,
+102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72,
+240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200,
+155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242,
+178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101,
+224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49,
+173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80,
+0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126,
+144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176,
+128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104,
+197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56,
+103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215,
+254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250,
+130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174,
+68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74,
+80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16,
+19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24,
+0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229,
+193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216,
+216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192,
+37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80,
+112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89,
+247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115,
+151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142,
+190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209,
+73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194,
+160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227,
+224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92,
+195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187,
+150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16,
+242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7,
+20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144,
+48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67,
+100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15,
+20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188,
+11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168,
+31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251,
+181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232,
+190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240,
+8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190,
+0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202,
+239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195,
+112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235,
+101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248,
+4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226,
+241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16,
+225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52,
+117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143,
+64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28,
+90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208,
+200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172,
+108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84,
+68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18,
+18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248,
+4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51,
+26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108,
+235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183,
+2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64,
+170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112,
+83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1,
+67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91,
+154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14,
+94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176,
+157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194,
+58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167,
+188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186,
+35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203,
+33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37,
+239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204,
+43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15,
+14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225,
+108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75,
+149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1,
+18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160,
+182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112,
+62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22,
+235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13,
+131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238,
+35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12,
+222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114,
+93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17,
+72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181,
+181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89,
+123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33,
+90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30,
+128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48,
+116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48,
+62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103,
+56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131,
+37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33,
+195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202,
+200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151,
+170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190,
+68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126,
+45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149,
+96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144,
+1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177,
+11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23,
+98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120,
+101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91,
+2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108,
+149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168,
+1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162,
+246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16,
+103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15,
+3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7,
+80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237,
+179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199,
+203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24,
+168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245,
+251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138,
+100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12,
+34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7,
+9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237,
+183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142,
+51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96,
+66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134,
+29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200,
+241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233,
+130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53,
+36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167,
+18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169,
+37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12,
+223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225,
+39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1,
+97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134,
+94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169,
+242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110,
+89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161,
+60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150,
+140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157,
+48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24,
+136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34,
+202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227,
+45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220,
+95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126,
+91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240,
+98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47,
+33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138,
+192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110,
+189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42,
+157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141,
+26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208,
+151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195,
+0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94,
+133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158,
+93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46,
+7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121,
+210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6,
+20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250,
+122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148,
+87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191,
+255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205,
+192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69,
+208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65,
+194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69,
+186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181,
+209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121,
+202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89,
+217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1,
+47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38,
+162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28,
+183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208,
+160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224,
+74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65,
+48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247,
+252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144,
+128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23,
+35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81,
+238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216,
+47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24,
+85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127,
+26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229,
+115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131,
+68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164,
+178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210,
+245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5,
+6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10,
+6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97,
+244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126,
+75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81,
+226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153,
+84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157,
+185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52,
+72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250,
+96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65,
+140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203,
+91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192,
+238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147,
+170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6,
+131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37,
+48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2,
+138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236,
+104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150,
+111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255,
+245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203,
+68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86,
+13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145,
+49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18,
+53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102,
+127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178,
+175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229,
+117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47,
+255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120,
+70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191,
+111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102,
+238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128,
+162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40,
+181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22,
+53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120,
+133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52,
+127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59,
+54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25,
+250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19,
+9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165,
+217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197,
+36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34,
+176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98,
+252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0,
+248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29,
+12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115,
+159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120,
+179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230,
+33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19,
+151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82,
+160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62,
+9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232,
+3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26,
+249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155,
+223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14,
+10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156,
+12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214,
+188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195,
+170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88,
+80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134,
+4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45,
+75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0,
+34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119,
+126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221,
+41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30,
+92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195,
+212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239,
+5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145,
+150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56,
+84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129,
+132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131,
+5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196,
+53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127,
+253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150,
+188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176,
+179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24,
+121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140,
+120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143,
+73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86,
+134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26,
+32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88,
+103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20,
+246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91,
+119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188,
+132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121,
+77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185,
+22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167,
+223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181,
+144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18,
+222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1,
+162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108,
+7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236,
+186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105,
+126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31,
+100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25,
+166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75,
+119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208,
+189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182,
+106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94,
+246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168,
+1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210,
+155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0,
+0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207,
+225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221,
+6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60,
+5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77,
+67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12,
+158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229,
+11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222,
+69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180,
+224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15,
+65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143,
+128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20,
+248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195,
+167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37,
+24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108,
+213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241,
+53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122,
+127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93,
+135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225,
+78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1,
+2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0,
+65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238,
+9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152,
+239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96,
+232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46,
+33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182,
+37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181,
+30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104,
+89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242,
+16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25,
+204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32,
+142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131,
+46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48,
+100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18,
+132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165,
+228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165,
+79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32,
+30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45,
+62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188,
+2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4,
+22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18,
+8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121,
+8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17,
+37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141,
+44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136,
+81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150,
+158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1,
+6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40,
+39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240,
+16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24,
+2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250,
+247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20,
+196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158,
+108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27,
+186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165,
+218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101,
+167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111,
+3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12,
+61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46,
+67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33,
+40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161,
+134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87,
+65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199,
+123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199,
+184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6,
+112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8,
+70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50,
+134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67,
+48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59,
+136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171,
+143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190,
+4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20,
+39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114,
+253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208,
+35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221,
+6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197,
+210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8,
+1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145,
+3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184,
+251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61,
+154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46,
+242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164,
+219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83,
+226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177,
+236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203,
+40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18,
+84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32,
+196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50,
+252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98,
+217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114,
+148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91,
+54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128,
+90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201,
+73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67,
+48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209,
+4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228,
+187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66,
+38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212,
+65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12,
+208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5,
+48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31,
+16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128,
+96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116,
+23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114,
+223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127,
+38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0,
+131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196,
+17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30,
+66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204,
+69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16,
+74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97,
+105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223,
+89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121,
+243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33,
+67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94,
+66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110,
+190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69,
+22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228,
+40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129,
+197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61,
+132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229,
+49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151,
+206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237,
+253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59,
+0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36,
+150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27,
+168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115,
+225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133,
+60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134,
+29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35,
+88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236,
+25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227,
+100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242,
+166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96,
+144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203,
+138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234,
+254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61,
+8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12,
+37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202,
+23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6,
+89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147,
+56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185,
+190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144,
+245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159,
+249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226,
+87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232,
+91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59,
+223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12,
+178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62,
+241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210,
+72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253,
+145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114,
+255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82,
+52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107,
+127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142,
+126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124,
+89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34,
+179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58,
+64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81,
+213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55,
+253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39,
+141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39,
+105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234,
+237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251,
+178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46,
+58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234,
+197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207,
+23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23,
+13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125,
+199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164,
+108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63,
+249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28,
+242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63,
+251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174,
+101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50,
+77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88,
+176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135,
+31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62,
+188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227,
+145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35,
+245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244,
+138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107,
+115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71,
+252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121,
+118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145,
+89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26,
+169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63,
+63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249,
+230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219,
+77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116,
+49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241,
+108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242,
+93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238,
+119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54,
+52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89,
+174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127,
+169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195,
+31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241,
+181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125,
+194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42,
+231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146,
+178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231,
+130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162,
+31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70,
+178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252,
+193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47,
+109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113,
+12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44,
+251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92,
+124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166,
+169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167,
+105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255,
+230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222,
+151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151,
+53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167,
+175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151,
+230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223,
+252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143,
+229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250,
+11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164,
+253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116,
+116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124,
+234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254,
+38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211,
+171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158,
+205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153,
+117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254,
+244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189,
+146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79,
+92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27,
+40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246,
+222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163,
+61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113,
+57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98,
+76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216,
+209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101,
+201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39,
+53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116,
+218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142,
+61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117,
+215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113,
+95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30,
+242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146,
+204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222,
+172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103,
+118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160,
+67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231,
+210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9,
+199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141,
+75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132,
+196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143,
+229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127,
+246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73,
+9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92,
+84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234,
+171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175,
+186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95,
+127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255,
+249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102,
+165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236,
+193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243,
+233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6,
+202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254,
+200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123,
+23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21,
+176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224,
+246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59,
+189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97,
+24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88,
+238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234,
+244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159,
+242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79,
+218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178,
+57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249,
+225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243,
+201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229,
+144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151,
+40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215,
+237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182,
+75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190,
+86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231,
+101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174,
+248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214,
+213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11,
+9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163,
+78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117,
+175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115,
+202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199,
+57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217,
+119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111,
+183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28,
+223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178,
+169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23,
+95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128,
+230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87,
+117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188,
+119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248,
+212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223,
+112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23,
+29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36,
+120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25,
+159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241,
+164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175,
+121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246,
+189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126,
+206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135,
+63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106,
+201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128,
+81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245,
+167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245,
+171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196,
+57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226,
+21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217,
+186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183,
+93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225,
+71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94,
+205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238,
+95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35,
+217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210,
+91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143,
+61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67,
+75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204,
+233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249,
+17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215,
+183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89,
+115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191,
+249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229,
+202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59,
+50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37,
+186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171,
+150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184,
+251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247,
+176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253,
+254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112,
+252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226,
+65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120,
+78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239,
+123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77,
+205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117,
+175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208,
+55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19,
+142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154,
+24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71,
+126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164,
+251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4,
+102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64,
+124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4,
+184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210,
+124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194,
+57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187,
+126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178,
+92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124,
+223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186,
+219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163,
+148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174,
+67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119,
+190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75,
+51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224,
+50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238,
+218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82,
+121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27,
+174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235,
+188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45,
+150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249,
+218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27,
+218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185,
+205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167,
+240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254,
+245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102,
+62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181,
+204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174,
+181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68,
+89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60,
+185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205,
+21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100,
+210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222,
+220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180,
+17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253,
+225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254,
+130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41,
+31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35,
+80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109,
+154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178,
+93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159,
+241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144,
+32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239,
+162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222,
+1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26,
+38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245,
+133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70,
+123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35,
+30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200,
+253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32,
+233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155,
+119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179,
+196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223,
+252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88,
+74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142,
+208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94,
+255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177,
+55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124,
+37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78,
+250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226,
+164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240,
+88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196,
+194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195,
+228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138,
+139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245,
+186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44,
+165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27,
+216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63,
+188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153,
+119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185,
+22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229,
+148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33,
+35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120,
+208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42,
+171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124,
+35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189,
+77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3,
+183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158,
+112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122,
+74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0,
+79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106,
+186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236,
+71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83,
+34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201,
+204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154,
+152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131,
+138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63,
+238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94,
+15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135,
+60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244,
+53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239,
+219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90,
+235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124,
+228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24,
+209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72,
+136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191,
+108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179,
+253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229,
+184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167,
+207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230,
+54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175,
+75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207,
+27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151,
+63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134,
+204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64,
+223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95,
+191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226,
+213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185,
+249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244,
+39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92,
+190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127,
+159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226,
+33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183,
+118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65,
+162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25,
+73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226,
+161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203,
+81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26,
+52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187,
+90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149,
+46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146,
+68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203,
+197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49,
+34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203,
+172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14,
+41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108,
+47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249,
+251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168,
+147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73,
+40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161,
+107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123,
+151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127,
+209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29,
+115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125,
+11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182,
+31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198,
+90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213,
+137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103,
+181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181,
+5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39,
+157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161,
+78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107,
+72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152,
+49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157,
+114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223,
+236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119,
+196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205,
+111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253,
+241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183,
+93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251,
+100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198,
+191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81,
+251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183,
+2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146,
+125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165,
+243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62,
+196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51,
+199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133,
+237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91,
+172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153,
+166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80,
+110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93,
+160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179,
+222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247,
+7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190,
+253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192,
+72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143,
+26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215,
+236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67,
+162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171,
+27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12,
+78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147,
+116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253,
+53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241,
+69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17,
+167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159,
+28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254,
+199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186,
+6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61,
+253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235,
+136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136,
+70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162,
+58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103,
+156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246,
+137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181,
+32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161,
+127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197,
+139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104,
+150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202,
+36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185,
+246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118,
+240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253,
+170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223,
+203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89,
+198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168,
+239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62,
+119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244,
+62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141,
+212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253,
+67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124,
+244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94,
+246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187,
+61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142,
+228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241,
+201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242,
+217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176,
+101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220,
+255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190,
+109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204,
+67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5,
+99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168,
+107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137,
+113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254,
+73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78,
+219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50,
+105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90,
+110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172,
+244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144,
+114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234,
+253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229,
+3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217,
+98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127,
+121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23,
+191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6,
+234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191,
+205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212,
+219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49,
+71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159,
+249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89,
+152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100,
+165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253,
+97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206,
+52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224,
+79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119,
+224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103,
+188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242,
+75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246,
+183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38,
+29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190,
+243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191,
+246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106,
+163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26,
+164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223,
+130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173,
+69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237,
+215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178,
+186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112,
+144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233,
+106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190,
+133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201,
+32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166,
+155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119,
+223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242,
+212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35,
+101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43,
+41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100,
+107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173,
+181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239,
+190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74,
+109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45,
+125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111,
+134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7,
+217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110,
+47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187,
+110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105,
+144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169,
+219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231,
+174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124,
+6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53,
+82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96,
+240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38,
+165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245,
+248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30,
+211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44,
+153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55,
+253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95,
+45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26,
+169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238,
+203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6,
+89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65,
+6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65,
+6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32,
+131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131,
+12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0,
+0,0,0,73,69,78,68,174,66,96,130};
+
+
+int splash_image11_sz = sizeof(splash_image11);
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage12.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage12.c
new file mode 100644
index 0000000000..7f4f87d41f
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage12.c
@@ -0,0 +1,2168 @@
+const unsigned char splash_image12[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82,
+146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,
+43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7,
+184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206,
+57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88,
+98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68,
+122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32,
+88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214,
+222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152,
+99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12,
+50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108,
+115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218,
+182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104,
+115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124,
+194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180,
+103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36,
+182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149,
+110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201,
+37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57,
+21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126,
+175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141,
+58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108,
+236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44,
+203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85,
+89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149,
+223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88,
+46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157,
+86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165,
+239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201,
+132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89,
+38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109,
+174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53,
+43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9,
+182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164,
+41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90,
+185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226,
+186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223,
+111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155,
+120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5,
+87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7,
+157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150,
+231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164,
+41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42,
+183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251,
+157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75,
+47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76,
+203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184,
+86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229,
+1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153,
+199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198,
+158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212,
+247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182,
+167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157,
+246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182,
+196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215,
+185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29,
+72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152,
+116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152,
+140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73,
+134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76,
+39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233,
+242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174,
+61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75,
+63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253,
+48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175,
+16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172,
+133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197,
+117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216,
+203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249,
+94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237,
+241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64,
+110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34,
+93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53,
+35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185,
+245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191,
+58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186,
+173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157,
+59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222,
+163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115,
+174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66,
+224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4,
+90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222,
+71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231,
+94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233,
+170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182,
+82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148,
+114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175,
+200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101,
+62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168,
+82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3,
+36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137,
+173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45,
+3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12,
+50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,
+200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200,
+84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51,
+196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86,
+195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247,
+122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162,
+139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91,
+88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191,
+85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159,
+105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207,
+53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211,
+142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81,
+94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182,
+41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131,
+236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27,
+109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147,
+5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151,
+140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188,
+137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173,
+166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215,
+1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61,
+246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203,
+97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181,
+0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233,
+194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92,
+69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102,
+207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226,
+124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59,
+245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103,
+88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27,
+249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73,
+180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28,
+166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239,
+180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86,
+129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254,
+190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250,
+45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83,
+116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227,
+231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223,
+178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28,
+166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254,
+58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73,
+149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89,
+231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215,
+195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201,
+211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171,
+42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50,
+215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235,
+201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152,
+6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93,
+178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255,
+111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235,
+141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159,
+233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206,
+199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116,
+137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223,
+92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49,
+25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255,
+143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147,
+209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152,
+76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79,
+207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108,
+123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231,
+99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252,
+242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12,
+245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212,
+109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220,
+181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167,
+44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219,
+61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95,
+46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99,
+73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214,
+231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73,
+101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142,
+46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45,
+24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46,
+60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122,
+142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167,
+147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140,
+227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140,
+109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249,
+157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55,
+231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178,
+184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69,
+50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241,
+107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120,
+94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165,
+190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246,
+90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211,
+242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4,
+186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61,
+200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25,
+100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,
+170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,
+12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,
+144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,
+24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,
+100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100,
+144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98,
+123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205,
+55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28,
+179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252,
+228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186,
+230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215,
+94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226,
+94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119,
+148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75,
+141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69,
+115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1,
+7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233,
+159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255,
+220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204,
+230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37,
+134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75,
+35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47,
+236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188,
+121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0,
+120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249,
+200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183,
+230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185,
+187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210,
+208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243,
+165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135,
+62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85,
+243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158,
+6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47,
+126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205,
+126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130,
+14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4,
+10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199,
+31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108,
+118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96,
+220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196,
+39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45,
+111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30,
+52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200,
+0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94,
+121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249,
+206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243,
+156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176,
+143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232,
+106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223,
+222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239,
+194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231,
+53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0,
+192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233,
+174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231,
+55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121,
+195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125,
+112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19,
+225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158,
+244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92,
+90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110,
+89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70,
+16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234,
+0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199,
+152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127,
+248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239,
+127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48,
+240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242,
+172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187,
+135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214,
+179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99,
+216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143,
+187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242,
+230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7,
+54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64,
+193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70,
+9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182,
+223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223,
+119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156,
+114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93,
+239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2,
+21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38,
+3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192,
+82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135,
+235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206,
+43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8,
+12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184,
+227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221,
+3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244,
+162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199,
+59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73,
+122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113,
+223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100,
+125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120,
+5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103,
+116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205,
+43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68,
+206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80,
+28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47,
+40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241,
+238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87,
+190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251,
+187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88,
+96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119,
+12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39,
+3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237,
+186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215,
+45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74,
+6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88,
+3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204,
+140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15,
+12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112,
+140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167,
+231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54,
+239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24,
+129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9,
+32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128,
+65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49,
+195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178,
+107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76,
+2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93,
+215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192,
+1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105,
+128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2,
+129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175,
+118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226,
+73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80,
+136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137,
+39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138,
+87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61,
+96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121,
+1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184,
+23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249,
+17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20,
+32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144,
+95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34,
+112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66,
+87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215,
+158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192,
+72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18,
+149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222,
+243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210,
+1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181,
+46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104,
+33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160,
+0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242,
+1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250,
+210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113,
+201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114,
+101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189,
+205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195,
+72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163,
+214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217,
+157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51,
+13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166,
+0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3,
+120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184,
+3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58,
+206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215,
+126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115,
+207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114,
+100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217,
+240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117,
+21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187,
+48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185,
+93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3,
+34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202,
+0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199,
+22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70,
+204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234,
+122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154,
+115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205,
+197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241,
+227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8,
+117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123,
+220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70,
+3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206,
+189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27,
+215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45,
+94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97,
+255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116,
+215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19,
+182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158,
+128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118,
+93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72,
+172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231,
+243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212,
+246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5,
+11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235,
+152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54,
+251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15,
+1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109,
+154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183,
+235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186,
+235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184,
+199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204,
+75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225,
+93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159,
+255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130,
+144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241,
+30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97,
+130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104,
+189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111,
+128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215,
+127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6,
+125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9,
+221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178,
+221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69,
+157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102,
+180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225,
+58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60,
+10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10,
+210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133,
+152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16,
+27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84,
+231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162,
+23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215,
+10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101,
+40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139,
+115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144,
+88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93,
+9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66,
+43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234,
+155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60,
+9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26,
+20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115,
+206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7,
+20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136,
+238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3,
+156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73,
+7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55,
+187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119,
+189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72,
+116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146,
+123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66,
+134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99,
+152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123,
+62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0,
+116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199,
+147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48,
+252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61,
+90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241,
+48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246,
+183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231,
+185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132,
+53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57,
+150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88,
+154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183,
+205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187,
+219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195,
+194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113,
+137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160,
+5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196,
+216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100,
+95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207,
+161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174,
+21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241,
+254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105,
+118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184,
+60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214,
+197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52,
+93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64,
+237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188,
+9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173,
+6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88,
+42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114,
+142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146,
+151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143,
+67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49,
+93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181,
+164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9,
+128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4,
+3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41,
+80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73,
+173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153,
+145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113,
+187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114,
+76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204,
+110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214,
+128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221,
+237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208,
+218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70,
+206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4,
+26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224,
+107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63,
+150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132,
+214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30,
+251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217,
+5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181,
+74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113,
+9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8,
+7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116,
+57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93,
+13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6,
+157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129,
+69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254,
+251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141,
+231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27,
+245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177,
+6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153,
+54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245,
+219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114,
+234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17,
+52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97,
+215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23,
+8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192,
+203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139,
+231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53,
+173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36,
+8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87,
+193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203,
+104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180,
+50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32,
+106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192,
+3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78,
+129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117,
+196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214,
+12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28,
+9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211,
+108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4,
+67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96,
+224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238,
+239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47,
+53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251,
+159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124,
+234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101,
+128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102,
+94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109,
+59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16,
+92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198,
+224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147,
+198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6,
+159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175,
+225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130,
+60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0,
+2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124,
+10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65,
+75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107,
+245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56,
+156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215,
+179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106,
+45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198,
+174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67,
+160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98,
+178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160,
+86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10,
+198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98,
+152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0,
+134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185,
+251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202,
+124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7,
+101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101,
+68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204,
+73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184,
+188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83,
+174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202,
+144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176,
+206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37,
+79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129,
+150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7,
+219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0,
+166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242,
+27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104,
+164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31,
+183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136,
+186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131,
+97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235,
+154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129,
+23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220,
+51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187,
+16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193,
+126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164,
+81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155,
+150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73,
+250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129,
+145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4,
+195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9,
+8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56,
+68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37,
+13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115,
+1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32,
+210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36,
+136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241,
+70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90,
+182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84,
+190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234,
+59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24,
+136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40,
+141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7,
+17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234,
+202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149,
+109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210,
+197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101,
+170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223,
+121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138,
+109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38,
+100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180,
+110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14,
+12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12,
+117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192,
+16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45,
+47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252,
+5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86,
+94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227,
+229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45,
+0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13,
+177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148,
+90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174,
+53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145,
+120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116,
+49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192,
+64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95,
+9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120,
+134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29,
+111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186,
+235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249,
+122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2,
+111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17,
+10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161,
+201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2,
+66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193,
+32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233,
+98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244,
+12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129,
+133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179,
+121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153,
+223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117,
+131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150,
+63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114,
+91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7,
+149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1,
+32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17,
+111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207,
+194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218,
+123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103,
+25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12,
+246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186,
+242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94,
+223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103,
+229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143,
+6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101,
+10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230,
+159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245,
+55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34,
+49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30,
+68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171,
+238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210,
+205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45,
+191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212,
+185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237,
+177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127,
+130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180,
+208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86,
+31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16,
+62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127,
+104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129,
+68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76,
+235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49,
+24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172,
+131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234,
+109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98,
+33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241,
+248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121,
+99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188,
+83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48,
+89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129,
+197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10,
+137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110,
+10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2,
+68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110,
+70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111,
+130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246,
+101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46,
+161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93,
+155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181,
+67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116,
+229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36,
+120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132,
+132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226,
+61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26,
+137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176,
+101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17,
+125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101,
+108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79,
+44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129,
+151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222,
+125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241,
+89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246,
+251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242,
+246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18,
+192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120,
+18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64,
+66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141,
+196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35,
+195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107,
+109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186,
+17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145,
+232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1,
+18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219,
+111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242,
+80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202,
+19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232,
+70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31,
+221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197,
+35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150,
+53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36,
+196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54,
+190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240,
+194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148,
+222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173,
+153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41,
+80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155,
+218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233,
+121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33,
+81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4,
+43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219,
+1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222,
+4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196,
+123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247,
+67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200,
+48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221,
+181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196,
+19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130,
+66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163,
+0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125,
+174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45,
+223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45,
+1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104,
+6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160,
+188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131,
+176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33,
+202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151,
+150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122,
+234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184,
+87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164,
+128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217,
+173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90,
+2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12,
+144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48,
+136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173,
+55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251,
+253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10,
+191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143,
+65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50,
+88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21,
+192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217,
+0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185,
+194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140,
+138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242,
+207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129,
+50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144,
+176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30,
+137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186,
+158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91,
+91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22,
+8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207,
+123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171,
+47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101,
+93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74,
+162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235,
+137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224,
+57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10,
+212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135,
+94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2,
+12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128,
+200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29,
+216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153,
+216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236,
+158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219,
+115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2,
+240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216,
+195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173,
+243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222,
+115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73,
+32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71,
+31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192,
+33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12,
+60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13,
+219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225,
+173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1,
+141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245,
+103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56,
+78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4,
+137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11,
+28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164,
+46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56,
+19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96,
+112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173,
+253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91,
+241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1,
+200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44,
+222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89,
+25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144,
+46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131,
+133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230,
+85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157,
+161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64,
+194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103,
+180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139,
+161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179,
+77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29,
+232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163,
+107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216,
+233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188,
+123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57,
+94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165,
+231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15,
+46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26,
+125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7,
+130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1,
+7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232,
+70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198,
+15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20,
+207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29,
+6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249,
+180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103,
+219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184,
+175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3,
+20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112,
+12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158,
+219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36,
+123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220,
+115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35,
+202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163,
+213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232,
+54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171,
+18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75,
+75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33,
+100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237,
+78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59,
+230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185,
+241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18,
+12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113,
+47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15,
+96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251,
+1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86,
+114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23,
+181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29,
+40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7,
+193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150,
+203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227,
+61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215,
+215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222,
+133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147,
+0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177,
+45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96,
+88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12,
+27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82,
+193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90,
+102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186,
+242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66,
+110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111,
+255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248,
+175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119,
+186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13,
+2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184,
+131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219,
+15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25,
+28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250,
+104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22,
+74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194,
+142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86,
+62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211,
+109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117,
+251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13,
+188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103,
+5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182,
+220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248,
+64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189,
+173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243,
+199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153,
+42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109,
+164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80,
+209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158,
+131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219,
+181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119,
+180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65,
+107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154,
+84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155,
+81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94,
+5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2,
+14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178,
+244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231,
+90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48,
+58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196,
+149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0,
+224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47,
+40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110,
+35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65,
+5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64,
+128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224,
+81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240,
+42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24,
+168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16,
+38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64,
+136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254,
+65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28,
+167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162,
+251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189,
+220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50,
+125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211,
+0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47,
+141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142,
+240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32,
+243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158,
+4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208,
+1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108,
+149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97,
+64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10,
+52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67,
+160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0,
+22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160,
+40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32,
+248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86,
+249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4,
+222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230,
+188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46,
+239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114,
+76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103,
+68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9,
+138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74,
+149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50,
+40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221,
+12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173,
+41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4,
+94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96,
+16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132,
+101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47,
+98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220,
+226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91,
+150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247,
+172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251,
+58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5,
+106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134,
+132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85,
+66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242,
+32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144,
+180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197,
+102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30,
+120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174,
+101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19,
+32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73,
+75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99,
+244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107,
+253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77,
+98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113,
+214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99,
+210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202,
+82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23,
+81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184,
+215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241,
+38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81,
+241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22,
+152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112,
+229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84,
+74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0,
+161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142,
+139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119,
+101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52,
+202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203,
+61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252,
+184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191,
+21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233,
+212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94,
+64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132,
+190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72,
+196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121,
+17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75,
+90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5,
+2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173,
+197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75,
+112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194,
+232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42,
+157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97,
+116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156,
+119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147,
+250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221,
+175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117,
+8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243,
+151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174,
+27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23,
+163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105,
+144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251,
+24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193,
+130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48,
+21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24,
+24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116,
+90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20,
+165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96,
+60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72,
+186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191,
+63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81,
+229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254,
+231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254,
+97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142,
+222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226,
+166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9,
+9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0,
+43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68,
+43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26,
+96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90,
+186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89,
+143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8,
+24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199,
+120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197,
+249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160,
+246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164,
+62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52,
+191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238,
+221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172,
+107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96,
+220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132,
+22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128,
+97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17,
+4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164,
+165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93,
+59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242,
+200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128,
+17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122,
+46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223,
+182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52,
+40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246,
+182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222,
+247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47,
+93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255,
+223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86,
+191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21,
+94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76,
+229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29,
+215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95,
+246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37,
+24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168,
+12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111,
+202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1,
+28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89,
+150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121,
+251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191,
+249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142,
+127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42,
+19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39,
+18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246,
+90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226,
+57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171,
+97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74,
+199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71,
+116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251,
+121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40,
+3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179,
+40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111,
+41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123,
+98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107,
+23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173,
+223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26,
+223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71,
+89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134,
+192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130,
+254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254,
+197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150,
+97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245,
+101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241,
+130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0,
+65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103,
+159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162,
+140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27,
+0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128,
+5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183,
+190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18,
+126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128,
+217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239,
+197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96,
+240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60,
+145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247,
+2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82,
+144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128,
+65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24,
+140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49,
+212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77,
+51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199,
+72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224,
+165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16,
+90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134,
+27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227,
+29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49,
+196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141,
+140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4,
+14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144,
+140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81,
+2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96,
+105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75,
+76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169,
+181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130,
+6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4,
+67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169,
+129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2,
+134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91,
+191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72,
+40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202,
+241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10,
+165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51,
+42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224,
+69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107,
+136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192,
+64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46,
+5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11,
+65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94,
+68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140,
+83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119,
+93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118,
+183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247,
+208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26,
+140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0,
+134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5,
+253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136,
+64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3,
+173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116,
+0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190,
+193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114,
+4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34,
+45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166,
+139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137,
+120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65,
+186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173,
+101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51,
+3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80,
+68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178,
+81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120,
+16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28,
+64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60,
+146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42,
+210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156,
+92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21,
+130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80,
+160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149,
+50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166,
+117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175,
+132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70,
+169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214,
+129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128,
+131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106,
+29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221,
+237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165,
+214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16,
+159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239,
+160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245,
+246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114,
+70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47,
+17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66,
+142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1,
+14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5,
+5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32,
+81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90,
+166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46,
+0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180,
+150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135,
+85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37,
+120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233,
+94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160,
+242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210,
+209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96,
+145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109,
+3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160,
+54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91,
+92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20,
+32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49,
+240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33,
+81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142,
+50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115,
+41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220,
+156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3,
+5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160,
+75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230,
+74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40,
+65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3,
+10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40,
+210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99,
+175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226,
+17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4,
+47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54,
+227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213,
+5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118,
+128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77,
+148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70,
+62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54,
+149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235,
+26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98,
+105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193,
+62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32,
+1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50,
+128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102,
+186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75,
+24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77,
+242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151,
+240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123,
+192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51,
+203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28,
+1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74,
+143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34,
+90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230,
+254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36,
+184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193,
+75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64,
+68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159,
+18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17,
+111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71,
+70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105,
+160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117,
+240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178,
+151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34,
+196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164,
+184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150,
+93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222,
+4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34,
+64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152,
+153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84,
+46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140,
+27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40,
+150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163,
+30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3,
+153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60,
+5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112,
+112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172,
+13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208,
+209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236,
+139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68,
+13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212,
+94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49,
+98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225,
+16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186,
+134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94,
+46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24,
+196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217,
+237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62,
+17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23,
+36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228,
+57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61,
+228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36,
+72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98,
+130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138,
+232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17,
+111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64,
+145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178,
+205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109,
+121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86,
+227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49,
+34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144,
+40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232,
+155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83,
+235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29,
+235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102,
+246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151,
+16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229,
+48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187,
+29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164,
+131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128,
+4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143,
+135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240,
+210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9,
+200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208,
+242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25,
+27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60,
+90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132,
+60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103,
+145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176,
+14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143,
+229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235,
+133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97,
+20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27,
+178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177,
+169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147,
+40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6,
+20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112,
+176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6,
+129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171,
+102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72,
+240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200,
+155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242,
+178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101,
+224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49,
+173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80,
+0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126,
+144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176,
+128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104,
+197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56,
+103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215,
+254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250,
+130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174,
+68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74,
+80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16,
+19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24,
+0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229,
+193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216,
+216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192,
+37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80,
+112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89,
+247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115,
+151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142,
+190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209,
+73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194,
+160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227,
+224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92,
+195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187,
+150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16,
+242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7,
+20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144,
+48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67,
+100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15,
+20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188,
+11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168,
+31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251,
+181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232,
+190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240,
+8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190,
+0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202,
+239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195,
+112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235,
+101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248,
+4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226,
+241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16,
+225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52,
+117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143,
+64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28,
+90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208,
+200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172,
+108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84,
+68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18,
+18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248,
+4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51,
+26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108,
+235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183,
+2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64,
+170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112,
+83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1,
+67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91,
+154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14,
+94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176,
+157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194,
+58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167,
+188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186,
+35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203,
+33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37,
+239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204,
+43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15,
+14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225,
+108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75,
+149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1,
+18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160,
+182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112,
+62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22,
+235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13,
+131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238,
+35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12,
+222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114,
+93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17,
+72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181,
+181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89,
+123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33,
+90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30,
+128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48,
+116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48,
+62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103,
+56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131,
+37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33,
+195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202,
+200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151,
+170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190,
+68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126,
+45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149,
+96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144,
+1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177,
+11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23,
+98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120,
+101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91,
+2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108,
+149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168,
+1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162,
+246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16,
+103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15,
+3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7,
+80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237,
+179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199,
+203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24,
+168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245,
+251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138,
+100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12,
+34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7,
+9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237,
+183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142,
+51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96,
+66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134,
+29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200,
+241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233,
+130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53,
+36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167,
+18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169,
+37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12,
+223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225,
+39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1,
+97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134,
+94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169,
+242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110,
+89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161,
+60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150,
+140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157,
+48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24,
+136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34,
+202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227,
+45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220,
+95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126,
+91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240,
+98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47,
+33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138,
+192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110,
+189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42,
+157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141,
+26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208,
+151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195,
+0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94,
+133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158,
+93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46,
+7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121,
+210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6,
+20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250,
+122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148,
+87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191,
+255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205,
+192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69,
+208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65,
+194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69,
+186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181,
+209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121,
+202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89,
+217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1,
+47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38,
+162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28,
+183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208,
+160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224,
+74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65,
+48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247,
+252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144,
+128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23,
+35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81,
+238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216,
+47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24,
+85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127,
+26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229,
+115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131,
+68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164,
+178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210,
+245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5,
+6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10,
+6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97,
+244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126,
+75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81,
+226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153,
+84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157,
+185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52,
+72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250,
+96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65,
+140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203,
+91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192,
+238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147,
+170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6,
+131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37,
+48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2,
+138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236,
+104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150,
+111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255,
+245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203,
+68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86,
+13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145,
+49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18,
+53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102,
+127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178,
+175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229,
+117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47,
+255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120,
+70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191,
+111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102,
+238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128,
+162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40,
+181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22,
+53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120,
+133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52,
+127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59,
+54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25,
+250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19,
+9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165,
+217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197,
+36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34,
+176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98,
+252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0,
+248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29,
+12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115,
+159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120,
+179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230,
+33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19,
+151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82,
+160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62,
+9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232,
+3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26,
+249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155,
+223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14,
+10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156,
+12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214,
+188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195,
+170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88,
+80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134,
+4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45,
+75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0,
+34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119,
+126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221,
+41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30,
+92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195,
+212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239,
+5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145,
+150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56,
+84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129,
+132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131,
+5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196,
+53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127,
+253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150,
+188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176,
+179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24,
+121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140,
+120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143,
+73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86,
+134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26,
+32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88,
+103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20,
+246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91,
+119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188,
+132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121,
+77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185,
+22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167,
+223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181,
+144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18,
+222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1,
+162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108,
+7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236,
+186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105,
+126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31,
+100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25,
+166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75,
+119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208,
+189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182,
+106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94,
+246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168,
+1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210,
+155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0,
+0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207,
+225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221,
+6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60,
+5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77,
+67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12,
+158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229,
+11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222,
+69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180,
+224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15,
+65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143,
+128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20,
+248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195,
+167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37,
+24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108,
+213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241,
+53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122,
+127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93,
+135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225,
+78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1,
+2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0,
+65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238,
+9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152,
+239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96,
+232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46,
+33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182,
+37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181,
+30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104,
+89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242,
+16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25,
+204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32,
+142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131,
+46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48,
+100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18,
+132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165,
+228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165,
+79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32,
+30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45,
+62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188,
+2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4,
+22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18,
+8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121,
+8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17,
+37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141,
+44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136,
+81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150,
+158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1,
+6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40,
+39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240,
+16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24,
+2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250,
+247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20,
+196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158,
+108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27,
+186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165,
+218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101,
+167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111,
+3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12,
+61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46,
+67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33,
+40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161,
+134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87,
+65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199,
+123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199,
+184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6,
+112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8,
+70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50,
+134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67,
+48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59,
+136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171,
+143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190,
+4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20,
+39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114,
+253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208,
+35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221,
+6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197,
+210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8,
+1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145,
+3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184,
+251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61,
+154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46,
+242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164,
+219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83,
+226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177,
+236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203,
+40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18,
+84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32,
+196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50,
+252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98,
+217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114,
+148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91,
+54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128,
+90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201,
+73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67,
+48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209,
+4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228,
+187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66,
+38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212,
+65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12,
+208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5,
+48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31,
+16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128,
+96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116,
+23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114,
+223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127,
+38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0,
+131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196,
+17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30,
+66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204,
+69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16,
+74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97,
+105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223,
+89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121,
+243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33,
+67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94,
+66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110,
+190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69,
+22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228,
+40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129,
+197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61,
+132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229,
+49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151,
+206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237,
+253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59,
+0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36,
+150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27,
+168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115,
+225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133,
+60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134,
+29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35,
+88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236,
+25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227,
+100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242,
+166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96,
+144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203,
+138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234,
+254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61,
+8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12,
+37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202,
+23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6,
+89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147,
+56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185,
+190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144,
+245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159,
+249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226,
+87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232,
+91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59,
+223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12,
+178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62,
+241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210,
+72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253,
+145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114,
+255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82,
+52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107,
+127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142,
+126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124,
+89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34,
+179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58,
+64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81,
+213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55,
+253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39,
+141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39,
+105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234,
+237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251,
+178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46,
+58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234,
+197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207,
+23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23,
+13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125,
+199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164,
+108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63,
+249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28,
+242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63,
+251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174,
+101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50,
+77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88,
+176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135,
+31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62,
+188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227,
+145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35,
+245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244,
+138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107,
+115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71,
+252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121,
+118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145,
+89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26,
+169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63,
+63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249,
+230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219,
+77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116,
+49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241,
+108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242,
+93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238,
+119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54,
+52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89,
+174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127,
+169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195,
+31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241,
+181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125,
+194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42,
+231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146,
+178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231,
+130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162,
+31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70,
+178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252,
+193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47,
+109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113,
+12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44,
+251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92,
+124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166,
+169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167,
+105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255,
+230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222,
+151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151,
+53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167,
+175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151,
+230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223,
+252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143,
+229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250,
+11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164,
+253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116,
+116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124,
+234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254,
+38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211,
+171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158,
+205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153,
+117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254,
+244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189,
+146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79,
+92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27,
+40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246,
+222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163,
+61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113,
+57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98,
+76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216,
+209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101,
+201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39,
+53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116,
+218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142,
+61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117,
+215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113,
+95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30,
+242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146,
+204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222,
+172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103,
+118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160,
+67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231,
+210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9,
+199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141,
+75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132,
+196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143,
+229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127,
+246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73,
+9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92,
+84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234,
+171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175,
+186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95,
+127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255,
+249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102,
+165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236,
+193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243,
+233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6,
+202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254,
+200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123,
+23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21,
+176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224,
+246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59,
+189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97,
+24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88,
+238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234,
+244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159,
+242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79,
+218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178,
+57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249,
+225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243,
+201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229,
+144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151,
+40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215,
+237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182,
+75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190,
+86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231,
+101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174,
+248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214,
+213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11,
+9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163,
+78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117,
+175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115,
+202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199,
+57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217,
+119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111,
+183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28,
+223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178,
+169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23,
+95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128,
+230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87,
+117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188,
+119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248,
+212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223,
+112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23,
+29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36,
+120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25,
+159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241,
+164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175,
+121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246,
+189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126,
+206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135,
+63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106,
+201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128,
+81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245,
+167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245,
+171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196,
+57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226,
+21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217,
+186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183,
+93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225,
+71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94,
+205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238,
+95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35,
+217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210,
+91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143,
+61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67,
+75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204,
+233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249,
+17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215,
+183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89,
+115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191,
+249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229,
+202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59,
+50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37,
+186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171,
+150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184,
+251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247,
+176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253,
+254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112,
+252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226,
+65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120,
+78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239,
+123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77,
+205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117,
+175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208,
+55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19,
+142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154,
+24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71,
+126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164,
+251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4,
+102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64,
+124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4,
+184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210,
+124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194,
+57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187,
+126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178,
+92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124,
+223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186,
+219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163,
+148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174,
+67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119,
+190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75,
+51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224,
+50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238,
+218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82,
+121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27,
+174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235,
+188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45,
+150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249,
+218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27,
+218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185,
+205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167,
+240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254,
+245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102,
+62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181,
+204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174,
+181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68,
+89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60,
+185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205,
+21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100,
+210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222,
+220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180,
+17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253,
+225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254,
+130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41,
+31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35,
+80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109,
+154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178,
+93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159,
+241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144,
+32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239,
+162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222,
+1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26,
+38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245,
+133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70,
+123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35,
+30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200,
+253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32,
+233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155,
+119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179,
+196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223,
+252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88,
+74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142,
+208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94,
+255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177,
+55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124,
+37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78,
+250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226,
+164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240,
+88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196,
+194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195,
+228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138,
+139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245,
+186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44,
+165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27,
+216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63,
+188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153,
+119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185,
+22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229,
+148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33,
+35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120,
+208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42,
+171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124,
+35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189,
+77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3,
+183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158,
+112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122,
+74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0,
+79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106,
+186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236,
+71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83,
+34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201,
+204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154,
+152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131,
+138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63,
+238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94,
+15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135,
+60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244,
+53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239,
+219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90,
+235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124,
+228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24,
+209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72,
+136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191,
+108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179,
+253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229,
+184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167,
+207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230,
+54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175,
+75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207,
+27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151,
+63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134,
+204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64,
+223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95,
+191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226,
+213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185,
+249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244,
+39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92,
+190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127,
+159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226,
+33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183,
+118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65,
+162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25,
+73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226,
+161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203,
+81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26,
+52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187,
+90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149,
+46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146,
+68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203,
+197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49,
+34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203,
+172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14,
+41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108,
+47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249,
+251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168,
+147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73,
+40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161,
+107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123,
+151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127,
+209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29,
+115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125,
+11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182,
+31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198,
+90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213,
+137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103,
+181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181,
+5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39,
+157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161,
+78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107,
+72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152,
+49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157,
+114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223,
+236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119,
+196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205,
+111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253,
+241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183,
+93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251,
+100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198,
+191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81,
+251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183,
+2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146,
+125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165,
+243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62,
+196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51,
+199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133,
+237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91,
+172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153,
+166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80,
+110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93,
+160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179,
+222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247,
+7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190,
+253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192,
+72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143,
+26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215,
+236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67,
+162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171,
+27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12,
+78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147,
+116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253,
+53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241,
+69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17,
+167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159,
+28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254,
+199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186,
+6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61,
+253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235,
+136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136,
+70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162,
+58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103,
+156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246,
+137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181,
+32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161,
+127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197,
+139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104,
+150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202,
+36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185,
+246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118,
+240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253,
+170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223,
+203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89,
+198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168,
+239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62,
+119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244,
+62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141,
+212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253,
+67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124,
+244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94,
+246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187,
+61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142,
+228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241,
+201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242,
+217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176,
+101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220,
+255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190,
+109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204,
+67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5,
+99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168,
+107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137,
+113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254,
+73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78,
+219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50,
+105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90,
+110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172,
+244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144,
+114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234,
+253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229,
+3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217,
+98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127,
+121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23,
+191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6,
+234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191,
+205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212,
+219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49,
+71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159,
+249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89,
+152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100,
+165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253,
+97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206,
+52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224,
+79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119,
+224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103,
+188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242,
+75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246,
+183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38,
+29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190,
+243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191,
+246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106,
+163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26,
+164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223,
+130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173,
+69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237,
+215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178,
+186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112,
+144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233,
+106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190,
+133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201,
+32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166,
+155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119,
+223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242,
+212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35,
+101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43,
+41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100,
+107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173,
+181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239,
+190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74,
+109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45,
+125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111,
+134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7,
+217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110,
+47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187,
+110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105,
+144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169,
+219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231,
+174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124,
+6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53,
+82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96,
+240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38,
+165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245,
+248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30,
+211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44,
+153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55,
+253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95,
+45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26,
+169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238,
+203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6,
+89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65,
+6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65,
+6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32,
+131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131,
+12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0,
+0,0,0,73,69,78,68,174,66,96,130};
+
+
+int splash_image12_sz = sizeof(splash_image12);
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage13.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage13.c
new file mode 100644
index 0000000000..454dd3dba0
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage13.c
@@ -0,0 +1,2168 @@
+const unsigned char splash_image13[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82,
+146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,
+43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7,
+184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206,
+57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88,
+98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68,
+122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32,
+88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214,
+222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152,
+99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12,
+50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108,
+115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218,
+182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104,
+115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124,
+194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180,
+103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36,
+182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149,
+110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201,
+37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57,
+21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126,
+175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141,
+58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108,
+236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44,
+203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85,
+89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149,
+223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88,
+46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157,
+86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165,
+239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201,
+132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89,
+38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109,
+174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53,
+43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9,
+182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164,
+41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90,
+185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226,
+186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223,
+111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155,
+120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5,
+87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7,
+157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150,
+231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164,
+41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42,
+183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251,
+157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75,
+47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76,
+203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184,
+86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229,
+1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153,
+199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198,
+158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212,
+247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182,
+167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157,
+246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182,
+196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215,
+185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29,
+72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152,
+116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152,
+140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73,
+134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76,
+39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233,
+242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174,
+61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75,
+63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253,
+48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175,
+16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172,
+133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197,
+117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216,
+203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249,
+94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237,
+241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64,
+110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34,
+93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53,
+35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185,
+245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191,
+58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186,
+173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157,
+59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222,
+163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115,
+174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66,
+224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4,
+90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222,
+71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231,
+94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233,
+170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182,
+82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148,
+114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175,
+200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101,
+62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168,
+82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3,
+36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137,
+173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45,
+3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12,
+50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,
+200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200,
+84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51,
+196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86,
+195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247,
+122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162,
+139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91,
+88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191,
+85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159,
+105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207,
+53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211,
+142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81,
+94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182,
+41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131,
+236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27,
+109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147,
+5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151,
+140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188,
+137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173,
+166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215,
+1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61,
+246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203,
+97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181,
+0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233,
+194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92,
+69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102,
+207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226,
+124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59,
+245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103,
+88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27,
+249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73,
+180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28,
+166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239,
+180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86,
+129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254,
+190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250,
+45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83,
+116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227,
+231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223,
+178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28,
+166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254,
+58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73,
+149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89,
+231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215,
+195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201,
+211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171,
+42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50,
+215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235,
+201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152,
+6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93,
+178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255,
+111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235,
+141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159,
+233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206,
+199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116,
+137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223,
+92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49,
+25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255,
+143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147,
+209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152,
+76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79,
+207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108,
+123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231,
+99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252,
+242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12,
+245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212,
+109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220,
+181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167,
+44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219,
+61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95,
+46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99,
+73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214,
+231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73,
+101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142,
+46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45,
+24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46,
+60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122,
+142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167,
+147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140,
+227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140,
+109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249,
+157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55,
+231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178,
+184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69,
+50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241,
+107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120,
+94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165,
+190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246,
+90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211,
+242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4,
+186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61,
+200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25,
+100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,
+170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,
+12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,
+144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,
+24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,
+100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100,
+144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98,
+123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205,
+55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28,
+179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252,
+228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186,
+230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215,
+94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226,
+94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119,
+148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75,
+141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69,
+115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1,
+7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233,
+159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255,
+220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204,
+230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37,
+134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75,
+35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47,
+236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188,
+121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0,
+120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249,
+200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183,
+230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185,
+187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210,
+208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243,
+165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135,
+62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85,
+243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158,
+6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47,
+126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205,
+126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130,
+14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4,
+10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199,
+31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108,
+118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96,
+220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196,
+39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45,
+111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30,
+52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200,
+0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94,
+121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249,
+206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243,
+156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176,
+143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232,
+106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223,
+222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239,
+194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231,
+53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0,
+192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233,
+174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231,
+55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121,
+195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125,
+112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19,
+225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158,
+244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92,
+90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110,
+89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70,
+16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234,
+0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199,
+152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127,
+248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239,
+127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48,
+240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242,
+172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187,
+135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214,
+179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99,
+216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143,
+187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242,
+230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7,
+54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64,
+193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70,
+9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182,
+223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223,
+119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156,
+114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93,
+239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2,
+21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38,
+3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192,
+82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135,
+235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206,
+43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8,
+12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184,
+227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221,
+3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244,
+162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199,
+59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73,
+122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113,
+223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100,
+125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120,
+5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103,
+116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205,
+43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68,
+206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80,
+28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47,
+40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241,
+238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87,
+190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251,
+187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88,
+96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119,
+12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39,
+3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237,
+186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215,
+45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74,
+6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88,
+3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204,
+140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15,
+12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112,
+140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167,
+231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54,
+239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24,
+129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9,
+32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128,
+65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49,
+195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178,
+107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76,
+2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93,
+215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192,
+1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105,
+128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2,
+129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175,
+118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226,
+73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80,
+136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137,
+39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138,
+87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61,
+96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121,
+1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184,
+23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249,
+17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20,
+32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144,
+95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34,
+112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66,
+87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215,
+158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192,
+72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18,
+149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222,
+243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210,
+1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181,
+46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104,
+33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160,
+0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242,
+1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250,
+210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113,
+201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114,
+101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189,
+205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195,
+72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163,
+214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217,
+157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51,
+13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166,
+0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3,
+120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184,
+3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58,
+206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215,
+126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115,
+207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114,
+100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217,
+240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117,
+21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187,
+48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185,
+93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3,
+34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202,
+0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199,
+22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70,
+204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234,
+122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154,
+115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205,
+197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241,
+227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8,
+117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123,
+220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70,
+3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206,
+189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27,
+215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45,
+94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97,
+255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116,
+215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19,
+182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158,
+128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118,
+93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72,
+172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231,
+243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212,
+246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5,
+11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235,
+152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54,
+251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15,
+1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109,
+154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183,
+235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186,
+235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184,
+199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204,
+75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225,
+93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159,
+255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130,
+144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241,
+30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97,
+130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104,
+189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111,
+128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215,
+127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6,
+125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9,
+221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178,
+221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69,
+157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102,
+180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225,
+58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60,
+10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10,
+210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133,
+152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16,
+27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84,
+231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162,
+23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215,
+10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101,
+40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139,
+115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144,
+88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93,
+9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66,
+43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234,
+155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60,
+9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26,
+20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115,
+206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7,
+20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136,
+238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3,
+156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73,
+7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55,
+187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119,
+189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72,
+116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146,
+123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66,
+134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99,
+152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123,
+62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0,
+116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199,
+147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48,
+252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61,
+90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241,
+48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246,
+183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231,
+185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132,
+53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57,
+150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88,
+154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183,
+205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187,
+219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195,
+194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113,
+137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160,
+5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196,
+216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100,
+95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207,
+161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174,
+21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241,
+254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105,
+118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184,
+60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214,
+197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52,
+93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64,
+237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188,
+9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173,
+6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88,
+42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114,
+142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146,
+151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143,
+67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49,
+93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181,
+164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9,
+128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4,
+3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41,
+80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73,
+173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153,
+145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113,
+187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114,
+76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204,
+110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214,
+128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221,
+237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208,
+218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70,
+206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4,
+26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224,
+107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63,
+150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132,
+214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30,
+251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217,
+5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181,
+74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113,
+9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8,
+7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116,
+57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93,
+13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6,
+157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129,
+69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254,
+251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141,
+231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27,
+245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177,
+6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153,
+54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245,
+219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114,
+234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17,
+52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97,
+215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23,
+8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192,
+203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139,
+231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53,
+173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36,
+8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87,
+193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203,
+104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180,
+50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32,
+106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192,
+3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78,
+129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117,
+196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214,
+12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28,
+9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211,
+108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4,
+67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96,
+224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238,
+239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47,
+53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251,
+159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124,
+234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101,
+128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102,
+94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109,
+59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16,
+92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198,
+224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147,
+198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6,
+159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175,
+225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130,
+60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0,
+2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124,
+10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65,
+75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107,
+245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56,
+156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215,
+179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106,
+45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198,
+174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67,
+160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98,
+178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160,
+86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10,
+198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98,
+152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0,
+134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185,
+251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202,
+124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7,
+101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101,
+68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204,
+73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184,
+188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83,
+174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202,
+144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176,
+206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37,
+79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129,
+150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7,
+219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0,
+166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242,
+27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104,
+164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31,
+183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136,
+186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131,
+97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235,
+154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129,
+23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220,
+51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187,
+16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193,
+126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164,
+81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155,
+150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73,
+250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129,
+145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4,
+195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9,
+8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56,
+68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37,
+13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115,
+1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32,
+210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36,
+136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241,
+70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90,
+182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84,
+190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234,
+59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24,
+136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40,
+141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7,
+17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234,
+202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149,
+109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210,
+197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101,
+170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223,
+121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138,
+109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38,
+100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180,
+110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14,
+12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12,
+117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192,
+16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45,
+47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252,
+5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86,
+94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227,
+229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45,
+0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13,
+177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148,
+90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174,
+53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145,
+120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116,
+49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192,
+64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95,
+9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120,
+134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29,
+111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186,
+235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249,
+122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2,
+111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17,
+10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161,
+201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2,
+66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193,
+32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233,
+98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244,
+12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129,
+133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179,
+121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153,
+223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117,
+131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150,
+63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114,
+91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7,
+149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1,
+32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17,
+111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207,
+194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218,
+123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103,
+25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12,
+246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186,
+242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94,
+223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103,
+229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143,
+6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101,
+10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230,
+159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245,
+55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34,
+49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30,
+68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171,
+238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210,
+205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45,
+191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212,
+185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237,
+177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127,
+130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180,
+208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86,
+31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16,
+62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127,
+104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129,
+68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76,
+235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49,
+24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172,
+131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234,
+109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98,
+33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241,
+248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121,
+99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188,
+83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48,
+89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129,
+197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10,
+137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110,
+10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2,
+68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110,
+70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111,
+130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246,
+101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46,
+161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93,
+155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181,
+67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116,
+229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36,
+120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132,
+132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226,
+61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26,
+137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176,
+101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17,
+125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101,
+108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79,
+44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129,
+151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222,
+125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241,
+89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246,
+251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242,
+246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18,
+192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120,
+18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64,
+66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141,
+196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35,
+195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107,
+109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186,
+17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145,
+232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1,
+18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219,
+111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242,
+80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202,
+19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232,
+70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31,
+221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197,
+35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150,
+53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36,
+196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54,
+190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240,
+194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148,
+222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173,
+153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41,
+80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155,
+218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233,
+121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33,
+81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4,
+43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219,
+1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222,
+4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196,
+123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247,
+67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200,
+48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221,
+181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196,
+19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130,
+66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163,
+0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125,
+174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45,
+223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45,
+1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104,
+6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160,
+188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131,
+176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33,
+202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151,
+150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122,
+234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184,
+87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164,
+128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217,
+173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90,
+2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12,
+144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48,
+136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173,
+55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251,
+253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10,
+191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143,
+65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50,
+88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21,
+192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217,
+0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185,
+194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140,
+138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242,
+207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129,
+50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144,
+176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30,
+137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186,
+158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91,
+91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22,
+8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207,
+123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171,
+47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101,
+93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74,
+162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235,
+137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224,
+57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10,
+212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135,
+94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2,
+12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128,
+200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29,
+216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153,
+216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236,
+158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219,
+115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2,
+240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216,
+195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173,
+243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222,
+115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73,
+32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71,
+31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192,
+33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12,
+60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13,
+219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225,
+173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1,
+141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245,
+103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56,
+78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4,
+137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11,
+28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164,
+46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56,
+19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96,
+112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173,
+253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91,
+241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1,
+200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44,
+222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89,
+25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144,
+46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131,
+133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230,
+85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157,
+161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64,
+194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103,
+180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139,
+161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179,
+77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29,
+232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163,
+107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216,
+233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188,
+123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57,
+94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165,
+231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15,
+46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26,
+125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7,
+130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1,
+7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232,
+70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198,
+15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20,
+207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29,
+6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249,
+180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103,
+219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184,
+175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3,
+20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112,
+12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158,
+219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36,
+123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220,
+115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35,
+202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163,
+213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232,
+54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171,
+18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75,
+75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33,
+100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237,
+78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59,
+230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185,
+241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18,
+12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113,
+47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15,
+96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251,
+1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86,
+114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23,
+181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29,
+40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7,
+193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150,
+203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227,
+61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215,
+215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222,
+133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147,
+0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177,
+45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96,
+88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12,
+27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82,
+193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90,
+102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186,
+242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66,
+110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111,
+255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248,
+175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119,
+186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13,
+2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184,
+131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219,
+15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25,
+28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250,
+104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22,
+74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194,
+142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86,
+62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211,
+109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117,
+251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13,
+188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103,
+5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182,
+220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248,
+64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189,
+173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243,
+199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153,
+42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109,
+164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80,
+209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158,
+131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219,
+181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119,
+180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65,
+107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154,
+84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155,
+81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94,
+5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2,
+14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178,
+244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231,
+90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48,
+58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196,
+149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0,
+224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47,
+40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110,
+35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65,
+5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64,
+128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224,
+81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240,
+42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24,
+168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16,
+38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64,
+136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254,
+65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28,
+167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162,
+251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189,
+220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50,
+125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211,
+0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47,
+141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142,
+240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32,
+243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158,
+4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208,
+1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108,
+149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97,
+64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10,
+52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67,
+160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0,
+22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160,
+40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32,
+248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86,
+249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4,
+222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230,
+188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46,
+239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114,
+76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103,
+68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9,
+138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74,
+149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50,
+40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221,
+12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173,
+41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4,
+94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96,
+16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132,
+101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47,
+98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220,
+226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91,
+150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247,
+172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251,
+58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5,
+106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134,
+132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85,
+66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242,
+32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144,
+180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197,
+102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30,
+120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174,
+101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19,
+32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73,
+75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99,
+244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107,
+253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77,
+98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113,
+214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99,
+210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202,
+82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23,
+81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184,
+215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241,
+38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81,
+241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22,
+152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112,
+229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84,
+74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0,
+161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142,
+139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119,
+101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52,
+202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203,
+61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252,
+184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191,
+21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233,
+212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94,
+64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132,
+190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72,
+196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121,
+17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75,
+90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5,
+2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173,
+197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75,
+112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194,
+232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42,
+157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97,
+116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156,
+119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147,
+250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221,
+175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117,
+8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243,
+151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174,
+27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23,
+163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105,
+144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251,
+24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193,
+130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48,
+21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24,
+24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116,
+90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20,
+165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96,
+60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72,
+186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191,
+63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81,
+229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254,
+231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254,
+97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142,
+222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226,
+166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9,
+9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0,
+43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68,
+43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26,
+96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90,
+186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89,
+143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8,
+24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199,
+120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197,
+249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160,
+246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164,
+62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52,
+191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238,
+221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172,
+107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96,
+220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132,
+22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128,
+97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17,
+4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164,
+165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93,
+59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242,
+200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128,
+17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122,
+46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223,
+182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52,
+40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246,
+182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222,
+247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47,
+93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255,
+223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86,
+191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21,
+94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76,
+229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29,
+215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95,
+246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37,
+24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168,
+12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111,
+202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1,
+28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89,
+150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121,
+251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191,
+249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142,
+127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42,
+19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39,
+18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246,
+90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226,
+57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171,
+97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74,
+199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71,
+116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251,
+121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40,
+3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179,
+40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111,
+41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123,
+98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107,
+23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173,
+223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26,
+223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71,
+89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134,
+192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130,
+254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254,
+197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150,
+97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245,
+101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241,
+130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0,
+65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103,
+159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162,
+140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27,
+0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128,
+5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183,
+190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18,
+126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128,
+217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239,
+197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96,
+240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60,
+145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247,
+2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82,
+144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128,
+65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24,
+140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49,
+212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77,
+51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199,
+72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224,
+165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16,
+90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134,
+27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227,
+29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49,
+196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141,
+140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4,
+14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144,
+140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81,
+2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96,
+105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75,
+76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169,
+181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130,
+6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4,
+67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169,
+129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2,
+134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91,
+191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72,
+40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202,
+241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10,
+165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51,
+42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224,
+69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107,
+136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192,
+64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46,
+5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11,
+65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94,
+68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140,
+83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119,
+93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118,
+183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247,
+208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26,
+140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0,
+134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5,
+253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136,
+64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3,
+173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116,
+0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190,
+193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114,
+4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34,
+45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166,
+139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137,
+120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65,
+186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173,
+101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51,
+3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80,
+68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178,
+81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120,
+16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28,
+64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60,
+146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42,
+210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156,
+92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21,
+130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80,
+160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149,
+50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166,
+117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175,
+132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70,
+169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214,
+129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128,
+131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106,
+29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221,
+237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165,
+214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16,
+159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239,
+160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245,
+246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114,
+70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47,
+17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66,
+142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1,
+14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5,
+5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32,
+81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90,
+166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46,
+0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180,
+150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135,
+85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37,
+120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233,
+94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160,
+242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210,
+209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96,
+145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109,
+3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160,
+54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91,
+92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20,
+32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49,
+240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33,
+81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142,
+50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115,
+41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220,
+156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3,
+5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160,
+75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230,
+74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40,
+65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3,
+10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40,
+210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99,
+175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226,
+17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4,
+47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54,
+227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213,
+5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118,
+128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77,
+148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70,
+62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54,
+149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235,
+26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98,
+105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193,
+62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32,
+1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50,
+128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102,
+186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75,
+24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77,
+242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151,
+240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123,
+192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51,
+203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28,
+1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74,
+143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34,
+90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230,
+254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36,
+184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193,
+75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64,
+68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159,
+18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17,
+111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71,
+70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105,
+160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117,
+240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178,
+151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34,
+196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164,
+184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150,
+93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222,
+4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34,
+64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152,
+153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84,
+46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140,
+27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40,
+150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163,
+30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3,
+153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60,
+5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112,
+112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172,
+13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208,
+209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236,
+139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68,
+13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212,
+94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49,
+98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225,
+16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186,
+134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94,
+46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24,
+196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217,
+237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62,
+17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23,
+36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228,
+57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61,
+228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36,
+72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98,
+130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138,
+232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17,
+111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64,
+145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178,
+205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109,
+121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86,
+227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49,
+34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144,
+40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232,
+155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83,
+235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29,
+235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102,
+246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151,
+16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229,
+48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187,
+29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164,
+131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128,
+4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143,
+135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240,
+210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9,
+200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208,
+242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25,
+27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60,
+90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132,
+60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103,
+145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176,
+14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143,
+229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235,
+133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97,
+20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27,
+178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177,
+169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147,
+40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6,
+20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112,
+176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6,
+129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171,
+102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72,
+240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200,
+155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242,
+178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101,
+224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49,
+173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80,
+0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126,
+144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176,
+128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104,
+197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56,
+103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215,
+254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250,
+130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174,
+68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74,
+80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16,
+19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24,
+0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229,
+193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216,
+216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192,
+37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80,
+112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89,
+247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115,
+151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142,
+190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209,
+73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194,
+160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227,
+224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92,
+195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187,
+150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16,
+242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7,
+20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144,
+48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67,
+100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15,
+20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188,
+11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168,
+31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251,
+181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232,
+190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240,
+8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190,
+0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202,
+239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195,
+112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235,
+101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248,
+4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226,
+241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16,
+225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52,
+117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143,
+64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28,
+90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208,
+200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172,
+108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84,
+68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18,
+18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248,
+4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51,
+26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108,
+235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183,
+2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64,
+170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112,
+83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1,
+67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91,
+154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14,
+94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176,
+157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194,
+58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167,
+188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186,
+35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203,
+33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37,
+239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204,
+43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15,
+14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225,
+108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75,
+149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1,
+18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160,
+182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112,
+62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22,
+235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13,
+131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238,
+35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12,
+222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114,
+93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17,
+72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181,
+181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89,
+123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33,
+90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30,
+128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48,
+116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48,
+62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103,
+56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131,
+37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33,
+195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202,
+200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151,
+170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190,
+68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126,
+45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149,
+96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144,
+1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177,
+11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23,
+98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120,
+101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91,
+2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108,
+149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168,
+1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162,
+246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16,
+103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15,
+3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7,
+80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237,
+179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199,
+203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24,
+168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245,
+251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138,
+100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12,
+34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7,
+9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237,
+183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142,
+51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96,
+66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134,
+29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200,
+241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233,
+130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53,
+36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167,
+18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169,
+37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12,
+223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225,
+39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1,
+97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134,
+94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169,
+242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110,
+89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161,
+60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150,
+140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157,
+48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24,
+136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34,
+202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227,
+45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220,
+95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126,
+91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240,
+98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47,
+33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138,
+192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110,
+189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42,
+157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141,
+26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208,
+151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195,
+0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94,
+133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158,
+93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46,
+7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121,
+210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6,
+20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250,
+122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148,
+87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191,
+255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205,
+192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69,
+208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65,
+194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69,
+186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181,
+209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121,
+202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89,
+217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1,
+47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38,
+162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28,
+183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208,
+160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224,
+74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65,
+48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247,
+252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144,
+128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23,
+35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81,
+238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216,
+47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24,
+85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127,
+26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229,
+115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131,
+68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164,
+178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210,
+245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5,
+6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10,
+6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97,
+244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126,
+75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81,
+226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153,
+84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157,
+185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52,
+72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250,
+96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65,
+140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203,
+91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192,
+238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147,
+170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6,
+131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37,
+48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2,
+138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236,
+104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150,
+111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255,
+245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203,
+68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86,
+13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145,
+49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18,
+53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102,
+127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178,
+175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229,
+117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47,
+255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120,
+70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191,
+111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102,
+238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128,
+162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40,
+181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22,
+53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120,
+133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52,
+127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59,
+54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25,
+250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19,
+9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165,
+217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197,
+36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34,
+176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98,
+252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0,
+248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29,
+12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115,
+159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120,
+179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230,
+33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19,
+151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82,
+160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62,
+9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232,
+3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26,
+249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155,
+223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14,
+10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156,
+12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214,
+188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195,
+170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88,
+80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134,
+4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45,
+75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0,
+34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119,
+126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221,
+41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30,
+92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195,
+212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239,
+5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145,
+150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56,
+84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129,
+132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131,
+5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196,
+53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127,
+253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150,
+188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176,
+179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24,
+121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140,
+120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143,
+73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86,
+134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26,
+32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88,
+103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20,
+246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91,
+119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188,
+132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121,
+77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185,
+22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167,
+223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181,
+144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18,
+222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1,
+162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108,
+7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236,
+186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105,
+126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31,
+100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25,
+166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75,
+119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208,
+189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182,
+106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94,
+246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168,
+1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210,
+155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0,
+0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207,
+225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221,
+6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60,
+5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77,
+67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12,
+158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229,
+11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222,
+69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180,
+224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15,
+65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143,
+128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20,
+248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195,
+167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37,
+24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108,
+213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241,
+53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122,
+127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93,
+135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225,
+78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1,
+2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0,
+65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238,
+9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152,
+239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96,
+232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46,
+33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182,
+37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181,
+30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104,
+89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242,
+16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25,
+204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32,
+142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131,
+46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48,
+100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18,
+132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165,
+228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165,
+79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32,
+30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45,
+62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188,
+2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4,
+22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18,
+8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121,
+8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17,
+37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141,
+44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136,
+81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150,
+158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1,
+6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40,
+39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240,
+16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24,
+2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250,
+247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20,
+196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158,
+108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27,
+186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165,
+218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101,
+167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111,
+3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12,
+61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46,
+67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33,
+40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161,
+134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87,
+65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199,
+123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199,
+184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6,
+112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8,
+70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50,
+134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67,
+48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59,
+136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171,
+143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190,
+4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20,
+39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114,
+253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208,
+35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221,
+6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197,
+210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8,
+1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145,
+3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184,
+251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61,
+154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46,
+242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164,
+219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83,
+226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177,
+236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203,
+40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18,
+84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32,
+196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50,
+252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98,
+217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114,
+148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91,
+54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128,
+90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201,
+73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67,
+48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209,
+4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228,
+187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66,
+38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212,
+65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12,
+208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5,
+48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31,
+16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128,
+96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116,
+23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114,
+223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127,
+38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0,
+131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196,
+17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30,
+66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204,
+69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16,
+74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97,
+105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223,
+89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121,
+243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33,
+67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94,
+66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110,
+190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69,
+22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228,
+40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129,
+197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61,
+132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229,
+49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151,
+206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237,
+253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59,
+0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36,
+150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27,
+168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115,
+225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133,
+60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134,
+29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35,
+88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236,
+25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227,
+100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242,
+166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96,
+144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203,
+138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234,
+254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61,
+8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12,
+37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202,
+23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6,
+89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147,
+56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185,
+190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144,
+245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159,
+249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226,
+87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232,
+91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59,
+223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12,
+178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62,
+241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210,
+72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253,
+145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114,
+255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82,
+52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107,
+127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142,
+126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124,
+89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34,
+179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58,
+64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81,
+213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55,
+253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39,
+141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39,
+105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234,
+237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251,
+178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46,
+58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234,
+197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207,
+23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23,
+13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125,
+199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164,
+108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63,
+249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28,
+242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63,
+251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174,
+101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50,
+77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88,
+176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135,
+31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62,
+188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227,
+145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35,
+245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244,
+138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107,
+115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71,
+252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121,
+118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145,
+89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26,
+169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63,
+63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249,
+230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219,
+77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116,
+49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241,
+108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242,
+93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238,
+119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54,
+52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89,
+174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127,
+169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195,
+31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241,
+181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125,
+194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42,
+231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146,
+178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231,
+130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162,
+31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70,
+178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252,
+193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47,
+109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113,
+12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44,
+251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92,
+124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166,
+169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167,
+105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255,
+230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222,
+151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151,
+53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167,
+175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151,
+230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223,
+252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143,
+229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250,
+11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164,
+253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116,
+116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124,
+234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254,
+38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211,
+171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158,
+205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153,
+117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254,
+244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189,
+146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79,
+92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27,
+40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246,
+222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163,
+61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113,
+57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98,
+76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216,
+209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101,
+201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39,
+53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116,
+218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142,
+61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117,
+215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113,
+95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30,
+242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146,
+204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222,
+172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103,
+118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160,
+67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231,
+210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9,
+199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141,
+75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132,
+196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143,
+229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127,
+246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73,
+9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92,
+84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234,
+171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175,
+186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95,
+127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255,
+249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102,
+165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236,
+193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243,
+233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6,
+202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254,
+200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123,
+23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21,
+176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224,
+246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59,
+189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97,
+24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88,
+238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234,
+244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159,
+242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79,
+218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178,
+57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249,
+225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243,
+201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229,
+144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151,
+40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215,
+237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182,
+75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190,
+86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231,
+101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174,
+248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214,
+213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11,
+9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163,
+78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117,
+175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115,
+202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199,
+57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217,
+119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111,
+183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28,
+223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178,
+169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23,
+95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128,
+230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87,
+117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188,
+119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248,
+212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223,
+112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23,
+29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36,
+120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25,
+159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241,
+164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175,
+121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246,
+189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126,
+206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135,
+63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106,
+201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128,
+81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245,
+167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245,
+171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196,
+57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226,
+21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217,
+186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183,
+93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225,
+71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94,
+205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238,
+95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35,
+217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210,
+91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143,
+61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67,
+75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204,
+233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249,
+17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215,
+183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89,
+115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191,
+249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229,
+202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59,
+50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37,
+186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171,
+150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184,
+251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247,
+176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253,
+254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112,
+252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226,
+65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120,
+78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239,
+123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77,
+205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117,
+175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208,
+55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19,
+142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154,
+24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71,
+126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164,
+251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4,
+102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64,
+124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4,
+184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210,
+124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194,
+57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187,
+126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178,
+92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124,
+223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186,
+219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163,
+148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174,
+67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119,
+190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75,
+51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224,
+50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238,
+218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82,
+121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27,
+174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235,
+188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45,
+150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249,
+218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27,
+218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185,
+205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167,
+240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254,
+245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102,
+62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181,
+204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174,
+181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68,
+89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60,
+185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205,
+21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100,
+210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222,
+220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180,
+17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253,
+225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254,
+130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41,
+31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35,
+80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109,
+154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178,
+93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159,
+241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144,
+32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239,
+162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222,
+1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26,
+38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245,
+133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70,
+123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35,
+30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200,
+253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32,
+233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155,
+119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179,
+196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223,
+252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88,
+74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142,
+208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94,
+255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177,
+55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124,
+37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78,
+250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226,
+164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240,
+88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196,
+194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195,
+228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138,
+139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245,
+186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44,
+165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27,
+216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63,
+188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153,
+119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185,
+22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229,
+148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33,
+35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120,
+208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42,
+171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124,
+35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189,
+77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3,
+183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158,
+112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122,
+74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0,
+79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106,
+186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236,
+71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83,
+34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201,
+204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154,
+152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131,
+138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63,
+238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94,
+15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135,
+60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244,
+53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239,
+219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90,
+235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124,
+228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24,
+209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72,
+136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191,
+108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179,
+253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229,
+184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167,
+207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230,
+54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175,
+75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207,
+27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151,
+63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134,
+204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64,
+223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95,
+191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226,
+213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185,
+249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244,
+39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92,
+190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127,
+159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226,
+33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183,
+118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65,
+162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25,
+73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226,
+161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203,
+81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26,
+52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187,
+90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149,
+46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146,
+68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203,
+197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49,
+34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203,
+172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14,
+41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108,
+47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249,
+251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168,
+147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73,
+40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161,
+107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123,
+151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127,
+209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29,
+115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125,
+11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182,
+31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198,
+90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213,
+137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103,
+181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181,
+5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39,
+157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161,
+78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107,
+72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152,
+49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157,
+114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223,
+236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119,
+196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205,
+111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253,
+241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183,
+93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251,
+100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198,
+191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81,
+251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183,
+2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146,
+125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165,
+243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62,
+196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51,
+199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133,
+237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91,
+172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153,
+166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80,
+110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93,
+160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179,
+222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247,
+7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190,
+253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192,
+72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143,
+26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215,
+236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67,
+162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171,
+27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12,
+78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147,
+116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253,
+53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241,
+69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17,
+167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159,
+28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254,
+199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186,
+6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61,
+253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235,
+136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136,
+70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162,
+58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103,
+156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246,
+137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181,
+32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161,
+127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197,
+139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104,
+150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202,
+36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185,
+246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118,
+240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253,
+170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223,
+203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89,
+198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168,
+239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62,
+119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244,
+62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141,
+212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253,
+67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124,
+244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94,
+246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187,
+61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142,
+228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241,
+201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242,
+217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176,
+101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220,
+255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190,
+109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204,
+67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5,
+99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168,
+107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137,
+113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254,
+73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78,
+219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50,
+105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90,
+110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172,
+244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144,
+114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234,
+253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229,
+3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217,
+98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127,
+121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23,
+191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6,
+234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191,
+205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212,
+219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49,
+71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159,
+249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89,
+152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100,
+165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253,
+97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206,
+52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224,
+79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119,
+224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103,
+188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242,
+75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246,
+183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38,
+29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190,
+243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191,
+246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106,
+163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26,
+164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223,
+130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173,
+69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237,
+215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178,
+186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112,
+144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233,
+106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190,
+133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201,
+32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166,
+155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119,
+223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242,
+212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35,
+101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43,
+41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100,
+107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173,
+181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239,
+190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74,
+109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45,
+125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111,
+134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7,
+217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110,
+47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187,
+110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105,
+144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169,
+219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231,
+174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124,
+6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53,
+82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96,
+240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38,
+165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245,
+248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30,
+211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44,
+153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55,
+253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95,
+45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26,
+169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238,
+203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6,
+89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65,
+6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65,
+6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32,
+131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131,
+12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0,
+0,0,0,73,69,78,68,174,66,96,130};
+
+
+int splash_image13_sz = sizeof(splash_image13);
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage14.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage14.c
new file mode 100644
index 0000000000..6bff9d8b6b
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage14.c
@@ -0,0 +1,2168 @@
+const unsigned char splash_image14[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82,
+146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,
+43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7,
+184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206,
+57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88,
+98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68,
+122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32,
+88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214,
+222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152,
+99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12,
+50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108,
+115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218,
+182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104,
+115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124,
+194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180,
+103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36,
+182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149,
+110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201,
+37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57,
+21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126,
+175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141,
+58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108,
+236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44,
+203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85,
+89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149,
+223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88,
+46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157,
+86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165,
+239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201,
+132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89,
+38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109,
+174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53,
+43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9,
+182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164,
+41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90,
+185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226,
+186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223,
+111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155,
+120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5,
+87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7,
+157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150,
+231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164,
+41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42,
+183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251,
+157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75,
+47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76,
+203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184,
+86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229,
+1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153,
+199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198,
+158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212,
+247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182,
+167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157,
+246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182,
+196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215,
+185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29,
+72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152,
+116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152,
+140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73,
+134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76,
+39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233,
+242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174,
+61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75,
+63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253,
+48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175,
+16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172,
+133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197,
+117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216,
+203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249,
+94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237,
+241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64,
+110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34,
+93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53,
+35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185,
+245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191,
+58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186,
+173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157,
+59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222,
+163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115,
+174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66,
+224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4,
+90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222,
+71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231,
+94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233,
+170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182,
+82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148,
+114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175,
+200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101,
+62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168,
+82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3,
+36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137,
+173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45,
+3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12,
+50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,
+200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200,
+84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51,
+196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86,
+195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247,
+122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162,
+139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91,
+88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191,
+85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159,
+105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207,
+53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211,
+142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81,
+94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182,
+41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131,
+236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27,
+109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147,
+5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151,
+140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188,
+137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173,
+166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215,
+1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61,
+246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203,
+97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181,
+0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233,
+194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92,
+69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102,
+207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226,
+124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59,
+245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103,
+88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27,
+249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73,
+180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28,
+166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239,
+180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86,
+129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254,
+190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250,
+45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83,
+116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227,
+231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223,
+178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28,
+166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254,
+58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73,
+149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89,
+231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215,
+195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201,
+211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171,
+42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50,
+215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235,
+201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152,
+6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93,
+178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255,
+111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235,
+141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159,
+233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206,
+199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116,
+137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223,
+92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49,
+25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255,
+143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147,
+209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152,
+76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79,
+207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108,
+123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231,
+99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252,
+242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12,
+245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212,
+109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220,
+181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167,
+44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219,
+61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95,
+46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99,
+73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214,
+231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73,
+101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142,
+46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45,
+24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46,
+60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122,
+142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167,
+147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140,
+227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140,
+109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249,
+157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55,
+231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178,
+184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69,
+50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241,
+107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120,
+94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165,
+190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246,
+90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211,
+242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4,
+186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61,
+200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25,
+100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,
+170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,
+12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,
+144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,
+24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,
+100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100,
+144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98,
+123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205,
+55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28,
+179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252,
+228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186,
+230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215,
+94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226,
+94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119,
+148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75,
+141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69,
+115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1,
+7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233,
+159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255,
+220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204,
+230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37,
+134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75,
+35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47,
+236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188,
+121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0,
+120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249,
+200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183,
+230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185,
+187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210,
+208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243,
+165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135,
+62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85,
+243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158,
+6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47,
+126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205,
+126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130,
+14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4,
+10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199,
+31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108,
+118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96,
+220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196,
+39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45,
+111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30,
+52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200,
+0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94,
+121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249,
+206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243,
+156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176,
+143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232,
+106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223,
+222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239,
+194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231,
+53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0,
+192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233,
+174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231,
+55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121,
+195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125,
+112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19,
+225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158,
+244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92,
+90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110,
+89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70,
+16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234,
+0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199,
+152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127,
+248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239,
+127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48,
+240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242,
+172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187,
+135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214,
+179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99,
+216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143,
+187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242,
+230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7,
+54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64,
+193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70,
+9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182,
+223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223,
+119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156,
+114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93,
+239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2,
+21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38,
+3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192,
+82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135,
+235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206,
+43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8,
+12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184,
+227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221,
+3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244,
+162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199,
+59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73,
+122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113,
+223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100,
+125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120,
+5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103,
+116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205,
+43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68,
+206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80,
+28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47,
+40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241,
+238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87,
+190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251,
+187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88,
+96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119,
+12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39,
+3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237,
+186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215,
+45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74,
+6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88,
+3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204,
+140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15,
+12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112,
+140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167,
+231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54,
+239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24,
+129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9,
+32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128,
+65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49,
+195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178,
+107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76,
+2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93,
+215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192,
+1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105,
+128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2,
+129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175,
+118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226,
+73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80,
+136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137,
+39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138,
+87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61,
+96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121,
+1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184,
+23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249,
+17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20,
+32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144,
+95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34,
+112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66,
+87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215,
+158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192,
+72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18,
+149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222,
+243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210,
+1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181,
+46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104,
+33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160,
+0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242,
+1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250,
+210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113,
+201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114,
+101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189,
+205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195,
+72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163,
+214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217,
+157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51,
+13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166,
+0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3,
+120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184,
+3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58,
+206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215,
+126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115,
+207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114,
+100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217,
+240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117,
+21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187,
+48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185,
+93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3,
+34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202,
+0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199,
+22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70,
+204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234,
+122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154,
+115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205,
+197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241,
+227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8,
+117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123,
+220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70,
+3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206,
+189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27,
+215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45,
+94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97,
+255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116,
+215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19,
+182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158,
+128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118,
+93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72,
+172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231,
+243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212,
+246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5,
+11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235,
+152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54,
+251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15,
+1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109,
+154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183,
+235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186,
+235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184,
+199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204,
+75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225,
+93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159,
+255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130,
+144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241,
+30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97,
+130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104,
+189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111,
+128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215,
+127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6,
+125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9,
+221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178,
+221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69,
+157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102,
+180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225,
+58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60,
+10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10,
+210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133,
+152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16,
+27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84,
+231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162,
+23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215,
+10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101,
+40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139,
+115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144,
+88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93,
+9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66,
+43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234,
+155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60,
+9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26,
+20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115,
+206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7,
+20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136,
+238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3,
+156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73,
+7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55,
+187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119,
+189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72,
+116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146,
+123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66,
+134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99,
+152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123,
+62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0,
+116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199,
+147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48,
+252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61,
+90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241,
+48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246,
+183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231,
+185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132,
+53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57,
+150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88,
+154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183,
+205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187,
+219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195,
+194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113,
+137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160,
+5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196,
+216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100,
+95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207,
+161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174,
+21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241,
+254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105,
+118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184,
+60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214,
+197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52,
+93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64,
+237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188,
+9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173,
+6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88,
+42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114,
+142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146,
+151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143,
+67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49,
+93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181,
+164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9,
+128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4,
+3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41,
+80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73,
+173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153,
+145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113,
+187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114,
+76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204,
+110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214,
+128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221,
+237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208,
+218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70,
+206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4,
+26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224,
+107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63,
+150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132,
+214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30,
+251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217,
+5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181,
+74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113,
+9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8,
+7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116,
+57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93,
+13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6,
+157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129,
+69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254,
+251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141,
+231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27,
+245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177,
+6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153,
+54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245,
+219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114,
+234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17,
+52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97,
+215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23,
+8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192,
+203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139,
+231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53,
+173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36,
+8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87,
+193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203,
+104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180,
+50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32,
+106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192,
+3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78,
+129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117,
+196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214,
+12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28,
+9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211,
+108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4,
+67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96,
+224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238,
+239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47,
+53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251,
+159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124,
+234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101,
+128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102,
+94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109,
+59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16,
+92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198,
+224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147,
+198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6,
+159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175,
+225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130,
+60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0,
+2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124,
+10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65,
+75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107,
+245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56,
+156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215,
+179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106,
+45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198,
+174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67,
+160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98,
+178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160,
+86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10,
+198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98,
+152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0,
+134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185,
+251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202,
+124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7,
+101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101,
+68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204,
+73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184,
+188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83,
+174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202,
+144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176,
+206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37,
+79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129,
+150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7,
+219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0,
+166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242,
+27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104,
+164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31,
+183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136,
+186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131,
+97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235,
+154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129,
+23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220,
+51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187,
+16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193,
+126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164,
+81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155,
+150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73,
+250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129,
+145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4,
+195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9,
+8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56,
+68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37,
+13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115,
+1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32,
+210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36,
+136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241,
+70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90,
+182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84,
+190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234,
+59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24,
+136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40,
+141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7,
+17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234,
+202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149,
+109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210,
+197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101,
+170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223,
+121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138,
+109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38,
+100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180,
+110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14,
+12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12,
+117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192,
+16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45,
+47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252,
+5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86,
+94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227,
+229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45,
+0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13,
+177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148,
+90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174,
+53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145,
+120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116,
+49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192,
+64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95,
+9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120,
+134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29,
+111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186,
+235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249,
+122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2,
+111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17,
+10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161,
+201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2,
+66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193,
+32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233,
+98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244,
+12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129,
+133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179,
+121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153,
+223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117,
+131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150,
+63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114,
+91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7,
+149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1,
+32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17,
+111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207,
+194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218,
+123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103,
+25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12,
+246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186,
+242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94,
+223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103,
+229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143,
+6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101,
+10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230,
+159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245,
+55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34,
+49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30,
+68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171,
+238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210,
+205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45,
+191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212,
+185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237,
+177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127,
+130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180,
+208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86,
+31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16,
+62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127,
+104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129,
+68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76,
+235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49,
+24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172,
+131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234,
+109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98,
+33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241,
+248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121,
+99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188,
+83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48,
+89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129,
+197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10,
+137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110,
+10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2,
+68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110,
+70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111,
+130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246,
+101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46,
+161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93,
+155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181,
+67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116,
+229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36,
+120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132,
+132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226,
+61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26,
+137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176,
+101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17,
+125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101,
+108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79,
+44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129,
+151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222,
+125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241,
+89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246,
+251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242,
+246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18,
+192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120,
+18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64,
+66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141,
+196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35,
+195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107,
+109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186,
+17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145,
+232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1,
+18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219,
+111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242,
+80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202,
+19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232,
+70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31,
+221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197,
+35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150,
+53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36,
+196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54,
+190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240,
+194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148,
+222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173,
+153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41,
+80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155,
+218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233,
+121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33,
+81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4,
+43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219,
+1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222,
+4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196,
+123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247,
+67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200,
+48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221,
+181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196,
+19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130,
+66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163,
+0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125,
+174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45,
+223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45,
+1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104,
+6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160,
+188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131,
+176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33,
+202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151,
+150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122,
+234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184,
+87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164,
+128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217,
+173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90,
+2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12,
+144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48,
+136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173,
+55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251,
+253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10,
+191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143,
+65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50,
+88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21,
+192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217,
+0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185,
+194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140,
+138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242,
+207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129,
+50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144,
+176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30,
+137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186,
+158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91,
+91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22,
+8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207,
+123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171,
+47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101,
+93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74,
+162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235,
+137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224,
+57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10,
+212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135,
+94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2,
+12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128,
+200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29,
+216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153,
+216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236,
+158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219,
+115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2,
+240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216,
+195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173,
+243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222,
+115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73,
+32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71,
+31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192,
+33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12,
+60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13,
+219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225,
+173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1,
+141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245,
+103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56,
+78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4,
+137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11,
+28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164,
+46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56,
+19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96,
+112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173,
+253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91,
+241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1,
+200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44,
+222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89,
+25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144,
+46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131,
+133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230,
+85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157,
+161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64,
+194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103,
+180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139,
+161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179,
+77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29,
+232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163,
+107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216,
+233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188,
+123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57,
+94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165,
+231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15,
+46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26,
+125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7,
+130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1,
+7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232,
+70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198,
+15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20,
+207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29,
+6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249,
+180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103,
+219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184,
+175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3,
+20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112,
+12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158,
+219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36,
+123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220,
+115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35,
+202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163,
+213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232,
+54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171,
+18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75,
+75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33,
+100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237,
+78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59,
+230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185,
+241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18,
+12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113,
+47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15,
+96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251,
+1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86,
+114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23,
+181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29,
+40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7,
+193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150,
+203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227,
+61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215,
+215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222,
+133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147,
+0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177,
+45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96,
+88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12,
+27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82,
+193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90,
+102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186,
+242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66,
+110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111,
+255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248,
+175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119,
+186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13,
+2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184,
+131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219,
+15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25,
+28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250,
+104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22,
+74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194,
+142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86,
+62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211,
+109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117,
+251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13,
+188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103,
+5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182,
+220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248,
+64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189,
+173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243,
+199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153,
+42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109,
+164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80,
+209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158,
+131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219,
+181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119,
+180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65,
+107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154,
+84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155,
+81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94,
+5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2,
+14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178,
+244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231,
+90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48,
+58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196,
+149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0,
+224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47,
+40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110,
+35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65,
+5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64,
+128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224,
+81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240,
+42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24,
+168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16,
+38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64,
+136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254,
+65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28,
+167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162,
+251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189,
+220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50,
+125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211,
+0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47,
+141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142,
+240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32,
+243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158,
+4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208,
+1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108,
+149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97,
+64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10,
+52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67,
+160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0,
+22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160,
+40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32,
+248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86,
+249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4,
+222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230,
+188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46,
+239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114,
+76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103,
+68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9,
+138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74,
+149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50,
+40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221,
+12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173,
+41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4,
+94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96,
+16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132,
+101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47,
+98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220,
+226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91,
+150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247,
+172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251,
+58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5,
+106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134,
+132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85,
+66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242,
+32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144,
+180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197,
+102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30,
+120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174,
+101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19,
+32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73,
+75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99,
+244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107,
+253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77,
+98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113,
+214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99,
+210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202,
+82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23,
+81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184,
+215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241,
+38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81,
+241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22,
+152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112,
+229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84,
+74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0,
+161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142,
+139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119,
+101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52,
+202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203,
+61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252,
+184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191,
+21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233,
+212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94,
+64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132,
+190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72,
+196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121,
+17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75,
+90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5,
+2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173,
+197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75,
+112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194,
+232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42,
+157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97,
+116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156,
+119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147,
+250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221,
+175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117,
+8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243,
+151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174,
+27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23,
+163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105,
+144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251,
+24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193,
+130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48,
+21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24,
+24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116,
+90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20,
+165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96,
+60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72,
+186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191,
+63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81,
+229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254,
+231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254,
+97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142,
+222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226,
+166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9,
+9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0,
+43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68,
+43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26,
+96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90,
+186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89,
+143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8,
+24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199,
+120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197,
+249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160,
+246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164,
+62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52,
+191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238,
+221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172,
+107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96,
+220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132,
+22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128,
+97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17,
+4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164,
+165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93,
+59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242,
+200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128,
+17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122,
+46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223,
+182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52,
+40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246,
+182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222,
+247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47,
+93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255,
+223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86,
+191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21,
+94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76,
+229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29,
+215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95,
+246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37,
+24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168,
+12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111,
+202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1,
+28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89,
+150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121,
+251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191,
+249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142,
+127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42,
+19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39,
+18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246,
+90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226,
+57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171,
+97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74,
+199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71,
+116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251,
+121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40,
+3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179,
+40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111,
+41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123,
+98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107,
+23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173,
+223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26,
+223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71,
+89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134,
+192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130,
+254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254,
+197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150,
+97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245,
+101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241,
+130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0,
+65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103,
+159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162,
+140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27,
+0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128,
+5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183,
+190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18,
+126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128,
+217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239,
+197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96,
+240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60,
+145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247,
+2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82,
+144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128,
+65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24,
+140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49,
+212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77,
+51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199,
+72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224,
+165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16,
+90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134,
+27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227,
+29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49,
+196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141,
+140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4,
+14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144,
+140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81,
+2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96,
+105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75,
+76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169,
+181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130,
+6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4,
+67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169,
+129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2,
+134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91,
+191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72,
+40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202,
+241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10,
+165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51,
+42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224,
+69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107,
+136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192,
+64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46,
+5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11,
+65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94,
+68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140,
+83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119,
+93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118,
+183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247,
+208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26,
+140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0,
+134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5,
+253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136,
+64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3,
+173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116,
+0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190,
+193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114,
+4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34,
+45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166,
+139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137,
+120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65,
+186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173,
+101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51,
+3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80,
+68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178,
+81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120,
+16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28,
+64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60,
+146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42,
+210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156,
+92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21,
+130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80,
+160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149,
+50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166,
+117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175,
+132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70,
+169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214,
+129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128,
+131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106,
+29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221,
+237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165,
+214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16,
+159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239,
+160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245,
+246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114,
+70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47,
+17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66,
+142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1,
+14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5,
+5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32,
+81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90,
+166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46,
+0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180,
+150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135,
+85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37,
+120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233,
+94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160,
+242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210,
+209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96,
+145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109,
+3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160,
+54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91,
+92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20,
+32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49,
+240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33,
+81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142,
+50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115,
+41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220,
+156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3,
+5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160,
+75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230,
+74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40,
+65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3,
+10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40,
+210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99,
+175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226,
+17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4,
+47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54,
+227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213,
+5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118,
+128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77,
+148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70,
+62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54,
+149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235,
+26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98,
+105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193,
+62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32,
+1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50,
+128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102,
+186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75,
+24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77,
+242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151,
+240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123,
+192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51,
+203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28,
+1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74,
+143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34,
+90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230,
+254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36,
+184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193,
+75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64,
+68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159,
+18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17,
+111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71,
+70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105,
+160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117,
+240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178,
+151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34,
+196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164,
+184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150,
+93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222,
+4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34,
+64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152,
+153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84,
+46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140,
+27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40,
+150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163,
+30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3,
+153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60,
+5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112,
+112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172,
+13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208,
+209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236,
+139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68,
+13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212,
+94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49,
+98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225,
+16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186,
+134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94,
+46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24,
+196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217,
+237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62,
+17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23,
+36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228,
+57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61,
+228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36,
+72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98,
+130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138,
+232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17,
+111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64,
+145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178,
+205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109,
+121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86,
+227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49,
+34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144,
+40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232,
+155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83,
+235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29,
+235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102,
+246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151,
+16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229,
+48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187,
+29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164,
+131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128,
+4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143,
+135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240,
+210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9,
+200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208,
+242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25,
+27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60,
+90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132,
+60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103,
+145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176,
+14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143,
+229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235,
+133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97,
+20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27,
+178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177,
+169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147,
+40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6,
+20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112,
+176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6,
+129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171,
+102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72,
+240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200,
+155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242,
+178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101,
+224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49,
+173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80,
+0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126,
+144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176,
+128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104,
+197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56,
+103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215,
+254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250,
+130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174,
+68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74,
+80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16,
+19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24,
+0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229,
+193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216,
+216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192,
+37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80,
+112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89,
+247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115,
+151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142,
+190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209,
+73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194,
+160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227,
+224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92,
+195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187,
+150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16,
+242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7,
+20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144,
+48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67,
+100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15,
+20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188,
+11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168,
+31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251,
+181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232,
+190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240,
+8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190,
+0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202,
+239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195,
+112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235,
+101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248,
+4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226,
+241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16,
+225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52,
+117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143,
+64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28,
+90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208,
+200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172,
+108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84,
+68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18,
+18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248,
+4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51,
+26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108,
+235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183,
+2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64,
+170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112,
+83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1,
+67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91,
+154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14,
+94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176,
+157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194,
+58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167,
+188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186,
+35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203,
+33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37,
+239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204,
+43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15,
+14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225,
+108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75,
+149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1,
+18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160,
+182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112,
+62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22,
+235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13,
+131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238,
+35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12,
+222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114,
+93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17,
+72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181,
+181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89,
+123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33,
+90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30,
+128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48,
+116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48,
+62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103,
+56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131,
+37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33,
+195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202,
+200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151,
+170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190,
+68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126,
+45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149,
+96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144,
+1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177,
+11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23,
+98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120,
+101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91,
+2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108,
+149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168,
+1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162,
+246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16,
+103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15,
+3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7,
+80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237,
+179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199,
+203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24,
+168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245,
+251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138,
+100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12,
+34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7,
+9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237,
+183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142,
+51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96,
+66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134,
+29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200,
+241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233,
+130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53,
+36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167,
+18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169,
+37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12,
+223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225,
+39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1,
+97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134,
+94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169,
+242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110,
+89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161,
+60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150,
+140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157,
+48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24,
+136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34,
+202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227,
+45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220,
+95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126,
+91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240,
+98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47,
+33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138,
+192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110,
+189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42,
+157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141,
+26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208,
+151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195,
+0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94,
+133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158,
+93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46,
+7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121,
+210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6,
+20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250,
+122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148,
+87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191,
+255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205,
+192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69,
+208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65,
+194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69,
+186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181,
+209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121,
+202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89,
+217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1,
+47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38,
+162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28,
+183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208,
+160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224,
+74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65,
+48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247,
+252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144,
+128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23,
+35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81,
+238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216,
+47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24,
+85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127,
+26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229,
+115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131,
+68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164,
+178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210,
+245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5,
+6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10,
+6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97,
+244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126,
+75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81,
+226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153,
+84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157,
+185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52,
+72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250,
+96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65,
+140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203,
+91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192,
+238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147,
+170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6,
+131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37,
+48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2,
+138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236,
+104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150,
+111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255,
+245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203,
+68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86,
+13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145,
+49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18,
+53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102,
+127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178,
+175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229,
+117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47,
+255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120,
+70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191,
+111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102,
+238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128,
+162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40,
+181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22,
+53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120,
+133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52,
+127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59,
+54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25,
+250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19,
+9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165,
+217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197,
+36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34,
+176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98,
+252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0,
+248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29,
+12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115,
+159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120,
+179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230,
+33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19,
+151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82,
+160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62,
+9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232,
+3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26,
+249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155,
+223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14,
+10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156,
+12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214,
+188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195,
+170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88,
+80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134,
+4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45,
+75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0,
+34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119,
+126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221,
+41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30,
+92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195,
+212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239,
+5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145,
+150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56,
+84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129,
+132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131,
+5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196,
+53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127,
+253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150,
+188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176,
+179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24,
+121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140,
+120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143,
+73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86,
+134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26,
+32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88,
+103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20,
+246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91,
+119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188,
+132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121,
+77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185,
+22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167,
+223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181,
+144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18,
+222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1,
+162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108,
+7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236,
+186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105,
+126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31,
+100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25,
+166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75,
+119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208,
+189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182,
+106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94,
+246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168,
+1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210,
+155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0,
+0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207,
+225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221,
+6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60,
+5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77,
+67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12,
+158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229,
+11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222,
+69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180,
+224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15,
+65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143,
+128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20,
+248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195,
+167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37,
+24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108,
+213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241,
+53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122,
+127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93,
+135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225,
+78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1,
+2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0,
+65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238,
+9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152,
+239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96,
+232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46,
+33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182,
+37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181,
+30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104,
+89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242,
+16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25,
+204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32,
+142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131,
+46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48,
+100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18,
+132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165,
+228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165,
+79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32,
+30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45,
+62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188,
+2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4,
+22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18,
+8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121,
+8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17,
+37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141,
+44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136,
+81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150,
+158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1,
+6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40,
+39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240,
+16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24,
+2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250,
+247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20,
+196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158,
+108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27,
+186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165,
+218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101,
+167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111,
+3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12,
+61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46,
+67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33,
+40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161,
+134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87,
+65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199,
+123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199,
+184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6,
+112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8,
+70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50,
+134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67,
+48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59,
+136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171,
+143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190,
+4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20,
+39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114,
+253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208,
+35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221,
+6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197,
+210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8,
+1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145,
+3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184,
+251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61,
+154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46,
+242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164,
+219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83,
+226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177,
+236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203,
+40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18,
+84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32,
+196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50,
+252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98,
+217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114,
+148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91,
+54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128,
+90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201,
+73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67,
+48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209,
+4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228,
+187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66,
+38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212,
+65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12,
+208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5,
+48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31,
+16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128,
+96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116,
+23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114,
+223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127,
+38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0,
+131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196,
+17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30,
+66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204,
+69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16,
+74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97,
+105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223,
+89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121,
+243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33,
+67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94,
+66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110,
+190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69,
+22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228,
+40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129,
+197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61,
+132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229,
+49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151,
+206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237,
+253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59,
+0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36,
+150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27,
+168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115,
+225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133,
+60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134,
+29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35,
+88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236,
+25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227,
+100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242,
+166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96,
+144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203,
+138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234,
+254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61,
+8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12,
+37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202,
+23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6,
+89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147,
+56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185,
+190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144,
+245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159,
+249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226,
+87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232,
+91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59,
+223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12,
+178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62,
+241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210,
+72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253,
+145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114,
+255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82,
+52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107,
+127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142,
+126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124,
+89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34,
+179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58,
+64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81,
+213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55,
+253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39,
+141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39,
+105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234,
+237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251,
+178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46,
+58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234,
+197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207,
+23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23,
+13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125,
+199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164,
+108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63,
+249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28,
+242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63,
+251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174,
+101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50,
+77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88,
+176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135,
+31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62,
+188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227,
+145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35,
+245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244,
+138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107,
+115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71,
+252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121,
+118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145,
+89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26,
+169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63,
+63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249,
+230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219,
+77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116,
+49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241,
+108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242,
+93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238,
+119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54,
+52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89,
+174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127,
+169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195,
+31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241,
+181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125,
+194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42,
+231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146,
+178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231,
+130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162,
+31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70,
+178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252,
+193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47,
+109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113,
+12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44,
+251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92,
+124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166,
+169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167,
+105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255,
+230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222,
+151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151,
+53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167,
+175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151,
+230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223,
+252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143,
+229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250,
+11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164,
+253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116,
+116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124,
+234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254,
+38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211,
+171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158,
+205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153,
+117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254,
+244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189,
+146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79,
+92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27,
+40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246,
+222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163,
+61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113,
+57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98,
+76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216,
+209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101,
+201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39,
+53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116,
+218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142,
+61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117,
+215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113,
+95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30,
+242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146,
+204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222,
+172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103,
+118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160,
+67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231,
+210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9,
+199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141,
+75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132,
+196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143,
+229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127,
+246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73,
+9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92,
+84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234,
+171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175,
+186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95,
+127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255,
+249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102,
+165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236,
+193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243,
+233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6,
+202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254,
+200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123,
+23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21,
+176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224,
+246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59,
+189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97,
+24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88,
+238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234,
+244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159,
+242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79,
+218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178,
+57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249,
+225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243,
+201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229,
+144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151,
+40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215,
+237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182,
+75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190,
+86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231,
+101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174,
+248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214,
+213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11,
+9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163,
+78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117,
+175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115,
+202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199,
+57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217,
+119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111,
+183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28,
+223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178,
+169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23,
+95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128,
+230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87,
+117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188,
+119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248,
+212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223,
+112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23,
+29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36,
+120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25,
+159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241,
+164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175,
+121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246,
+189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126,
+206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135,
+63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106,
+201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128,
+81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245,
+167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245,
+171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196,
+57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226,
+21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217,
+186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183,
+93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225,
+71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94,
+205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238,
+95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35,
+217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210,
+91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143,
+61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67,
+75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204,
+233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249,
+17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215,
+183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89,
+115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191,
+249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229,
+202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59,
+50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37,
+186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171,
+150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184,
+251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247,
+176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253,
+254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112,
+252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226,
+65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120,
+78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239,
+123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77,
+205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117,
+175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208,
+55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19,
+142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154,
+24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71,
+126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164,
+251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4,
+102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64,
+124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4,
+184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210,
+124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194,
+57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187,
+126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178,
+92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124,
+223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186,
+219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163,
+148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174,
+67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119,
+190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75,
+51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224,
+50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238,
+218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82,
+121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27,
+174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235,
+188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45,
+150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249,
+218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27,
+218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185,
+205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167,
+240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254,
+245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102,
+62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181,
+204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174,
+181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68,
+89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60,
+185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205,
+21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100,
+210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222,
+220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180,
+17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253,
+225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254,
+130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41,
+31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35,
+80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109,
+154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178,
+93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159,
+241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144,
+32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239,
+162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222,
+1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26,
+38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245,
+133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70,
+123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35,
+30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200,
+253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32,
+233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155,
+119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179,
+196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223,
+252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88,
+74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142,
+208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94,
+255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177,
+55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124,
+37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78,
+250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226,
+164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240,
+88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196,
+194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195,
+228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138,
+139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245,
+186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44,
+165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27,
+216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63,
+188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153,
+119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185,
+22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229,
+148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33,
+35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120,
+208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42,
+171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124,
+35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189,
+77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3,
+183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158,
+112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122,
+74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0,
+79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106,
+186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236,
+71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83,
+34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201,
+204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154,
+152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131,
+138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63,
+238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94,
+15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135,
+60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244,
+53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239,
+219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90,
+235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124,
+228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24,
+209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72,
+136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191,
+108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179,
+253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229,
+184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167,
+207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230,
+54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175,
+75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207,
+27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151,
+63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134,
+204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64,
+223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95,
+191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226,
+213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185,
+249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244,
+39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92,
+190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127,
+159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226,
+33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183,
+118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65,
+162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25,
+73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226,
+161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203,
+81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26,
+52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187,
+90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149,
+46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146,
+68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203,
+197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49,
+34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203,
+172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14,
+41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108,
+47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249,
+251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168,
+147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73,
+40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161,
+107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123,
+151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127,
+209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29,
+115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125,
+11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182,
+31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198,
+90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213,
+137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103,
+181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181,
+5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39,
+157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161,
+78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107,
+72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152,
+49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157,
+114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223,
+236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119,
+196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205,
+111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253,
+241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183,
+93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251,
+100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198,
+191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81,
+251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183,
+2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146,
+125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165,
+243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62,
+196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51,
+199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133,
+237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91,
+172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153,
+166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80,
+110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93,
+160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179,
+222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247,
+7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190,
+253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192,
+72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143,
+26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215,
+236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67,
+162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171,
+27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12,
+78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147,
+116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253,
+53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241,
+69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17,
+167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159,
+28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254,
+199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186,
+6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61,
+253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235,
+136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136,
+70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162,
+58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103,
+156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246,
+137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181,
+32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161,
+127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197,
+139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104,
+150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202,
+36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185,
+246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118,
+240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253,
+170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223,
+203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89,
+198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168,
+239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62,
+119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244,
+62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141,
+212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253,
+67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124,
+244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94,
+246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187,
+61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142,
+228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241,
+201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242,
+217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176,
+101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220,
+255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190,
+109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204,
+67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5,
+99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168,
+107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137,
+113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254,
+73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78,
+219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50,
+105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90,
+110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172,
+244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144,
+114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234,
+253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229,
+3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217,
+98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127,
+121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23,
+191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6,
+234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191,
+205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212,
+219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49,
+71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159,
+249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89,
+152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100,
+165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253,
+97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206,
+52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224,
+79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119,
+224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103,
+188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242,
+75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246,
+183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38,
+29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190,
+243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191,
+246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106,
+163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26,
+164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223,
+130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173,
+69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237,
+215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178,
+186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112,
+144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233,
+106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190,
+133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201,
+32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166,
+155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119,
+223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242,
+212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35,
+101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43,
+41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100,
+107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173,
+181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239,
+190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74,
+109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45,
+125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111,
+134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7,
+217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110,
+47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187,
+110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105,
+144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169,
+219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231,
+174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124,
+6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53,
+82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96,
+240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38,
+165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245,
+248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30,
+211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44,
+153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55,
+253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95,
+45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26,
+169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238,
+203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6,
+89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65,
+6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65,
+6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32,
+131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131,
+12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0,
+0,0,0,73,69,78,68,174,66,96,130};
+
+
+int splash_image14_sz = sizeof(splash_image14);
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage15.c b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage15.c
new file mode 100644
index 0000000000..54b3197030
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/spifi2/splashImage15.c
@@ -0,0 +1,2168 @@
+const unsigned char splash_image15[] = {
+137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,
+0,0,1,9,0,0,1,17,8,6,0,0,0,104,237,82,
+146,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,
+0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,
+0,9,112,72,89,115,0,0,14,196,0,0,14,196,1,149,
+43,14,27,0,0,134,208,73,68,65,84,120,94,237,221,7,
+184,125,85,121,239,123,243,220,251,220,123,110,203,201,73,206,
+57,73,78,154,233,150,104,236,5,107,140,198,36,38,209,88,
+98,52,246,2,246,174,81,65,69,65,64,64,197,134,5,68,
+122,81,64,65,138,34,74,17,17,5,1,27,210,165,168,32,
+88,176,131,162,243,206,207,220,235,183,247,88,99,207,181,214,
+222,255,255,159,93,254,123,190,207,243,62,179,141,57,231,152,
+99,141,247,59,222,241,142,49,231,186,85,51,200,32,131,12,
+50,69,6,72,12,50,200,32,83,101,1,18,151,236,213,108,
+115,171,91,53,183,234,209,109,79,24,165,89,170,116,215,218,
+182,89,238,105,139,229,132,102,219,91,109,211,236,117,201,104,
+115,76,166,29,155,38,179,206,187,164,217,107,155,217,207,124,
+194,182,121,62,215,155,253,172,11,233,215,170,148,229,178,180,
+103,90,235,178,220,50,159,79,191,197,234,239,214,33,21,36,
+182,80,193,172,103,72,4,150,211,40,177,220,231,91,23,149,
+110,43,131,196,230,252,70,235,226,247,90,57,25,32,81,201,
+37,123,109,211,122,17,109,154,109,246,106,125,138,9,178,57,
+21,112,205,74,89,46,214,215,185,145,108,206,111,180,46,126,
+175,149,147,165,67,98,116,124,175,214,136,210,13,217,70,141,
+58,97,219,241,237,222,180,149,81,118,199,231,206,89,116,108,
+236,122,123,141,27,244,180,99,155,122,205,49,209,213,112,44,
+203,236,110,175,13,26,197,117,230,84,121,149,6,53,215,85,
+89,184,151,11,56,94,166,239,75,83,201,232,126,39,244,149,
+223,88,94,70,247,29,123,246,226,55,236,246,79,217,158,88,
+46,121,166,9,229,48,218,236,100,180,111,211,242,90,164,157,
+86,46,147,206,25,187,254,220,241,57,7,112,185,101,94,165,
+239,238,215,46,23,93,119,36,19,159,161,144,137,121,27,201,
+132,107,156,176,109,153,110,46,95,227,219,163,114,92,65,89,
+38,36,218,7,74,142,243,240,217,238,142,143,30,182,55,109,
+174,93,61,248,162,99,227,5,182,80,128,179,142,109,202,53,
+43,145,239,145,17,140,253,88,121,30,231,181,198,180,215,9,
+182,203,235,207,173,243,66,22,186,41,197,125,187,243,103,164,
+41,101,90,249,245,230,101,194,179,23,247,237,100,108,123,90,
+185,140,63,211,188,81,185,246,252,141,70,178,156,188,94,226,
+186,253,121,157,92,46,147,207,89,184,254,232,184,99,163,223,
+111,238,216,172,107,23,82,150,205,180,235,78,203,79,41,155,
+120,141,69,229,221,166,155,90,254,43,32,75,8,92,150,5,
+87,22,110,93,216,197,246,162,180,115,36,159,47,172,177,7,
+157,114,172,188,206,114,142,45,245,154,149,248,129,230,147,150,
+231,213,231,116,219,169,24,158,123,225,7,158,92,97,102,164,
+41,101,81,30,139,231,169,142,141,27,0,169,211,22,247,42,
+183,167,150,203,194,51,149,233,198,202,39,178,140,188,78,251,
+157,38,150,203,148,115,230,174,63,90,39,229,243,21,235,75,
+47,243,242,220,226,186,237,222,190,242,152,147,34,63,165,76,
+203,219,172,103,26,193,68,190,183,105,61,185,164,29,107,184,
+86,80,150,221,221,88,56,94,67,194,131,142,182,123,174,229,
+1,17,113,238,7,91,12,163,249,99,99,165,176,112,143,153,
+199,54,225,154,227,34,255,69,158,203,103,40,126,184,78,198,
+158,175,168,64,163,31,123,62,15,61,173,218,196,52,165,212,
+247,107,37,229,87,31,155,223,95,200,88,218,242,119,40,182,
+167,151,75,249,76,237,122,119,191,226,247,45,101,25,121,157,
+246,59,181,71,123,203,101,234,57,245,243,149,249,30,59,182,
+196,50,239,61,151,44,92,119,250,51,20,178,201,215,144,215,
+185,116,202,113,219,214,3,155,187,206,132,242,95,1,89,29,
+72,76,192,225,226,99,11,247,88,222,177,5,153,118,222,152,
+116,121,174,127,184,226,121,202,138,53,246,124,11,63,254,152,
+140,174,215,221,186,167,60,58,41,211,148,82,223,175,149,73,
+134,55,191,191,144,177,180,229,125,139,237,233,229,50,254,76,
+39,108,107,127,187,111,146,113,45,49,175,211,126,167,49,233,
+242,57,87,46,83,207,169,159,175,204,247,162,99,35,41,174,
+61,38,101,250,41,215,93,222,51,108,218,53,230,203,187,75,
+63,178,43,221,202,190,242,95,1,185,5,33,81,31,27,253,
+48,92,173,73,15,91,31,43,175,179,156,99,165,76,59,175,
+16,63,220,84,99,91,116,141,148,69,81,49,43,153,104,172,
+133,244,25,249,226,244,69,249,85,121,89,92,225,170,180,197,
+117,186,180,217,158,90,46,227,207,228,188,174,69,235,171,216,
+203,200,235,162,123,78,145,249,114,153,118,206,162,123,23,249,
+94,116,108,65,102,150,249,180,235,46,245,25,54,231,26,237,
+241,109,182,109,117,148,70,126,183,109,183,151,4,167,91,64,
+110,65,72,180,45,113,30,74,161,204,159,235,188,81,37,34,
+93,218,178,114,46,28,83,56,227,193,180,165,29,91,250,53,
+35,69,222,11,153,55,64,215,43,127,212,177,178,112,253,185,
+245,113,131,237,55,214,137,105,74,233,210,23,21,185,44,191,
+58,47,221,253,139,107,76,40,235,57,64,120,246,197,199,186,
+173,69,229,153,116,173,140,242,179,40,159,100,115,242,218,157,
+59,119,207,201,229,50,249,156,185,245,34,159,93,218,226,222,
+163,245,165,151,249,226,115,231,164,44,143,41,249,41,101,115,
+174,209,109,183,191,199,40,65,126,187,69,121,94,33,89,66,
+224,114,84,1,122,31,186,44,156,194,208,70,105,151,54,4,
+90,61,124,113,108,218,48,231,244,33,208,101,92,147,56,222,
+71,246,84,248,69,199,231,42,218,220,115,149,63,126,246,231,
+94,243,153,43,210,79,74,83,72,151,223,109,219,214,35,233,
+170,231,172,243,90,60,223,162,178,238,158,33,251,203,188,182,
+82,156,215,63,4,26,169,183,11,217,172,188,150,191,211,148,
+114,153,116,206,232,222,253,249,92,102,153,151,233,199,70,175,
+200,228,114,27,203,79,41,83,243,214,202,212,107,204,229,101,
+62,159,83,175,53,105,125,203,201,2,36,6,89,59,178,168,
+82,172,182,180,149,175,15,162,100,205,229,117,144,45,45,3,
+36,214,162,172,53,195,107,243,179,109,111,235,219,202,0,137,
+173,94,6,72,172,69,89,75,134,215,117,87,138,46,68,45,
+3,36,182,122,25,32,49,200,32,131,76,149,1,18,131,12,
+50,200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,
+200,84,25,32,49,200,32,131,76,149,1,18,131,12,50,200,
+84,41,32,97,182,214,173,138,233,171,149,116,67,93,11,51,
+196,162,139,102,175,213,233,102,93,111,236,248,40,15,157,86,
+195,106,213,117,199,78,155,118,108,145,148,247,160,83,134,247,
+122,101,52,51,111,210,228,162,49,153,81,166,243,179,252,162,
+139,159,121,226,252,132,165,200,196,243,235,50,152,112,255,91,
+88,230,166,27,47,183,252,151,35,179,202,127,121,50,49,191,
+85,253,43,117,243,111,189,196,58,180,164,250,184,88,198,159,
+105,116,175,234,90,155,13,137,177,66,155,159,2,92,105,207,
+53,231,222,21,40,143,213,6,83,30,235,171,212,169,208,211,
+142,85,178,69,126,204,45,5,137,158,231,237,116,148,247,81,
+94,251,167,16,47,65,166,158,223,87,102,35,221,196,202,182,
+41,50,64,98,41,50,235,25,214,32,36,202,74,55,119,131,
+236,75,165,47,11,49,149,177,42,216,178,80,115,191,236,27,
+109,143,189,112,52,130,79,238,157,251,118,73,167,29,27,147,
+5,163,28,51,156,121,176,221,18,173,232,148,50,173,158,151,
+140,229,189,167,188,151,37,83,207,239,203,87,202,103,229,188,
+137,241,10,122,75,200,140,58,189,76,153,152,223,205,253,173,
+166,202,172,103,88,227,144,24,219,55,161,160,100,162,222,215,
+1,96,155,118,127,121,191,145,177,206,223,190,220,174,174,61,
+246,96,211,142,149,50,74,215,247,124,115,231,228,222,139,203,
+97,14,88,49,158,190,31,101,116,206,72,23,78,45,175,181,
+0,169,110,123,66,121,205,201,248,245,230,239,149,103,24,233,
+194,185,185,207,182,227,231,69,23,85,160,197,207,216,255,92,
+69,158,251,174,179,228,252,84,149,144,182,215,154,251,46,102,
+207,111,53,77,230,203,205,11,105,11,215,186,164,184,246,226,
+124,236,85,60,71,125,191,34,79,173,142,21,201,82,243,59,
+245,183,36,115,215,113,60,117,109,209,117,102,150,229,164,103,
+88,78,125,36,211,158,105,116,173,241,19,182,160,39,81,27,
+249,36,233,210,201,212,248,253,22,25,119,117,189,249,238,73,
+180,184,209,180,99,243,50,45,127,163,99,115,207,182,184,28,
+166,67,98,252,7,153,211,164,93,184,86,242,184,232,199,239,
+180,170,48,245,53,187,123,85,6,219,105,117,159,73,58,86,
+129,200,228,244,101,249,44,42,87,58,127,173,229,228,199,254,
+190,244,180,126,246,25,82,25,83,191,230,154,147,158,179,250,
+45,71,15,61,94,7,151,145,223,137,121,26,47,143,238,83,
+116,229,241,77,42,203,250,248,232,220,250,90,155,244,76,227,
+231,70,182,88,76,34,192,152,116,250,156,148,153,24,191,223,
+178,33,81,84,252,105,199,230,101,26,36,198,0,184,184,28,
+166,66,98,12,48,245,118,245,3,215,55,31,165,45,117,254,
+58,53,148,83,254,189,229,149,251,36,143,173,212,231,143,73,
+149,175,82,147,199,220,111,81,57,143,238,185,220,252,228,89,
+231,203,32,105,138,223,124,41,82,231,43,215,29,109,143,215,
+195,197,247,24,59,62,58,119,62,75,101,153,45,39,191,201,
+211,34,173,13,189,170,67,217,94,82,89,78,120,134,92,171,
+42,143,77,125,38,191,113,93,103,54,27,18,11,247,171,50,
+215,39,93,154,234,225,71,39,140,23,76,43,229,245,70,235,
+201,124,223,15,221,123,172,148,105,249,27,187,198,226,114,152,
+6,137,69,249,30,147,252,8,35,237,189,121,174,191,160,93,
+178,242,199,45,101,236,119,232,47,203,78,38,157,223,73,255,
+111,157,124,116,187,251,202,171,42,235,78,150,154,159,158,235,
+141,65,167,144,252,134,139,238,69,234,231,170,243,52,118,159,
+233,229,82,222,103,76,165,95,70,126,23,229,105,145,44,206,
+199,120,157,26,201,82,203,114,236,126,125,245,49,215,40,116,
+137,207,100,187,126,142,205,139,73,148,50,225,184,76,103,223,
+92,134,122,180,239,1,138,237,69,134,88,220,107,218,177,49,
+25,237,159,127,190,110,123,238,71,26,47,168,89,63,104,255,
+143,82,36,47,100,116,173,246,220,185,15,240,20,249,236,147,
+209,51,119,121,175,159,35,249,31,211,201,121,94,116,254,152,
+76,248,173,203,251,247,84,168,190,252,45,228,133,78,201,79,
+207,245,234,10,26,41,43,250,162,252,215,207,85,95,119,108,
+123,122,185,44,170,59,165,44,35,191,139,242,180,72,22,231,
+99,172,78,45,183,44,199,238,183,140,70,107,9,207,228,252,
+242,56,217,114,144,72,102,203,12,206,63,252,220,190,185,12,
+245,168,123,38,237,232,254,99,153,31,61,92,238,157,74,212,
+109,79,59,54,38,201,223,232,88,247,97,215,209,253,105,220,
+181,148,67,182,231,159,161,31,18,185,255,124,185,141,229,167,
+44,211,170,124,171,124,147,177,188,87,229,93,255,248,227,219,
+61,191,221,212,223,171,39,125,43,185,127,183,59,207,61,95,
+46,178,220,110,143,238,185,169,249,89,216,55,74,83,92,99,
+73,82,63,215,168,28,23,46,91,110,47,190,199,216,51,214,
+231,150,215,94,78,126,235,60,45,146,197,229,81,66,98,73,
+101,57,233,25,38,212,199,205,126,166,66,22,67,98,145,142,
+46,48,179,32,90,25,101,112,145,22,133,179,32,117,193,45,
+24,241,226,243,250,242,22,163,157,118,172,146,20,82,143,46,
+60,215,226,124,204,5,156,38,64,162,47,223,245,15,60,122,
+142,254,31,191,214,241,242,238,246,185,87,111,217,246,223,167,
+147,250,252,209,238,57,153,116,111,90,61,103,125,188,170,140,
+227,58,37,63,147,174,55,127,206,18,165,174,135,181,81,140,
+109,79,122,206,170,238,140,158,105,238,247,153,241,252,125,249,
+157,89,175,22,151,71,9,137,37,149,229,34,157,84,31,55,
+231,153,234,107,205,201,150,133,4,169,11,108,172,162,148,178,
+184,224,198,243,144,7,27,201,216,117,171,31,106,218,177,69,
+50,233,57,91,77,94,138,235,121,222,222,130,30,43,200,241,
+107,46,60,82,253,140,163,237,250,7,157,215,241,188,47,120,
+94,238,61,254,3,207,253,31,195,228,74,72,198,207,47,165,
+190,111,180,46,187,170,82,141,61,243,242,243,51,118,223,246,
+90,155,55,4,58,58,105,41,144,88,242,16,232,148,99,211,
+242,91,215,249,66,39,149,199,24,36,150,84,150,155,58,4,
+186,156,103,234,187,214,24,36,54,178,204,21,206,162,58,61,
+200,32,131,12,144,24,100,144,65,166,203,0,137,65,6,25,
+100,170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,
+170,12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,
+12,144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,
+144,24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,
+24,100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,
+100,144,65,166,202,0,137,65,6,25,100,170,12,144,24,100,
+144,65,166,202,0,137,13,40,191,250,213,175,70,107,115,98,
+123,210,190,236,159,182,221,167,191,252,229,47,59,205,250,205,
+55,223,220,252,226,23,191,104,110,186,233,166,110,159,245,28,
+179,78,146,254,231,63,255,121,183,188,241,198,27,155,159,252,
+228,39,205,15,126,240,131,230,250,235,175,111,174,187,238,186,
+230,234,171,175,110,206,59,239,188,230,35,31,249,72,179,215,
+94,123,53,207,126,246,179,155,221,118,219,173,75,231,60,226,
+94,131,108,57,25,32,177,1,133,1,150,98,59,90,26,119,
+148,209,49,192,210,176,25,59,35,206,190,104,125,126,182,75,
+141,17,231,26,12,28,4,190,253,237,111,55,87,92,113,69,
+115,193,5,23,52,95,252,226,23,155,143,126,244,163,205,1,
+7,28,208,236,178,203,46,205,211,158,246,180,230,159,254,233,
+159,154,127,252,199,127,108,30,244,160,7,53,255,252,207,255,
+220,252,203,191,252,75,243,175,255,250,175,205,51,159,249,204,
+230,180,211,78,235,174,235,250,131,108,89,25,32,177,129,37,
+134,92,174,103,59,198,92,26,94,182,147,46,70,95,158,75,
+35,214,165,7,18,48,248,209,143,126,212,193,224,194,11,47,
+236,32,112,230,153,103,54,159,252,228,39,155,195,15,63,188,
+121,235,91,223,218,188,246,181,175,109,158,245,172,103,117,0,
+120,240,131,31,60,15,5,203,135,61,236,97,205,35,31,249,
+200,230,81,143,122,84,243,216,199,62,182,249,183,127,251,183,
+230,17,143,120,68,243,232,71,63,186,75,255,230,55,191,185,
+187,190,123,13,160,216,178,50,64,98,3,75,105,208,145,210,
+208,179,94,3,35,235,245,190,44,121,6,215,92,115,77,243,
+165,47,125,169,57,253,244,211,155,19,78,56,161,249,208,135,
+62,212,236,191,255,254,205,219,222,246,182,230,85,175,122,85,
+243,244,167,63,189,249,247,127,255,247,206,248,121,4,12,158,
+6,4,143,121,204,99,154,135,63,252,225,29,4,120,10,47,
+126,241,139,155,255,248,143,255,232,60,135,55,189,233,77,205,
+126,251,237,215,193,226,113,143,123,92,119,222,11,94,240,130,
+14,60,63,251,217,207,6,72,108,97,25,32,49,200,188,4,
+10,1,3,205,118,32,80,30,3,3,221,3,30,193,241,199,
+31,223,124,240,131,31,108,246,217,103,159,102,207,61,247,108,
+118,220,113,199,230,165,47,125,105,179,237,182,219,118,48,96,
+220,140,63,48,224,29,48,240,199,63,254,241,157,87,240,196,
+39,62,177,219,6,133,87,190,242,149,29,80,236,119,252,45,
+111,121,75,231,113,0,1,207,130,215,240,133,47,124,97,30,
+52,174,11,46,31,248,192,7,230,189,9,249,28,100,203,200,
+0,137,13,42,49,254,136,245,184,234,57,70,109,11,28,94,
+121,229,149,205,89,103,157,213,28,117,212,81,205,59,223,249,
+206,230,13,111,120,67,243,234,87,191,186,3,193,115,158,243,
+156,46,102,160,165,103,176,128,192,19,96,192,140,62,96,176,
+143,209,191,236,101,47,107,94,247,186,215,117,158,0,56,232,
+106,28,123,236,177,205,43,94,241,138,206,179,120,251,219,223,
+222,5,40,121,16,96,2,52,239,121,207,123,186,32,37,239,
+194,61,172,187,182,245,167,60,229,41,29,36,158,247,188,231,
+53,95,254,242,151,187,231,24,100,203,201,0,137,13,42,0,
+192,59,176,36,214,127,250,211,159,118,158,193,167,63,253,233,
+174,37,127,253,235,95,223,188,252,229,47,111,158,255,252,231,
+55,207,120,198,51,154,167,62,245,169,205,19,158,240,132,121,
+195,183,212,218,199,88,65,1,40,226,17,128,0,120,24,125,
+112,61,70,47,157,174,194,37,151,92,50,111,244,224,192,19,
+225,65,216,22,99,224,137,184,14,176,232,142,184,246,147,158,
+244,164,238,126,212,181,62,241,137,79,116,113,12,247,116,92,
+90,176,17,255,24,100,203,201,0,137,85,150,24,107,185,110,
+89,26,111,246,199,205,79,122,203,50,125,153,46,195,136,70,
+16,226,33,80,251,44,25,233,199,62,246,177,206,96,181,234,
+0,192,128,181,236,1,0,35,231,21,4,6,233,26,216,199,
+152,159,252,228,39,119,233,197,11,116,5,28,7,145,15,127,
+248,195,93,76,194,245,108,243,12,206,63,255,252,206,160,239,
+127,255,251,119,70,253,238,119,191,187,187,39,227,230,45,48,
+240,120,22,238,1,46,98,15,96,96,123,143,61,246,232,242,
+172,171,1,26,186,26,151,93,118,89,243,254,247,191,191,187,
+135,235,184,223,118,219,109,215,129,206,115,18,203,120,22,214,
+179,127,144,165,203,0,137,53,32,169,188,81,6,206,184,99,
+216,233,99,199,200,29,163,214,65,33,67,137,63,254,241,143,
+187,62,249,13,55,220,208,124,247,187,223,109,46,191,252,242,
+230,156,115,206,233,140,86,191,158,91,206,32,31,248,192,7,
+54,15,125,232,67,187,245,104,90,106,198,207,232,24,109,64,
+193,112,157,107,159,99,135,28,114,72,115,208,65,7,117,70,
+9,12,130,146,103,159,125,118,7,139,191,249,155,191,105,182,
+223,126,251,46,96,233,220,135,60,228,33,205,223,255,253,223,
+119,70,13,42,185,142,243,120,39,89,127,205,107,94,211,156,
+114,202,41,221,210,62,198,110,36,4,196,116,37,228,239,93,
+239,122,87,55,28,10,50,15,120,192,3,230,61,13,208,2,
+21,121,147,86,160,84,188,68,153,40,179,148,213,32,155,38,
+3,36,214,128,168,200,153,135,16,79,32,80,176,79,55,192,
+82,165,207,80,226,181,215,94,219,92,116,209,69,157,234,135,
+235,34,196,43,120,238,115,159,219,25,240,125,238,115,159,206,
+43,136,161,106,145,41,227,5,0,134,199,208,24,110,186,8,
+12,89,140,224,37,47,121,73,7,12,93,2,215,62,238,184,
+227,230,251,254,160,240,153,207,124,166,51,74,192,1,17,221,
+3,199,93,95,112,145,33,139,17,136,39,128,207,139,94,244,
+162,110,100,195,62,121,219,97,135,29,186,121,17,239,120,199,
+59,186,237,23,190,240,133,221,53,5,61,93,7,108,164,73,
+122,121,3,3,247,164,242,11,46,206,231,113,184,175,231,113,
+223,255,252,207,255,108,190,247,189,239,205,123,83,202,145,100,
+125,0,198,242,100,128,196,42,75,89,113,85,234,116,33,120,
+5,223,250,214,183,154,175,127,253,235,157,171,126,198,25,103,
+116,45,237,209,71,31,221,185,216,25,70,228,122,115,225,205,
+43,0,131,76,48,98,52,214,181,180,140,204,54,67,99,68,
+206,149,134,161,1,202,145,71,30,217,236,190,251,238,29,80,
+28,23,160,4,2,219,224,162,245,126,239,123,223,219,25,47,
+40,136,25,48,234,196,8,128,67,240,82,76,65,23,130,241,
+238,188,243,206,205,103,63,251,217,174,27,194,120,25,242,87,
+190,242,149,174,219,32,63,2,148,60,28,215,113,207,191,251,
+187,191,235,242,227,153,114,13,233,4,71,121,38,224,5,88,
+96,117,232,161,135,118,121,241,12,2,169,39,157,116,82,119,
+12,172,0,68,254,60,131,114,85,150,202,182,212,65,150,39,
+3,36,86,89,84,218,128,1,36,120,10,198,251,13,231,237,
+186,235,174,93,171,200,45,215,37,208,69,184,223,253,238,215,
+45,255,225,31,254,161,107,177,25,4,101,168,148,161,48,74,
+6,196,19,96,132,60,3,70,197,224,119,218,105,167,206,88,
+3,10,70,206,240,196,8,164,7,27,129,196,204,75,96,204,
+140,149,177,139,15,48,96,231,128,10,112,216,150,63,163,15,
+12,19,40,156,195,104,79,61,245,212,238,254,60,23,215,112,
+140,103,193,224,229,93,158,92,87,90,198,109,34,149,0,167,
+231,118,93,199,121,49,98,39,186,19,174,177,239,190,251,54,
+239,123,223,251,230,71,62,92,11,160,156,15,44,158,31,24,
+129,69,55,35,224,45,227,18,131,44,79,6,72,172,1,9,
+32,168,138,205,80,180,172,127,251,183,127,219,25,54,143,128,
+65,88,106,221,77,75,230,21,48,154,140,62,48,112,45,49,
+195,21,225,103,84,254,13,157,23,112,238,185,231,118,45,178,
+107,1,138,185,12,140,211,249,174,197,192,24,36,227,74,76,
+2,76,24,181,117,6,105,122,52,112,137,21,72,195,80,93,
+215,49,219,60,0,93,5,80,0,17,160,144,150,17,83,192,
+1,3,195,167,32,228,60,198,45,118,113,240,193,7,119,105,
+128,129,103,96,91,126,228,85,90,93,25,231,131,26,0,2,
+129,180,60,25,219,233,202,196,187,113,92,158,190,250,213,175,
+118,222,4,85,182,0,49,116,55,150,47,3,36,86,89,226,
+73,168,196,98,13,2,110,123,239,189,119,23,152,3,2,80,
+136,87,160,21,62,236,176,195,58,99,176,159,231,112,226,137,
+39,118,129,58,6,126,239,123,223,187,115,231,185,223,140,138,
+87,192,235,96,104,160,225,122,60,16,134,175,155,145,126,61,
+96,232,114,188,241,141,111,236,182,25,172,201,74,134,37,121,
+1,90,125,243,34,116,115,228,129,241,2,150,248,135,107,184,
+23,224,128,2,104,1,128,123,104,205,229,5,168,24,179,249,
+17,188,24,158,77,224,2,26,158,215,53,228,15,28,120,20,
+32,192,216,1,199,243,138,145,216,231,186,210,131,139,103,144,
+95,35,30,94,250,74,80,19,40,228,7,56,148,39,47,34,
+112,24,0,177,124,25,32,177,138,82,2,66,55,67,12,66,
+87,67,139,172,91,1,14,60,8,70,105,201,32,24,47,215,
+158,17,220,238,118,183,235,186,13,250,255,182,121,30,160,192,
+72,24,156,244,206,101,96,134,31,25,24,176,24,65,240,18,
+149,150,29,92,116,23,116,13,14,60,240,192,238,156,123,222,
+243,158,29,88,0,199,181,24,51,40,48,108,70,8,56,210,
+1,130,192,33,47,194,181,117,89,4,82,193,1,20,24,181,
+46,136,252,62,246,177,255,214,122,50,127,215,122,39,175,104,
+33,176,93,123,141,167,182,215,122,92,155,239,71,118,247,160,
+0,97,201,232,117,43,156,111,31,207,194,40,141,121,27,242,
+1,88,202,225,249,207,23,212,252,215,22,152,15,111,94,250,
+210,151,180,249,51,3,243,177,237,53,120,70,79,234,238,113,
+201,37,23,181,144,48,12,108,180,200,40,209,240,134,232,114,
+101,128,196,42,74,32,161,165,243,206,193,85,87,93,213,189,
+205,168,79,174,171,192,91,208,146,51,12,0,0,5,70,195,
+72,25,59,112,128,137,52,140,157,242,2,24,24,117,30,163,
+214,53,240,30,133,235,10,110,74,247,169,79,125,170,107,217,
+157,235,26,160,194,19,160,137,105,100,216,210,18,32,4,51,
+13,127,50,94,10,42,2,171,0,196,219,144,150,65,235,166,
+0,143,60,7,32,219,109,247,204,118,157,39,240,248,214,3,
+120,118,107,224,207,237,140,249,101,47,123,105,247,218,183,184,
+3,143,193,243,9,206,26,198,229,181,128,145,123,9,124,58,
+206,115,209,109,178,124,220,227,30,219,166,127,66,7,27,215,
+126,209,139,94,208,45,183,221,214,196,175,39,119,215,223,115,
+207,221,59,48,220,124,179,216,132,46,7,72,12,222,196,114,
+100,128,196,42,10,72,36,2,111,152,19,36,24,11,183,217,
+240,37,8,104,197,1,129,135,96,157,33,50,22,198,67,117,
+21,0,224,136,35,142,232,160,32,141,119,40,188,105,201,187,
+48,242,1,12,186,6,12,221,62,80,16,51,224,214,107,185,
+93,135,183,161,5,23,223,112,15,199,76,86,226,9,72,3,
+34,96,195,205,231,41,240,54,128,140,39,35,45,112,233,202,
+0,144,24,1,3,7,40,121,61,224,128,253,219,214,127,199,
+22,28,79,107,239,243,162,54,111,23,180,221,131,47,116,70,
+204,11,208,125,0,10,112,1,27,249,205,208,39,24,88,234,
+122,0,15,117,109,215,61,248,224,3,219,178,218,185,131,154,
+115,141,2,25,49,145,6,108,164,3,24,207,241,171,95,205,
+197,38,6,89,190,12,144,88,69,41,33,193,147,48,75,241,
+227,31,255,120,215,221,16,80,20,188,76,76,66,139,207,8,
+117,3,76,146,210,122,107,81,65,128,145,9,118,50,168,123,
+220,227,30,221,126,30,1,227,118,46,200,48,26,125,120,70,
+3,10,140,219,75,83,160,192,0,141,102,152,167,0,4,206,
+189,239,125,239,219,193,138,103,224,28,247,6,42,215,1,27,
+215,2,1,199,228,197,59,28,96,161,75,96,232,211,228,45,
+94,4,99,254,220,231,206,106,33,112,116,215,202,63,236,97,
+255,208,166,223,161,245,12,118,109,143,61,191,125,174,199,116,
+215,150,150,10,102,186,63,67,55,157,59,163,42,60,9,19,
+182,128,140,241,131,210,101,151,93,218,28,117,212,145,93,158,
+128,4,40,148,207,211,159,254,140,246,156,109,71,30,204,118,
+93,217,252,236,103,55,182,229,61,87,230,131,44,79,6,72,
+172,162,4,18,98,18,32,241,157,239,124,167,139,13,232,231,
+243,8,24,170,22,156,135,192,208,181,220,246,25,126,100,212,
+246,129,73,140,12,36,24,188,214,92,215,130,247,160,149,5,
+11,221,15,239,58,136,35,240,80,24,183,126,189,96,165,235,
+152,188,164,251,193,200,24,165,123,106,213,25,57,32,48,54,
+251,25,174,24,3,111,193,53,228,69,48,210,126,247,146,15,
+1,79,224,2,13,249,179,111,251,237,95,213,2,224,89,109,
+154,127,107,243,103,186,246,227,91,176,188,184,121,246,179,183,
+235,174,239,62,98,36,32,1,98,226,14,223,248,198,55,186,
+235,6,76,188,37,240,145,23,192,178,116,12,12,30,247,184,
+199,183,64,124,84,11,151,109,219,231,16,247,120,78,123,204,
+75,103,79,108,94,243,154,215,181,222,203,197,109,183,110,225,
+93,149,65,150,46,3,36,86,81,106,72,120,219,242,243,159,
+255,124,55,68,169,242,223,229,46,119,233,60,9,192,160,130,
+144,38,51,49,34,173,102,220,113,198,165,197,103,88,142,241,
+30,78,62,249,228,182,5,255,92,231,129,48,118,105,12,97,
+130,132,107,233,114,48,98,45,54,35,227,21,0,12,176,104,
+189,25,32,21,131,48,162,194,144,221,207,53,184,245,230,111,
+128,130,251,129,26,111,66,158,121,63,206,211,218,51,120,215,
+127,242,147,159,212,110,63,179,11,52,138,69,232,114,0,6,
+125,241,139,95,216,165,115,14,240,128,133,107,2,151,209,9,
+221,32,128,112,111,35,29,201,87,186,20,158,89,58,207,178,
+221,118,207,106,14,58,232,224,230,204,51,63,219,94,231,69,
+157,55,241,212,167,62,173,211,163,143,254,72,115,211,77,102,
+180,14,93,142,229,202,0,137,85,148,178,187,97,126,132,225,
+58,173,178,247,34,24,204,95,255,245,95,119,144,96,32,60,
+10,235,188,0,173,191,104,63,195,183,237,184,185,17,186,10,
+210,241,56,184,227,186,11,90,123,94,129,116,90,116,94,133,
+152,3,32,48,72,247,98,240,246,51,72,144,2,2,80,16,
+27,48,194,33,144,200,144,65,10,116,196,36,128,36,1,84,
+231,74,207,80,193,65,60,65,122,234,154,186,52,238,245,162,
+23,189,176,61,246,156,118,249,130,14,20,130,153,188,9,215,
+10,32,226,181,0,23,88,128,26,15,7,40,120,79,160,101,
+40,214,61,60,155,96,170,184,137,116,210,203,27,96,202,139,
+115,44,61,171,17,160,171,174,186,122,136,75,108,130,12,144,
+88,101,41,189,9,193,75,163,5,130,120,220,126,193,75,93,
+9,134,9,4,60,4,251,24,166,224,36,72,128,2,239,66,
+43,59,215,106,63,185,75,7,12,249,214,3,47,129,241,234,
+155,251,110,100,188,2,199,65,201,139,83,186,40,186,6,60,
+9,19,169,24,33,15,196,126,235,140,141,50,68,198,233,26,
+20,0,28,103,232,214,179,204,126,134,159,253,244,121,207,115,
+206,243,186,81,141,23,191,248,69,157,225,39,141,235,59,7,
+20,24,189,244,0,112,204,49,199,116,128,3,37,207,13,136,
+238,237,153,237,23,7,1,4,249,82,30,158,23,100,236,3,
+156,156,251,137,79,156,212,141,36,129,114,202,190,156,137,73,
+7,89,44,3,36,214,128,128,132,202,10,18,223,252,230,55,
+187,128,34,99,101,164,188,2,134,201,32,40,119,254,174,119,
+189,107,103,8,49,8,208,96,100,130,123,160,160,27,192,72,
+116,11,196,33,128,67,48,211,204,69,211,156,181,182,188,146,
+123,221,235,94,93,75,207,48,165,1,14,173,46,248,48,66,
+134,197,75,0,31,219,210,101,73,75,227,167,140,125,206,99,
+152,51,254,120,7,165,230,88,212,182,115,203,125,148,97,123,
+62,49,8,241,13,247,210,181,2,173,120,8,210,120,78,0,
+116,220,18,20,60,31,79,75,55,196,51,108,183,157,110,199,
+147,155,189,246,122,75,243,237,111,95,219,65,34,80,8,48,
+252,6,131,151,209,47,3,36,214,128,4,18,38,84,121,61,
+90,44,193,231,226,25,133,161,70,16,16,71,96,196,148,241,
+48,0,163,17,140,218,54,175,192,219,160,130,138,12,251,246,
+183,191,125,23,39,48,157,154,145,11,244,241,20,2,16,231,
+185,62,35,98,116,192,64,173,51,182,108,131,2,35,102,132,
+53,24,74,195,143,50,112,121,137,130,80,12,223,122,173,57,
+150,110,133,115,108,51,118,30,20,175,72,126,61,131,252,88,
+154,12,150,55,85,165,245,204,87,93,117,101,219,13,217,183,
+205,255,211,219,52,79,107,190,250,213,47,55,239,125,239,187,
+219,235,60,179,205,247,115,58,72,208,51,207,60,163,5,195,
+194,219,182,145,193,147,152,44,3,36,86,89,210,154,81,113,
+137,31,254,240,135,221,108,72,113,1,6,33,120,41,22,160,
+5,229,73,36,120,201,32,205,171,96,184,166,95,139,95,196,
+216,1,64,90,195,161,90,91,202,21,103,252,186,18,0,100,
+95,226,6,206,19,4,140,33,218,167,165,102,168,214,107,207,
+161,134,67,12,157,209,50,114,198,94,106,223,190,114,191,174,
+21,117,190,235,1,6,111,192,48,173,123,234,38,25,49,241,
+254,9,104,9,164,26,9,178,45,223,158,119,223,125,247,105,
+118,219,109,151,14,18,15,126,240,131,90,47,236,239,91,184,
+60,190,131,4,125,246,179,205,9,153,75,103,162,150,242,214,
+197,35,241,34,6,72,244,203,0,137,85,22,21,51,149,52,
+93,14,113,9,195,125,12,130,39,97,226,19,15,128,199,64,
+237,51,251,146,225,235,138,48,18,158,134,117,70,14,6,188,
+9,6,238,58,94,250,210,157,224,57,48,48,95,110,242,173,
+6,80,8,88,226,45,56,199,125,169,245,64,195,49,96,88,
+42,36,24,122,169,1,65,173,142,73,111,180,38,243,28,114,
+142,253,238,45,32,171,155,4,112,202,129,119,161,59,246,146,
+151,188,172,5,192,179,59,32,122,126,207,152,188,129,7,143,
+67,240,22,236,228,95,185,216,239,61,143,148,55,25,32,49,
+93,6,72,172,1,9,40,84,90,222,132,15,202,104,57,181,
+164,226,18,153,54,173,219,193,163,200,58,67,18,181,7,9,
+128,16,147,208,5,17,200,179,79,215,196,183,23,204,226,4,
+3,115,44,4,52,25,14,99,97,56,212,177,120,14,12,41,
+80,96,248,12,142,23,17,24,244,129,33,90,2,194,136,73,
+173,1,129,231,138,6,12,217,47,93,174,97,9,108,25,153,
+145,23,251,196,97,236,55,255,97,251,237,95,211,238,127,113,
+187,255,229,221,240,39,125,233,75,95,214,61,207,71,62,114,
+76,115,254,249,95,236,186,93,134,65,61,215,51,158,241,204,
+110,68,199,203,116,202,61,202,179,24,32,209,47,3,36,214,
+128,4,18,0,193,5,230,14,107,57,77,36,2,131,187,221,
+237,110,93,11,170,197,100,248,150,134,39,13,5,26,157,208,
+218,27,5,17,140,52,252,167,149,5,9,221,13,221,19,70,
+206,107,208,183,215,10,51,102,70,200,200,25,19,229,57,4,
+26,214,157,147,86,57,192,112,94,9,132,64,161,212,210,224,
+107,24,100,93,55,33,154,110,69,246,151,105,29,179,46,63,
+150,60,34,80,148,23,249,255,220,231,206,110,142,59,238,132,
+214,248,5,84,159,223,28,120,224,65,205,177,199,30,215,30,
+251,207,22,154,79,104,189,169,167,52,59,238,248,134,246,217,
+5,54,61,199,11,155,167,61,237,25,237,179,61,191,155,181,
+74,18,155,24,32,49,89,6,72,172,1,9,36,0,34,113,
+9,239,99,120,141,154,97,27,133,0,128,116,57,128,194,8,
+7,48,24,190,228,9,48,126,129,73,0,209,202,242,20,116,
+57,184,224,96,195,184,192,196,126,32,241,95,25,140,61,93,
+13,80,176,30,80,212,49,136,128,33,203,180,244,90,126,6,
+157,238,67,182,3,128,104,9,5,93,157,82,147,38,219,129,
+69,174,107,219,51,152,150,45,16,235,190,224,105,210,217,254,
+251,31,208,66,194,20,113,31,195,53,177,76,119,201,60,141,
+231,182,105,30,213,150,205,182,237,51,232,38,153,180,165,27,
+245,188,14,160,60,44,2,14,1,197,0,137,126,25,32,177,
+6,36,144,72,119,195,167,235,180,116,190,89,201,88,77,153,
+54,58,161,75,1,18,96,1,16,246,5,4,92,112,199,245,
+219,117,47,24,179,152,133,46,132,109,223,117,208,34,11,114,
+234,82,248,184,11,99,183,47,158,68,188,7,221,137,120,17,
+52,221,10,75,199,24,169,150,157,114,229,25,56,99,142,97,
+215,64,16,27,200,82,250,168,237,90,3,138,168,235,201,23,
+8,186,158,235,202,139,231,102,236,192,38,95,242,233,57,192,
+203,104,7,88,217,7,46,166,159,235,98,72,231,57,149,139,
+231,240,174,76,202,126,128,196,100,25,32,177,6,36,21,53,
+173,154,41,218,230,75,48,100,134,1,6,226,18,137,71,36,
+8,73,77,46,242,230,35,195,209,186,50,132,124,128,133,87,
+193,227,96,20,182,25,148,243,121,28,246,49,42,251,156,203,
+104,18,188,44,129,225,24,195,11,16,76,131,102,120,94,180,
+50,12,107,14,131,88,72,233,9,88,47,1,225,60,93,32,
+106,174,134,152,9,181,94,106,210,148,234,92,249,146,87,192,
+3,54,121,117,125,96,242,185,126,19,196,220,199,49,65,78,
+129,95,30,150,188,123,94,223,185,48,115,212,179,58,215,117,
+196,56,76,210,138,4,20,131,44,150,1,18,107,64,202,214,
+12,36,204,151,48,196,103,82,21,163,20,108,212,229,200,28,
+9,30,3,96,220,253,238,119,239,166,104,251,70,165,150,211,
+108,204,59,222,241,142,29,0,18,140,140,215,225,28,30,4,
+67,113,204,251,22,140,139,87,192,104,210,18,51,34,64,96,
+224,188,18,0,48,39,129,49,234,254,80,177,1,58,231,238,
+239,223,13,169,50,230,18,12,147,224,224,121,92,151,90,47,
+53,240,8,64,44,117,147,178,116,77,177,26,239,165,228,251,
+159,96,224,255,56,44,61,183,50,114,109,207,4,152,9,124,
+234,182,5,126,212,113,94,137,247,101,82,246,3,36,250,101,
+128,196,26,145,0,34,144,80,121,205,26,100,160,186,18,102,
+94,242,20,84,250,196,38,238,112,135,59,52,183,189,237,109,
+59,136,48,2,173,163,9,72,150,140,61,80,96,100,98,16,
+92,110,134,226,26,174,171,11,194,43,96,216,60,3,134,198,
+224,121,8,160,96,91,43,28,40,112,227,121,14,214,29,147,
+198,62,75,70,13,46,64,1,14,49,118,234,88,9,7,6,
+159,245,82,107,88,228,154,174,199,160,5,95,117,193,188,175,
+225,184,103,54,98,3,110,12,159,231,144,46,153,117,10,130,
+60,12,51,55,189,9,11,28,137,185,152,72,230,213,252,0,
+2,172,135,46,199,98,25,32,177,70,164,134,132,151,189,124,
+10,142,81,48,116,144,200,103,231,65,2,56,244,203,1,65,
+75,205,208,181,142,90,83,70,206,229,182,143,209,232,187,107,
+245,25,60,227,210,245,224,126,83,198,195,200,125,195,2,56,
+156,203,203,224,49,0,65,212,54,32,112,231,243,229,43,215,
+179,228,77,184,78,9,136,62,8,128,3,207,167,84,251,106,
+45,211,123,21,221,210,181,65,1,16,61,55,47,66,26,198,
+174,59,2,46,210,1,139,231,230,109,128,9,15,73,92,67,
+160,82,224,211,115,130,71,130,181,242,234,143,140,6,47,98,
+178,12,144,88,35,18,64,104,201,50,202,225,79,115,125,160,
+86,223,219,199,101,196,37,0,66,87,131,241,3,134,209,10,
+198,64,85,122,241,10,45,39,99,103,28,60,5,26,35,98,
+152,214,1,129,193,0,70,9,134,44,121,12,160,192,107,0,
+134,192,33,94,5,48,4,22,70,28,128,36,198,93,26,185,
+251,185,71,84,55,33,121,162,182,75,45,211,58,23,116,202,
+124,131,133,116,238,153,238,12,47,72,28,6,8,0,130,7,
+101,18,153,79,244,137,167,40,43,129,79,192,0,92,75,101,
+68,205,157,240,127,38,41,255,65,22,203,134,135,68,92,204,
+73,110,102,121,172,78,55,233,156,90,234,243,72,125,157,184,
+188,36,235,254,133,74,220,64,107,167,5,21,91,224,34,83,
+174,55,40,48,8,134,0,8,92,115,45,105,60,11,134,202,
+144,210,98,199,16,25,167,150,95,215,130,2,131,109,224,176,
+206,224,75,72,4,20,230,101,4,12,186,46,249,204,190,37,
+79,197,117,221,199,125,221,147,230,126,81,49,142,40,47,129,
+150,251,104,157,222,53,1,194,245,64,66,158,77,73,7,7,
+219,60,37,249,182,95,25,128,167,249,33,186,86,148,231,0,
+166,188,47,229,161,108,50,34,194,251,226,73,229,31,191,242,
+27,228,247,201,111,83,255,126,27,73,54,36,36,166,25,104,
+164,220,159,244,117,58,251,163,101,58,146,253,165,135,80,31,
+183,95,197,180,174,139,161,162,234,38,112,139,205,184,100,136,
+186,4,250,213,160,0,8,90,63,64,224,110,131,3,47,131,
+97,216,167,223,46,184,7,20,192,194,176,104,140,54,6,235,
+154,12,172,140,63,212,112,40,187,21,224,160,219,67,65,129,
+23,1,12,62,132,91,170,107,186,31,163,46,141,28,8,220,
+51,80,136,242,100,168,99,89,207,118,210,88,143,87,194,187,
+16,79,224,21,216,6,8,207,172,27,34,22,3,8,202,193,
+126,113,10,199,228,89,89,40,47,231,251,39,52,243,68,164,
+81,150,60,11,229,232,147,123,126,143,252,198,134,163,243,155,
+150,191,225,70,148,193,147,104,127,120,26,227,47,183,83,73,
+250,182,147,182,47,93,89,169,114,188,76,159,239,89,130,129,
+145,9,134,200,88,25,50,35,7,5,149,92,215,193,72,4,
+195,136,123,44,32,169,21,148,102,18,36,120,18,129,67,9,
+8,6,27,131,228,57,244,1,66,156,33,144,0,135,40,56,
+68,65,2,20,64,44,202,240,156,27,64,228,94,192,145,37,
+13,8,172,203,3,205,118,153,198,57,57,47,215,147,214,115,
+1,166,110,130,231,102,248,158,17,24,229,195,127,144,4,32,
+210,95,124,241,197,93,94,121,93,202,210,243,186,22,104,36,
+136,169,172,61,163,96,113,126,71,191,31,80,100,59,191,241,
+70,148,13,235,73,68,75,73,101,160,153,216,84,87,20,90,
+182,42,89,218,199,43,40,225,32,248,232,79,113,253,147,84,
+190,28,165,146,51,108,21,84,203,199,59,208,125,208,26,234,
+59,3,3,23,56,174,178,74,204,45,166,130,109,20,44,24,
+136,138,158,150,147,114,163,3,8,134,2,14,140,40,128,40,
+141,147,23,17,64,148,49,136,116,49,128,171,207,123,136,7,
+17,48,68,197,3,28,115,47,30,128,251,185,151,251,88,234,
+202,148,106,127,52,176,200,177,108,203,111,60,31,75,207,149,
+109,215,87,174,190,151,225,25,149,133,124,248,178,150,103,210,
+197,240,13,13,121,1,78,199,117,75,204,92,181,4,13,101,
+170,252,148,179,114,243,143,100,126,183,242,247,206,239,153,223,
+121,35,202,208,221,24,85,134,84,8,203,122,127,189,94,138,
+109,112,0,4,31,110,245,191,25,12,77,229,211,114,101,38,
+100,250,196,250,203,150,182,193,193,104,4,5,134,84,220,180,
+110,206,183,143,75,172,229,228,69,196,115,176,140,247,0,14,
+12,161,28,89,232,3,68,12,145,97,242,34,202,17,140,12,
+117,2,153,248,66,224,80,2,34,221,10,198,232,51,114,192,
+16,245,118,41,5,132,26,18,238,9,72,81,70,28,181,45,
+47,181,150,231,201,159,117,215,181,223,179,41,71,65,221,252,
+5,129,81,30,115,36,148,23,0,131,36,0,131,130,242,86,
+94,64,170,124,157,207,115,80,198,188,49,101,75,77,74,227,
+229,165,113,32,125,191,249,70,147,13,13,137,24,120,233,45,
+0,133,109,251,115,76,165,1,1,238,168,143,194,112,97,13,
+177,49,172,180,80,2,139,90,46,154,63,217,5,7,21,148,
+90,231,45,24,190,163,129,132,202,157,120,3,205,186,202,174,
+53,4,134,140,247,103,204,223,54,67,0,11,144,136,23,145,
+120,4,72,48,156,64,130,113,129,4,67,139,17,50,208,116,
+49,226,69,128,3,77,247,34,158,3,45,187,21,1,68,192,
+64,15,63,252,240,110,246,167,235,0,68,32,1,76,185,95,
+9,37,106,155,150,208,136,130,3,32,200,59,207,193,115,120,
+134,18,18,219,108,179,77,103,220,202,128,151,193,232,149,29,
+111,67,26,229,32,31,186,116,98,60,32,170,236,228,247,186,
+235,174,235,202,195,185,202,18,136,149,227,215,190,246,181,249,
+122,17,47,66,29,176,190,81,101,195,67,66,75,65,84,2,
+111,95,170,60,254,110,207,187,19,42,140,64,151,150,148,17,
+10,142,121,251,146,154,42,109,38,31,56,88,250,158,129,161,
+201,104,94,180,2,7,16,225,45,0,131,238,68,32,81,2,
+66,5,143,199,16,229,6,235,94,36,14,1,16,105,17,193,
+32,128,0,135,218,147,152,6,9,6,152,46,70,98,16,233,
+98,164,155,81,122,15,37,28,74,64,0,67,20,32,168,244,
+12,147,97,3,4,80,4,4,37,148,104,9,138,26,30,129,
+133,109,121,76,23,196,117,129,194,146,183,224,217,64,205,179,
+121,86,105,253,110,242,167,108,192,86,254,64,93,122,222,153,
+223,10,220,149,49,207,34,16,86,254,62,250,235,221,25,117,
+131,87,17,96,164,33,217,136,178,85,67,34,0,240,227,150,
+63,176,31,255,251,223,255,126,55,146,224,59,144,102,35,114,
+91,85,112,173,16,119,159,241,155,205,151,127,192,242,93,7,
+149,139,6,14,188,5,48,0,15,203,128,33,222,3,207,1,
+32,44,109,91,47,225,160,194,82,144,200,186,110,71,0,17,
+111,2,32,82,145,65,34,90,118,51,104,233,69,48,24,207,
+194,96,107,72,196,248,192,33,90,6,42,65,34,221,138,218,
+123,40,1,97,46,2,5,7,243,52,2,10,96,160,238,103,
+25,195,183,12,152,104,64,17,104,148,251,114,78,128,6,12,
+246,185,38,141,151,177,207,62,251,118,80,56,248,224,67,186,
+242,120,193,11,158,223,230,229,131,237,243,188,183,245,46,94,
+223,150,243,211,59,239,78,121,39,216,235,55,226,237,41,103,
+229,101,63,16,3,181,109,245,66,163,97,196,73,189,81,143,
+6,79,98,157,74,109,252,181,104,1,0,65,37,50,196,101,
+10,174,126,44,67,96,52,90,17,173,190,55,35,193,128,230,
+159,184,211,109,48,222,14,12,250,182,166,69,3,3,53,245,
+55,30,67,64,65,77,118,226,61,68,3,10,222,3,47,34,
+49,136,204,117,40,65,1,16,90,179,0,2,172,84,94,30,
+68,42,56,56,104,5,117,53,74,72,8,188,213,144,136,171,
+238,89,99,180,140,14,36,24,163,174,69,188,135,116,49,210,
+205,40,1,17,32,88,150,128,8,28,162,202,86,128,54,45,
+191,251,196,200,75,64,148,112,162,153,139,65,109,7,34,212,
+185,209,92,47,93,166,87,190,242,213,205,19,254,227,73,237,
+177,189,219,103,124,115,231,41,60,230,49,143,110,127,7,127,
+130,252,212,118,251,245,109,249,24,14,221,182,45,199,23,180,
+208,156,251,195,34,30,24,245,130,151,47,147,43,79,32,86,
+31,252,14,254,202,16,32,128,1,32,6,72,108,197,2,16,
+62,14,235,135,103,176,12,222,27,144,102,46,250,107,127,127,
+104,27,24,240,14,28,207,146,242,22,2,8,99,243,75,129,
+68,186,24,180,244,38,210,197,168,33,33,111,1,132,150,76,
+235,22,64,164,171,17,47,162,28,242,76,69,7,137,116,49,
+24,73,233,69,128,68,224,160,229,101,96,105,165,41,131,172,
+131,148,233,94,100,201,131,0,134,120,13,129,3,5,5,234,
+109,213,40,195,115,46,48,5,14,148,193,39,48,90,107,98,
+33,217,46,161,81,123,22,1,5,221,105,167,55,54,255,241,
+248,39,182,101,249,140,230,85,175,122,117,7,196,93,118,121,
+99,91,46,175,108,159,123,247,54,223,7,119,235,59,239,188,
+83,123,173,247,180,30,227,103,186,103,4,83,191,135,103,48,
+89,13,36,0,66,25,43,127,229,200,211,4,134,52,68,129,
+197,70,148,173,22,18,126,80,158,132,33,49,111,80,6,10,
+137,39,128,131,25,140,241,22,74,32,4,10,81,112,136,110,
+10,36,84,200,18,18,9,88,150,30,68,0,81,14,123,2,
+68,32,193,155,8,36,50,236,25,239,33,10,22,1,133,110,
+70,186,24,0,145,110,6,163,139,177,150,241,7,198,19,111,
+130,145,71,1,130,151,96,73,227,61,148,112,208,143,167,246,
+101,201,96,221,143,113,151,247,44,189,151,210,139,161,217,46,
+161,17,88,196,195,8,52,0,227,109,111,123,71,123,31,93,
+155,183,54,199,31,127,98,7,176,183,191,253,109,173,103,181,
+67,155,175,15,181,221,134,203,218,60,188,173,53,254,151,116,
+229,237,124,101,2,172,126,43,117,192,239,1,202,202,22,36,
+120,20,126,19,177,40,112,80,135,2,10,186,17,101,171,132,
+132,31,51,174,162,152,131,143,182,232,70,168,20,241,22,226,
+61,100,93,204,1,52,28,175,65,17,56,204,130,68,186,26,
+137,73,36,14,81,66,2,32,74,72,4,16,9,90,170,176,
+101,176,178,246,36,180,122,32,161,171,65,211,213,0,8,17,
+125,222,3,87,63,93,141,196,7,236,3,11,134,11,28,101,
+108,130,241,48,74,176,96,172,150,186,20,96,0,10,140,79,
+44,194,190,73,144,48,124,72,185,239,38,52,185,54,141,129,
+151,128,8,20,162,64,69,179,61,9,22,53,40,222,251,222,
+125,58,64,120,118,175,213,139,45,189,235,93,239,108,203,241,
+89,237,239,241,152,246,153,247,108,225,57,247,77,10,240,246,
+251,62,249,201,79,233,202,79,153,241,228,148,125,224,155,242,
+246,59,128,174,58,4,18,234,145,192,229,70,149,173,6,18,
+192,16,151,208,143,27,87,209,223,206,51,202,64,0,40,120,
+18,222,168,76,87,3,24,226,69,240,40,74,207,98,75,64,
+66,44,34,241,136,0,162,15,18,181,23,145,74,155,81,141,
+196,34,50,63,34,35,27,42,180,33,64,170,219,65,1,35,
+195,144,37,20,180,192,140,217,7,115,141,224,120,3,146,107,
+109,105,120,215,212,112,159,244,7,1,6,41,62,1,2,186,
+17,128,16,64,4,18,241,34,192,65,26,215,22,4,230,145,
+232,18,212,30,68,9,133,168,180,52,219,129,5,45,65,1,
+18,165,39,177,215,94,111,111,159,115,215,249,242,87,94,219,
+111,255,234,22,26,175,107,127,27,255,120,246,240,110,159,242,
+80,70,175,126,245,246,109,153,236,209,30,127,67,87,46,202,
+19,56,141,104,37,54,1,24,212,239,229,251,161,241,32,232,
+70,149,173,34,112,73,67,123,228,167,25,178,242,38,165,31,
+221,127,85,128,4,141,135,0,6,129,71,96,17,64,244,197,
+35,102,65,34,93,141,0,34,93,141,18,18,1,68,130,150,
+53,36,74,79,34,10,18,241,32,64,34,170,53,44,21,36,
+196,35,184,212,160,192,240,180,234,62,223,38,98,239,67,54,
+190,159,9,6,0,1,20,12,60,93,11,158,2,35,191,240,
+194,11,187,121,33,190,179,9,6,233,106,240,40,74,56,148,
+222,3,64,80,251,245,243,165,227,189,212,113,15,94,74,173,
+153,139,65,109,7,26,1,71,188,139,120,20,241,38,44,41,
+80,42,79,229,150,174,149,37,56,130,154,235,238,186,235,155,
+218,50,226,113,156,210,129,144,167,197,59,243,155,40,51,233,
+121,108,129,51,80,131,156,57,50,101,61,219,136,178,174,33,
+81,122,14,1,132,31,213,210,255,87,216,175,133,84,9,4,
+43,211,181,72,76,194,54,16,80,80,176,93,194,161,175,219,
+1,14,209,0,130,242,34,64,162,207,139,8,40,2,9,222,
+4,64,208,0,162,134,68,25,147,0,185,4,43,227,73,196,
+123,208,34,50,24,6,206,229,214,189,210,50,250,100,188,247,
+67,192,192,107,212,90,119,198,194,128,226,85,48,96,6,200,
+48,65,194,210,104,6,227,100,232,102,144,94,122,233,165,221,
+181,117,55,2,129,26,14,70,52,168,73,75,217,62,241,196,
+19,59,35,115,15,134,30,227,151,7,247,114,31,251,50,130,
+66,237,207,113,199,172,71,157,27,80,200,51,88,216,207,163,
+0,10,32,114,13,224,115,76,185,232,134,0,228,89,103,125,
+174,93,223,169,217,118,91,127,30,252,228,214,251,216,165,45,
+223,23,117,229,233,55,213,21,245,27,42,107,229,171,236,45,
+1,92,224,59,117,108,163,202,186,134,4,48,68,193,193,104,
+6,56,88,50,18,106,130,148,202,101,206,3,64,196,107,160,
+188,136,18,12,101,183,35,240,0,135,116,53,168,202,196,131,
+176,206,107,176,13,24,60,9,219,192,0,24,20,24,196,33,
+202,209,13,45,30,88,168,128,214,245,127,129,194,118,2,151,
+150,90,181,116,55,84,88,160,208,189,208,237,224,41,156,122,
+234,169,157,1,240,148,12,241,82,127,174,11,6,192,104,184,
+87,119,3,32,19,188,76,203,11,42,49,222,116,1,98,164,
+128,96,157,81,122,47,130,215,225,123,11,188,8,30,68,217,
+173,160,96,66,3,10,234,120,160,228,222,49,120,215,52,90,
+2,12,174,231,254,60,20,247,179,47,42,141,99,214,3,12,
+144,18,15,145,95,251,93,215,176,54,40,0,135,128,45,48,
+136,75,216,182,238,183,246,89,125,67,165,175,126,245,14,173,
+55,246,170,246,119,123,116,251,59,63,188,45,227,231,117,251,
+253,119,199,203,94,246,138,22,186,111,232,160,150,50,6,10,
+191,1,8,165,225,25,60,137,117,40,198,178,41,40,112,143,
+65,193,212,233,76,159,166,94,176,82,233,64,34,221,141,50,
+88,25,72,80,144,0,5,235,142,101,27,16,2,138,120,21,
+192,16,24,4,28,214,211,205,0,12,219,0,1,14,25,217,
+0,14,209,115,222,132,116,214,29,3,10,149,51,179,21,185,
+194,226,19,150,186,27,64,161,203,97,29,0,196,90,24,140,
+138,205,163,224,114,243,48,24,28,112,232,183,27,6,229,242,
+207,141,4,204,125,180,22,28,120,17,233,2,48,62,222,129,
+50,98,200,182,163,140,93,75,106,26,58,32,232,66,148,144,
+176,30,72,216,103,201,155,0,19,75,32,200,189,0,34,30,
+137,251,218,118,61,219,242,12,84,210,75,3,12,102,72,186,
+158,99,60,3,96,16,35,224,161,120,6,229,6,20,166,91,
+91,42,31,80,87,254,202,193,125,25,249,19,158,240,196,22,
+8,207,109,33,178,75,91,78,190,117,225,219,26,187,180,207,
+123,104,123,31,127,228,35,24,252,170,22,86,71,180,221,171,
+47,119,101,165,220,65,153,71,167,92,61,191,122,182,81,101,
+93,67,194,244,217,128,65,240,77,159,27,20,184,217,62,74,
+162,31,238,47,237,84,90,35,28,186,24,1,67,188,9,235,
+137,69,148,170,194,129,2,175,2,52,44,129,193,62,64,224,
+57,72,99,95,128,144,224,37,227,7,3,128,136,23,1,10,
+212,126,94,131,24,130,224,34,99,97,96,42,191,22,219,135,
+94,197,2,180,154,42,43,40,80,174,177,138,171,155,1,2,
+12,141,49,24,225,176,143,199,32,64,167,117,245,109,76,128,
+200,68,42,21,159,161,105,181,197,40,120,33,134,248,24,29,
+216,232,82,240,68,192,135,49,50,212,140,98,240,38,226,153,
+216,7,14,125,144,176,77,193,193,126,247,177,205,160,181,236,
+158,147,193,131,17,24,184,118,98,29,210,203,183,115,221,219,
+115,248,170,148,174,19,112,121,22,101,8,160,241,124,64,2,
+240,121,91,202,145,167,164,60,120,94,188,8,207,108,159,216,
+195,7,62,176,127,251,188,103,182,203,3,154,93,118,217,173,
+243,28,78,59,237,244,246,158,159,107,203,244,63,219,174,222,
+115,59,143,131,55,225,223,191,192,90,153,243,234,168,50,73,
+32,124,35,202,186,134,132,174,132,10,172,15,14,12,140,71,
+31,28,249,5,223,244,197,189,78,12,18,42,148,17,141,192,
+33,128,232,131,68,226,16,214,1,130,23,1,12,128,0,12,
+60,7,32,8,48,128,193,18,44,104,186,30,241,30,2,13,
+219,60,3,31,160,165,12,144,225,49,28,70,172,245,83,225,
+173,131,28,35,99,4,42,44,24,88,103,144,12,154,33,1,
+141,57,17,250,222,148,247,224,203,209,12,205,117,156,239,245,
+103,48,0,2,64,112,156,119,96,86,33,32,201,7,0,56,
+78,149,85,140,88,75,207,203,240,183,131,140,216,126,215,4,
+137,120,20,12,91,158,210,213,208,178,83,144,112,45,48,11,
+28,0,65,215,65,151,192,239,194,139,96,244,60,33,255,164,
+46,31,242,174,156,65,1,224,0,193,115,41,59,101,104,56,
+19,112,120,39,59,236,96,180,98,183,238,154,246,41,55,96,
+112,45,32,116,109,101,180,227,142,175,111,161,115,74,123,173,
+253,218,237,29,219,223,143,247,247,239,173,167,241,178,182,91,
+241,226,214,99,120,81,123,79,221,198,127,235,238,163,171,1,
+200,137,11,129,176,122,181,81,101,93,67,130,231,224,101,44,
+222,130,202,111,232,238,139,95,252,98,215,146,234,159,115,89,
+25,130,74,170,226,5,18,188,9,203,64,33,160,136,199,144,
+46,135,253,233,90,56,158,110,71,210,1,134,109,105,172,131,
+133,202,77,129,161,92,207,144,39,67,231,225,0,28,67,230,
+85,80,45,163,86,75,0,147,155,172,178,95,121,229,149,157,
+161,218,86,97,185,190,140,139,215,17,175,66,95,28,48,64,
+194,243,250,120,174,110,5,47,66,127,29,64,25,50,163,103,
+180,92,121,45,59,195,98,128,214,181,214,140,26,152,128,139,
+161,6,8,206,3,25,101,235,252,62,72,4,16,128,66,179,
+77,1,132,193,138,81,248,29,60,39,3,151,55,208,224,29,
+232,10,130,169,242,0,14,207,4,178,90,244,116,129,156,163,
+107,37,15,212,254,247,189,239,61,109,254,62,216,149,19,216,
+233,118,40,67,80,145,55,222,149,50,243,187,251,237,24,188,
+123,248,155,191,167,62,85,0,249,25,29,40,116,67,116,57,
+94,252,226,151,182,229,50,247,189,78,101,46,189,248,144,165,
+231,21,192,220,136,178,174,33,161,82,243,26,184,165,90,15,
+46,52,55,85,139,164,242,50,48,149,157,209,48,84,163,26,
+125,144,136,87,193,248,25,187,125,32,192,99,80,185,236,7,
+130,164,113,45,253,85,110,45,79,192,125,185,164,186,22,1,
+7,56,104,149,104,186,25,42,190,117,70,167,101,230,237,232,
+70,72,35,38,1,4,128,161,162,171,164,226,9,60,36,198,
+15,30,92,119,173,125,34,247,140,32,163,28,90,93,221,20,
+207,109,155,139,206,152,140,80,0,142,109,229,160,101,119,29,
+6,171,245,5,13,235,150,202,210,247,48,24,101,32,225,249,
+180,252,202,154,193,131,0,3,164,32,16,72,240,30,172,103,
+219,189,45,25,151,115,92,135,97,27,73,48,3,86,57,184,
+175,99,98,45,12,17,176,2,33,94,128,223,15,76,236,3,
+20,80,211,8,240,132,92,127,207,61,247,232,126,39,240,112,
+12,24,197,36,64,71,89,243,34,148,161,178,124,222,243,158,
+219,222,231,21,93,185,237,188,243,27,219,99,175,111,187,36,
+123,183,245,229,212,198,204,205,87,188,226,149,93,188,226,220,
+115,207,235,238,225,92,65,76,80,243,219,184,54,79,117,35,
+202,186,134,4,183,91,132,95,197,6,134,84,98,45,33,163,
+213,90,106,21,252,192,12,49,147,167,102,65,194,58,56,232,
+54,232,166,168,136,12,143,33,48,112,158,11,55,94,43,171,
+18,106,193,192,73,62,180,126,186,30,128,1,38,52,1,75,
+75,251,121,55,42,53,35,0,10,173,155,202,200,211,224,33,
+100,66,21,175,195,181,181,148,64,1,70,226,22,192,194,237,
+78,87,67,203,203,104,228,139,91,15,30,192,160,251,162,59,
+230,152,251,49,38,163,27,214,25,33,104,112,209,193,66,185,
+241,198,226,121,49,234,64,86,215,68,151,67,107,61,9,18,
+12,217,125,210,245,176,205,227,113,29,113,1,70,231,119,113,
+47,158,143,231,114,174,115,44,193,196,125,120,29,174,45,15,
+96,232,190,158,29,64,120,106,224,226,185,197,28,28,247,251,
+1,143,242,147,198,243,165,43,230,249,223,242,150,133,119,86,
+114,253,189,246,122,91,11,128,215,180,224,220,189,173,67,23,
+181,207,244,145,110,244,195,168,199,191,254,235,35,187,238,29,
+40,3,87,188,56,240,230,101,109,68,111,98,93,67,130,7,
+193,56,85,50,6,11,10,42,191,10,161,18,130,3,119,150,
+203,201,56,185,157,1,68,20,16,2,139,64,2,32,28,227,
+61,164,91,161,245,229,50,171,140,1,11,143,33,129,80,215,
+215,218,201,147,145,4,45,154,214,76,55,3,32,84,110,222,
+133,116,90,106,239,148,232,198,56,7,120,228,21,28,204,147,
+0,135,244,137,121,44,158,69,159,88,144,150,97,151,83,177,
+45,25,33,227,166,60,10,233,169,253,254,46,208,126,208,96,
+88,206,103,76,60,10,6,172,220,84,126,241,10,94,75,12,
+27,100,29,179,206,72,117,91,204,195,0,14,0,0,130,82,
+193,193,239,96,25,80,80,6,15,92,126,151,108,7,14,90,
+102,235,202,128,97,3,133,188,74,39,255,119,185,203,93,186,
+242,0,104,128,241,172,64,175,44,61,199,161,135,30,222,66,
+110,159,78,247,217,231,253,237,125,14,235,150,182,247,219,111,
+255,230,187,223,249,126,243,193,35,142,110,97,176,71,107,248,
+175,104,143,237,215,130,238,147,237,181,65,98,135,230,78,119,
+186,83,247,59,249,77,149,181,242,119,125,13,3,160,251,13,
+2,12,191,163,223,21,176,51,81,111,163,200,186,134,132,184,
+131,74,166,2,165,165,100,36,90,102,110,56,119,81,196,219,
+15,109,162,19,72,168,0,211,32,65,129,33,222,68,214,25,
+28,227,80,65,237,163,140,60,35,26,214,165,231,89,232,250,
+104,129,181,68,42,97,98,19,241,40,164,209,13,112,158,22,
+74,90,31,197,213,242,169,168,42,165,10,42,200,153,169,194,
+142,73,7,38,158,77,32,147,209,120,70,253,117,94,132,86,
+62,67,168,105,61,149,17,247,89,25,41,43,70,200,3,211,
+109,17,207,73,76,199,62,16,96,176,224,160,107,32,189,117,
+251,193,6,64,106,72,196,163,40,213,62,202,232,163,186,13,
+188,32,235,224,230,185,121,99,238,199,187,0,84,191,135,103,
+5,81,106,30,9,168,242,24,210,37,162,142,137,161,24,182,
+220,123,111,175,154,239,211,141,94,156,123,238,249,109,61,248,
+64,251,252,111,110,207,123,106,91,94,71,53,123,191,235,189,
+173,103,181,71,243,236,103,61,191,121,200,67,254,161,45,243,
+199,183,222,193,75,187,50,212,173,227,245,249,77,229,73,153,
+42,111,170,193,241,155,139,73,216,150,22,40,120,115,27,109,
+164,99,93,67,130,235,168,165,99,36,12,79,107,196,107,80,
+209,180,198,126,216,76,86,98,204,25,2,157,6,9,75,158,
+131,245,64,66,58,176,81,193,93,79,197,162,60,13,149,219,
+181,41,16,137,99,128,131,174,137,238,135,86,16,24,116,119,
+180,88,186,31,174,97,106,176,86,210,126,173,152,150,149,65,
+107,33,25,80,32,97,201,229,53,15,128,7,161,59,227,154,
+84,55,67,229,150,47,221,22,158,130,125,90,97,229,97,155,
+81,115,217,197,27,4,53,197,45,4,118,227,214,51,56,94,
+5,40,48,12,70,171,229,7,36,134,9,46,32,163,43,2,
+14,129,68,64,16,237,131,131,116,20,188,168,107,187,174,178,
+244,71,198,126,23,30,142,115,229,23,32,211,117,114,95,231,
+90,242,116,168,109,64,1,63,96,59,252,240,15,118,80,48,
+58,33,232,248,142,119,248,155,194,183,119,144,120,216,195,196,
+149,30,217,94,243,133,109,89,237,220,2,245,245,109,125,0,
+224,231,118,221,21,144,0,83,101,234,249,121,63,182,149,47,
+40,228,111,13,212,35,191,167,223,74,119,80,119,70,23,110,
+35,201,186,134,4,55,88,69,214,106,170,92,241,26,192,65,
+5,212,66,48,66,45,56,163,174,1,49,9,18,241,38,64,
+128,218,231,154,42,13,163,5,145,4,53,3,6,75,192,224,
+81,240,30,128,129,139,173,178,49,62,221,6,158,131,252,240,
+42,184,173,98,7,214,181,80,174,203,56,180,174,140,0,24,
+168,231,81,105,121,12,105,233,84,112,48,180,20,144,204,16,
+38,67,231,69,49,184,76,191,86,54,90,93,198,201,192,64,
+136,38,22,161,101,118,158,37,131,76,203,206,200,193,66,254,
+65,134,39,224,26,242,200,88,3,1,203,18,22,37,40,28,
+167,206,73,92,194,245,221,7,0,25,171,237,242,28,207,162,
+251,5,254,224,225,121,28,3,80,93,32,207,172,252,45,189,
+220,165,123,97,174,195,63,253,211,191,180,191,247,51,218,50,
+125,83,107,200,239,237,130,144,130,145,123,238,249,150,206,211,
+0,142,221,119,247,250,250,59,187,107,129,29,208,130,0,47,
+141,151,196,99,1,4,245,194,239,2,90,234,145,125,233,142,
+240,242,128,118,35,197,38,214,53,36,180,46,42,184,22,32,
+243,8,16,159,155,10,12,90,237,24,47,131,6,137,89,158,
+4,85,9,193,193,210,121,150,140,30,36,84,44,93,22,208,
+1,7,134,239,30,150,212,189,108,3,133,251,171,228,220,108,
+149,95,171,207,125,118,60,93,18,121,149,103,94,6,195,97,
+64,140,132,129,123,30,80,160,60,9,96,96,104,158,53,10,
+52,60,6,231,104,237,25,191,242,112,190,86,154,130,14,67,
+160,142,107,57,41,15,12,16,24,159,37,101,156,90,125,0,
+22,7,17,139,224,98,51,42,198,238,88,140,63,235,125,160,
+40,33,97,93,28,196,189,117,95,64,11,0,228,129,71,32,
+248,108,63,15,8,56,0,201,113,191,173,178,242,219,120,86,
+249,119,29,191,133,114,244,62,134,9,82,188,9,112,0,4,
+222,197,190,251,238,215,62,179,175,90,237,221,94,231,184,230,
+188,243,190,216,165,51,95,2,236,1,209,179,2,47,175,46,
+239,110,128,128,178,86,119,252,198,238,109,95,32,225,119,114,
+76,30,204,240,221,40,178,174,33,33,104,169,149,214,15,103,
+68,49,54,21,136,145,234,2,104,217,169,138,150,160,84,9,
+138,62,72,208,204,135,72,151,195,82,133,215,10,3,136,74,
+149,235,131,131,123,171,112,206,11,52,120,8,64,161,98,50,
+40,115,13,180,236,64,34,223,90,52,149,78,107,229,92,221,
+12,215,201,92,143,140,118,24,205,72,124,37,235,60,39,173,
+41,104,1,17,24,56,79,172,67,37,214,42,210,196,38,4,
+94,243,222,134,37,47,71,58,80,144,15,121,203,12,85,96,
+16,84,212,98,10,214,234,146,196,131,8,24,44,163,129,132,
+101,9,135,28,183,14,136,96,163,219,35,173,109,101,39,47,
+98,31,210,120,86,221,16,229,35,239,210,129,160,50,242,220,
+226,78,96,226,28,96,60,226,136,15,53,39,157,116,114,91,
+150,7,182,192,209,85,154,155,90,173,235,0,72,219,109,247,
+172,174,236,61,235,155,222,180,123,219,181,120,93,247,59,251,
+58,25,143,78,121,130,174,235,219,86,254,188,55,48,6,5,
+106,27,40,120,130,126,27,191,149,244,202,121,163,200,186,134,
+132,32,156,238,6,87,86,11,192,208,24,166,74,198,136,85,
+66,198,205,168,1,193,60,137,218,155,232,235,110,80,231,242,
+32,24,189,37,192,104,113,181,126,0,224,56,111,194,18,144,
+180,130,230,62,232,227,74,47,15,241,38,116,123,228,75,197,
+102,140,42,191,22,147,27,239,24,23,150,23,161,2,242,30,
+120,4,90,121,45,152,238,6,3,81,161,129,80,165,182,174,
+101,181,238,217,1,131,186,190,57,4,38,153,89,47,99,19,
+32,34,255,130,144,210,0,129,169,236,98,35,222,113,49,73,
+75,11,110,152,19,16,40,56,232,14,48,124,70,205,64,99,
+244,150,241,44,250,224,144,107,196,3,113,28,24,51,244,107,
+253,110,119,187,91,115,207,123,222,179,51,68,30,148,238,77,
+98,74,0,230,222,210,58,230,154,226,40,174,47,95,64,113,
+214,89,159,111,174,186,234,27,173,103,112,112,23,119,48,99,
+210,27,158,202,22,28,197,23,64,199,239,173,92,53,38,202,
+82,121,51,120,158,157,223,139,42,91,229,26,117,46,141,23,
+81,122,19,128,226,55,220,40,178,174,33,161,5,84,177,184,
+215,249,241,185,162,140,56,241,4,16,160,128,144,79,215,241,
+38,74,143,34,160,136,23,193,200,121,15,150,32,67,165,81,
+241,180,188,250,171,210,129,4,111,66,90,21,205,48,162,22,
+152,59,235,24,143,66,171,3,20,150,60,28,45,18,152,112,
+229,141,44,168,136,42,158,214,138,23,4,122,12,22,244,84,
+74,149,219,181,85,82,96,48,196,170,165,12,48,120,17,0,
+161,197,181,174,44,64,192,123,45,188,6,134,193,72,243,142,
+139,123,138,123,232,170,185,151,86,150,235,205,181,183,148,119,
+101,154,216,1,13,32,104,217,237,40,149,241,6,22,37,52,
+202,99,188,3,229,144,110,77,92,126,121,144,198,181,229,203,
+61,121,69,128,38,29,160,128,6,120,58,110,123,46,88,252,
+184,182,76,94,219,66,208,115,206,77,172,226,37,40,103,191,
+21,48,242,182,94,245,42,127,164,252,218,102,183,221,118,233,
+212,55,47,5,185,121,97,142,43,95,112,162,0,145,46,94,
+64,1,90,150,126,15,176,87,23,220,99,163,200,186,134,132,
+190,172,74,164,197,100,64,60,9,148,15,36,84,154,62,72,
+196,139,232,3,196,36,72,72,163,82,49,80,21,221,245,121,
+17,42,43,111,67,107,200,109,230,214,107,145,197,28,64,75,
+90,222,2,96,128,133,74,70,25,6,131,101,212,182,165,5,
+2,6,204,8,25,143,237,64,68,69,118,14,184,152,210,173,
+197,151,70,224,82,229,214,122,170,248,182,121,23,64,195,75,
+112,142,86,87,215,65,92,68,89,201,35,119,220,146,199,194,
+232,18,192,228,109,104,169,3,136,26,18,180,15,18,125,42,
+157,244,126,35,144,112,45,247,116,125,251,50,164,42,254,97,
+116,70,254,128,75,23,1,72,121,138,238,237,217,125,201,156,
+119,6,134,206,101,220,119,187,219,61,58,80,152,65,233,147,
+250,186,85,142,123,126,67,225,137,201,240,166,222,250,86,221,
+175,61,219,227,187,180,101,190,123,151,206,53,128,54,75,117,
+8,124,149,57,56,235,126,248,125,129,231,206,119,190,115,243,
+151,127,249,151,205,127,255,239,255,189,249,189,223,251,189,174,
+27,182,81,100,93,67,66,139,201,237,227,78,171,72,42,23,
+163,100,144,129,68,96,192,107,0,9,221,134,128,161,212,105,
+144,72,124,66,75,194,229,5,35,128,160,186,53,188,6,251,
+24,46,23,214,253,229,75,107,200,112,129,139,242,20,44,193,
+130,170,212,140,22,68,84,72,235,140,133,161,131,78,90,48,
+21,215,186,150,149,50,54,211,164,25,158,231,230,73,240,24,
+24,7,131,112,79,94,133,150,215,4,41,65,64,240,97,116,
+90,88,202,203,224,250,3,68,20,40,102,65,130,129,6,20,
+165,50,246,120,25,217,78,122,94,137,107,218,167,187,6,96,
+60,2,199,128,87,153,121,46,199,129,202,87,196,148,63,72,
+186,191,188,250,93,149,183,231,229,233,184,14,208,41,67,191,
+63,24,2,80,98,46,130,156,158,83,153,2,70,84,25,81,
+229,19,40,232,210,41,127,191,27,32,152,196,245,231,127,254,
+231,205,239,254,238,239,54,191,253,219,191,221,252,225,31,254,
+97,243,23,127,241,23,205,237,111,127,251,238,95,195,252,142,
+222,54,222,40,178,174,33,193,160,16,157,43,170,53,208,226,
+166,213,46,33,145,56,68,9,137,62,80,4,22,1,68,9,
+9,235,186,50,222,99,224,138,2,67,186,27,150,188,151,0,
+43,94,131,10,26,111,71,55,67,75,40,127,70,52,50,68,
+43,207,2,148,150,32,99,4,197,245,85,90,93,40,45,26,
+96,168,240,158,151,33,0,6,15,0,40,164,87,233,25,90,
+186,28,210,166,37,149,95,176,160,160,5,12,140,139,81,89,
+143,130,4,64,104,201,25,97,13,10,207,0,22,52,160,8,
+24,2,132,122,59,231,88,119,13,176,112,111,112,3,3,199,
+120,80,102,62,42,19,35,50,206,5,70,101,197,128,229,197,
+249,0,38,207,20,32,116,85,168,188,251,253,3,8,208,160,
+246,129,133,178,208,205,81,46,186,18,186,117,202,219,111,164,
+62,136,139,240,16,254,224,15,254,160,249,31,255,227,127,52,
+191,255,251,191,223,252,217,159,253,89,7,132,187,223,253,238,
+221,4,60,96,119,174,235,107,36,4,45,117,231,54,138,172,
+107,72,136,1,24,94,84,193,181,166,90,122,149,77,5,96,
+220,140,29,28,18,131,8,36,2,141,178,203,17,237,131,132,
+22,204,62,176,224,26,107,181,211,213,112,47,75,219,140,128,
+97,232,175,170,228,142,129,23,227,55,18,147,174,133,86,17,
+4,64,130,247,99,31,35,103,196,12,91,11,106,63,24,164,
+165,99,60,230,44,232,86,164,239,204,96,140,72,104,133,93,
+59,160,208,58,91,242,72,228,199,136,133,25,130,2,148,242,
+200,120,24,43,205,48,104,186,26,53,40,168,115,24,116,128,
+17,80,212,202,152,75,205,57,150,174,225,154,140,218,243,122,
+46,30,135,188,0,164,103,148,23,207,233,254,233,254,56,223,
+182,223,216,61,228,15,36,60,187,124,219,159,227,246,131,52,
+40,40,35,96,6,118,191,13,99,191,199,61,238,209,220,246,
+182,183,157,247,16,0,225,79,254,228,79,58,32,220,251,222,
+247,238,234,135,198,69,254,120,44,242,38,223,26,34,241,47,
+93,54,49,39,147,169,54,210,132,170,117,13,9,149,95,255,
+223,15,169,53,53,66,192,248,140,42,212,144,0,135,124,86,
+191,132,68,237,85,148,144,176,238,58,60,5,149,71,122,21,
+94,133,84,241,116,53,128,0,16,156,163,130,50,88,149,76,
+229,20,224,76,176,82,165,215,207,86,145,181,158,96,38,29,
+215,85,158,25,144,23,144,196,25,164,7,10,202,147,208,95,
+246,174,7,79,197,51,38,200,198,211,96,40,134,21,117,37,
+24,144,152,9,239,65,247,194,247,52,84,106,48,181,14,168,
+12,79,171,27,64,200,143,125,52,70,39,175,12,47,42,111,
+202,56,26,195,143,214,176,160,246,75,39,125,206,79,217,1,
+28,175,193,54,40,56,46,239,150,37,132,108,203,11,80,89,
+150,247,6,161,131,15,62,168,189,206,94,29,28,65,85,121,
+251,141,124,96,8,16,254,252,207,255,162,133,193,239,52,191,
+249,155,191,213,122,9,191,221,220,250,214,127,210,220,241,142,
+127,221,220,247,190,247,235,234,1,239,79,249,131,49,160,42,
+19,215,87,134,202,10,24,148,155,153,170,188,7,96,200,39,
+18,125,206,110,163,200,186,134,132,31,142,241,104,145,184,246,
+90,39,149,133,97,6,18,1,68,9,137,210,131,8,24,226,
+57,56,167,15,18,150,174,197,141,85,137,236,227,89,164,171,
+97,93,235,163,98,49,114,219,60,6,154,128,165,120,129,74,
+199,171,72,164,220,113,149,20,64,24,130,86,21,28,116,71,
+116,51,60,143,86,83,252,133,97,233,138,0,137,254,180,251,
+121,102,231,169,200,250,201,102,114,102,74,177,17,3,199,40,
+3,72,95,29,204,172,123,150,218,125,167,128,225,156,210,179,
+40,189,138,26,18,81,251,75,149,158,161,7,52,129,1,111,
+41,48,114,61,233,164,9,48,0,194,249,130,159,96,160,123,
+98,233,25,116,27,210,93,248,155,191,121,64,219,37,184,107,
+23,67,248,211,63,253,211,206,51,248,141,223,248,141,78,173,
+223,230,54,183,105,238,127,255,7,182,128,247,234,254,83,26,
+223,181,124,213,171,182,111,189,172,221,186,114,144,23,117,71,
+89,129,187,6,199,239,99,152,26,88,189,175,2,12,70,134,
+192,33,223,81,29,222,221,88,71,98,158,1,23,208,168,130,
+254,162,214,149,81,105,197,25,47,99,143,39,65,185,156,254,
+197,43,195,160,64,17,72,68,107,88,240,32,24,60,149,150,
+97,106,169,85,82,199,210,213,160,140,155,49,3,128,115,245,
+101,65,32,158,5,207,3,16,156,239,133,42,93,4,231,241,
+130,180,252,12,63,222,69,166,5,243,22,140,148,104,217,0,
+65,154,0,194,18,48,120,26,98,16,42,62,144,36,56,103,
+159,123,0,168,253,224,160,156,18,220,227,81,0,5,143,162,
+140,79,212,160,96,184,129,68,173,140,60,106,187,78,107,27,
+0,92,43,176,16,51,144,7,251,226,117,0,4,79,9,128,
+5,90,65,68,235,46,32,12,208,190,65,33,118,0,6,183,
+190,245,173,155,63,250,163,63,106,126,253,215,127,189,245,18,
+126,179,3,130,192,162,57,23,126,35,101,174,251,162,92,128,
+217,51,122,14,247,56,254,248,19,58,72,243,188,192,212,239,
+197,19,227,149,106,116,116,201,204,31,241,215,3,60,6,96,
+240,214,39,48,152,138,61,188,42,190,206,196,164,33,193,60,
+145,114,149,91,95,92,43,174,146,48,94,134,202,91,72,247,
+2,28,68,175,227,77,148,158,68,13,137,128,2,8,84,82,
+144,176,173,165,55,5,26,0,28,3,35,221,27,199,65,128,
+65,171,220,140,92,26,93,17,75,219,140,95,55,67,222,24,
+140,74,201,48,244,121,181,102,2,118,250,211,90,78,16,49,
+212,169,210,2,33,131,6,33,112,224,77,100,232,142,171,77,
+51,162,145,88,4,5,10,215,3,9,173,55,136,36,176,199,
+72,203,110,7,143,34,202,179,96,164,233,134,196,155,96,224,
+165,150,48,160,210,212,105,109,231,90,174,155,180,238,9,16,
+90,114,191,157,103,1,82,113,1,195,141,98,5,98,7,134,
+27,197,15,12,61,254,207,255,249,63,187,145,6,176,184,227,
+29,239,216,149,189,242,84,30,153,64,229,90,174,207,11,49,
+196,10,174,188,52,1,100,163,42,222,113,225,109,41,123,141,
+140,58,164,156,121,11,130,145,249,218,186,15,223,234,82,4,
+14,27,245,251,150,100,93,67,2,237,205,27,208,42,168,144,
+140,66,11,18,119,148,113,247,65,194,186,253,129,68,64,81,
+2,162,134,4,13,20,84,54,177,2,235,12,222,146,71,96,
+105,172,159,81,128,3,120,232,138,128,4,15,1,40,228,75,
+76,66,23,4,212,140,58,0,1,215,86,229,21,136,84,169,
+181,122,188,0,96,0,38,247,211,151,207,136,135,115,129,130,
+6,18,12,37,67,161,150,206,7,137,185,121,2,115,222,4,
+67,226,81,0,69,237,77,68,235,46,72,186,6,1,64,169,
+129,129,117,105,162,210,210,18,52,174,107,221,61,120,65,2,
+134,140,254,191,254,215,255,218,121,5,64,0,12,191,245,91,
+191,213,252,183,255,246,223,186,245,191,250,171,191,234,230,72,
+40,91,94,5,111,209,179,128,129,60,242,96,120,31,2,202,
+241,14,64,85,247,75,89,214,48,240,206,69,13,130,120,10,
+165,6,12,27,25,14,145,117,13,9,228,23,152,211,122,51,
+42,173,165,86,69,139,205,64,25,46,0,148,144,208,221,224,
+69,128,130,99,37,44,128,161,244,40,2,137,128,194,182,107,
+136,59,48,72,215,1,9,64,112,92,23,134,17,104,193,192,
+64,203,152,46,7,40,24,205,80,209,109,139,155,128,153,46,
+5,195,101,228,140,31,76,168,110,9,175,8,244,236,7,11,
+65,75,93,14,222,132,110,134,101,233,81,24,225,145,47,94,
+68,32,161,203,1,20,165,71,81,131,130,55,65,193,162,140,
+83,68,203,238,71,140,190,6,66,121,172,60,14,48,206,119,
+93,247,176,110,191,37,40,24,118,252,227,63,254,227,230,118,
+183,187,93,215,165,224,229,41,43,207,47,255,242,235,60,247,
+208,45,225,33,240,186,64,1,16,196,16,116,25,120,148,26,
+140,196,17,104,60,132,128,33,80,176,172,1,145,174,196,0,
+134,197,178,238,33,97,214,162,138,162,53,225,66,107,105,5,
+253,180,218,90,31,6,207,152,107,72,148,128,8,36,2,136,
+64,162,246,38,172,187,142,46,2,227,17,227,208,197,0,3,
+173,61,163,245,134,163,151,179,128,0,168,228,195,210,182,116,
+0,192,69,206,124,9,10,22,209,204,188,4,15,207,33,190,
+193,96,116,69,162,160,0,24,233,106,80,158,5,72,232,114,
+4,20,137,75,68,3,138,210,163,40,227,19,241,42,64,34,
+45,117,148,177,247,105,9,134,82,3,13,48,160,210,90,166,
+139,195,243,80,206,202,3,216,1,193,126,233,192,32,241,137,
+120,8,2,212,134,136,193,64,80,49,93,6,239,160,128,65,
+186,10,241,18,242,135,58,165,151,80,123,12,37,20,74,173,
+101,218,177,141,32,235,26,18,42,132,74,146,25,124,42,51,
+3,98,176,90,112,173,124,13,9,35,28,9,90,70,75,80,
+68,3,138,210,155,8,64,24,149,46,1,131,210,175,214,178,
+81,177,4,149,155,113,240,36,116,53,128,1,40,2,137,120,
+16,134,61,1,194,82,176,213,18,20,172,203,63,143,3,28,
+64,194,40,7,56,48,38,112,0,194,120,18,209,120,19,60,
+146,120,20,241,38,162,129,68,60,138,140,116,4,20,241,42,
+210,229,136,214,192,160,49,254,0,32,16,168,247,73,171,156,
+92,51,235,185,166,124,8,58,235,162,25,254,21,208,229,21,
+130,129,238,130,174,24,24,240,14,252,206,188,3,65,69,80,
+160,101,183,1,20,74,48,212,158,65,212,190,62,169,211,149,
+50,105,255,70,145,117,13,9,21,194,251,9,42,147,74,166,
+117,98,28,220,115,70,201,72,25,122,13,9,75,160,176,175,
+132,68,9,138,62,72,80,251,180,244,160,160,210,51,62,70,
+169,91,160,155,163,101,228,117,128,4,32,112,157,121,18,214,
+129,139,7,65,165,3,11,231,240,30,64,130,247,16,72,128,
+131,231,0,10,144,0,7,160,0,8,251,244,205,51,20,106,
+29,40,2,9,222,4,141,55,65,229,147,55,145,248,68,221,
+237,0,138,192,2,40,24,115,52,208,96,216,165,6,24,165,
+214,199,2,154,242,90,52,247,3,4,221,4,241,3,48,16,
+159,17,63,0,3,93,5,154,174,2,32,100,221,111,31,239,
+160,212,128,193,178,244,22,34,165,193,79,219,95,30,35,245,
+246,70,146,117,13,9,45,135,224,165,233,201,90,32,145,114,
+70,192,136,180,210,12,149,81,51,254,64,66,244,188,156,47,
+17,80,148,94,68,13,137,128,34,67,161,186,24,174,15,66,
+142,233,214,68,197,39,28,15,32,44,163,129,68,150,0,1,
+14,165,23,193,131,0,9,241,136,120,17,0,4,18,1,5,
+5,136,120,20,32,145,0,166,110,71,57,210,145,64,102,32,
+81,198,38,234,64,102,13,138,104,9,138,82,75,96,148,90,
+166,9,20,92,39,215,118,189,196,26,12,253,138,25,232,46,
+0,2,227,79,119,129,209,199,208,99,244,211,186,9,147,180,
+150,190,125,131,76,150,117,15,9,21,75,223,84,101,211,135,
+85,225,19,151,208,130,51,110,70,15,4,192,144,184,132,37,
+120,216,191,20,72,80,128,200,156,8,222,2,181,14,22,233,
+94,88,102,100,163,132,132,46,71,130,152,52,49,9,160,160,
+242,11,16,20,44,120,21,32,81,131,2,0,117,59,50,210,
+209,7,9,26,111,34,67,162,1,5,5,210,73,30,69,96,
+145,216,65,150,241,4,202,245,82,3,131,168,125,210,70,109,
+3,68,64,228,190,150,186,26,140,190,236,38,248,93,193,160,
+54,246,90,7,89,25,89,247,144,208,2,121,211,81,132,91,
+92,66,235,197,72,24,153,24,0,35,142,55,161,139,1,20,
+32,33,232,152,46,6,72,148,203,73,144,0,28,96,224,49,
+240,22,74,21,255,152,6,9,42,63,53,36,210,229,168,33,
+81,122,19,186,29,125,144,8,40,210,221,72,92,34,221,142,
+50,62,145,17,143,50,152,201,171,0,139,128,66,140,34,115,
+41,24,52,64,88,102,61,219,89,47,181,4,66,246,229,220,
+156,99,9,70,238,231,30,60,25,93,146,120,12,132,241,3,
+5,201,114,144,213,149,117,13,9,149,75,31,85,63,86,160,
+75,92,194,80,25,131,96,88,12,145,1,51,240,18,18,230,
+74,108,10,36,2,10,224,41,187,24,129,70,13,10,144,40,
+65,81,67,34,113,137,4,50,129,66,124,34,93,14,160,3,
+10,207,82,123,19,134,66,41,80,148,113,9,160,160,241,40,
+210,245,232,27,26,173,187,31,64,17,88,148,221,15,26,99,
+175,183,75,173,225,144,180,174,85,94,27,152,2,9,235,226,
+17,129,67,148,12,144,88,27,178,174,33,161,18,241,38,4,
+47,85,52,243,23,12,159,169,252,140,73,75,205,112,25,54,
+227,79,119,195,11,64,98,19,1,195,114,33,145,174,6,213,
+5,153,4,137,120,19,1,69,186,28,233,118,4,18,233,118,
+128,68,64,145,46,71,186,29,37,40,226,77,80,160,224,77,
+148,160,232,139,79,128,68,221,245,168,189,9,70,155,101,70,
+62,178,172,161,17,45,33,209,7,135,104,174,29,79,194,54,
+149,23,111,201,250,45,227,81,232,122,12,93,138,181,35,235,
+26,18,42,145,10,229,179,108,226,18,230,75,24,134,212,98,
+105,97,25,28,99,101,204,12,159,39,1,18,241,36,64,193,
+62,90,194,98,169,144,176,94,67,34,160,168,33,65,251,32,
+1,16,129,68,188,9,26,111,34,35,29,70,84,2,138,50,
+128,153,174,71,61,210,145,174,7,80,148,243,39,202,96,102,
+186,30,165,55,97,73,25,112,90,255,120,0,12,188,79,75,
+24,208,236,119,78,212,53,2,6,247,113,79,10,86,102,77,
+242,8,227,69,208,1,16,107,71,214,189,39,161,245,17,151,
+240,6,164,183,247,204,118,20,36,99,48,90,99,198,169,123,
+192,232,141,100,148,49,137,108,211,0,98,41,144,72,0,51,
+203,62,72,240,38,64,162,4,69,13,137,196,37,104,186,28,
+1,69,9,9,93,142,62,72,240,40,44,19,155,8,36,74,
+143,34,93,143,196,39,202,96,102,25,163,8,40,106,207,34,
+90,2,163,212,18,4,165,58,86,66,193,210,254,92,159,230,
+254,186,40,70,168,2,125,75,191,235,32,107,67,214,61,36,
+184,167,90,33,99,235,222,230,243,202,175,201,60,12,34,193,
+75,6,28,72,240,26,116,53,128,34,30,4,72,56,22,64,
+68,167,121,18,125,160,168,33,193,155,40,61,10,144,144,159,
+18,18,241,38,18,192,140,71,81,118,57,106,72,36,54,17,
+111,34,93,142,120,19,117,215,163,6,69,159,71,145,238,71,
+70,63,98,220,241,48,178,157,245,26,22,37,20,202,115,105,
+160,96,189,140,135,184,127,96,229,53,109,162,251,152,223,117,
+240,38,214,134,172,107,72,168,72,212,228,26,147,111,242,178,
+151,183,0,85,124,134,197,16,25,44,72,0,2,24,240,34,
+196,37,64,2,12,74,72,148,160,152,213,229,0,136,232,164,
+184,68,9,137,50,46,1,18,165,55,49,9,18,9,96,150,
+93,142,104,60,137,122,72,180,244,40,2,137,114,196,35,222,
+4,227,172,85,75,207,128,75,15,35,240,136,183,81,194,34,
+64,40,161,16,13,28,156,151,235,228,90,185,159,124,0,152,
+153,170,0,193,131,0,9,146,229,32,171,43,91,5,36,84,
+46,147,170,196,37,204,241,23,151,80,105,19,188,100,168,140,
+27,0,192,128,39,17,72,0,129,165,253,147,226,18,53,40,
+150,10,137,128,162,134,68,159,55,1,18,81,160,72,151,163,
+30,14,5,138,168,231,11,40,50,210,17,80,148,176,168,3,
+153,101,183,131,242,44,226,93,80,173,123,60,138,120,0,60,
+5,101,26,112,228,88,9,129,18,4,37,16,74,5,31,112,
+112,143,220,79,222,116,17,189,135,3,12,241,32,6,72,172,
+13,89,247,221,13,170,31,43,46,225,149,96,211,124,77,208,
+209,207,101,52,90,101,6,90,66,34,158,4,15,2,12,236,
+139,214,144,232,243,38,102,65,162,6,197,52,72,212,222,68,
+13,137,114,72,20,40,2,11,170,219,81,118,61,74,80,212,
+94,69,64,17,141,71,1,14,150,129,134,109,198,14,8,49,
+98,198,158,99,12,61,0,168,161,80,130,160,84,80,168,225,
+16,48,81,158,142,251,251,79,145,64,34,58,200,234,203,186,
+134,68,42,18,23,213,212,94,243,37,188,236,229,203,67,94,
+46,98,24,140,140,113,50,108,198,207,107,200,48,168,37,24,
+196,131,8,40,164,155,230,77,244,65,162,14,96,130,68,217,
+237,40,65,17,72,244,197,38,2,139,116,57,2,137,50,62,
+17,45,99,20,101,215,35,176,8,48,202,24,5,131,76,23,
+36,160,8,44,18,31,176,206,219,96,204,64,192,147,96,228,
+57,110,189,132,69,13,6,105,74,117,94,9,135,220,211,61,
+228,65,94,228,205,239,150,152,132,229,32,107,67,214,53,36,
+72,32,33,120,233,45,65,193,75,255,57,233,27,137,42,98,
+130,151,140,152,193,131,0,80,24,6,213,237,8,28,2,138,
+232,52,111,98,26,36,38,197,38,150,226,77,0,69,96,17,
+111,162,236,118,212,144,72,140,162,14,102,150,115,40,250,64,
+145,128,102,186,31,233,130,196,128,179,206,192,173,243,60,178,
+205,208,3,139,82,75,16,68,157,83,106,13,7,247,119,109,
+121,225,245,120,189,92,0,218,111,202,59,28,100,109,200,86,
+227,73,8,94,122,125,216,164,42,113,9,31,129,213,194,49,
+34,134,199,112,227,77,128,2,72,228,181,113,26,48,212,144,
+40,189,137,91,2,18,181,55,81,67,162,236,110,212,144,232,
+155,63,81,122,20,1,69,221,245,8,36,210,245,208,146,83,
+235,142,7,18,246,137,69,120,187,214,228,40,134,207,200,29,
+235,131,65,32,80,194,32,154,237,64,41,128,136,23,1,102,
+246,153,57,43,206,148,110,199,32,171,47,91,13,36,18,151,
+16,188,212,183,245,157,2,21,156,193,112,223,25,107,217,229,
+48,4,74,51,178,17,56,44,21,18,1,69,52,160,168,187,
+29,180,142,75,4,20,129,68,128,17,64,68,65,162,111,164,
+131,218,6,10,96,0,10,158,4,80,80,207,108,63,48,128,
+4,56,80,134,104,105,63,72,48,78,134,25,72,164,69,143,
+135,97,246,170,178,20,231,241,73,56,95,172,214,189,96,240,
+210,88,6,14,37,0,2,6,105,162,125,112,8,32,128,9,
+200,0,206,172,89,192,207,111,59,200,234,203,86,209,221,208,
+242,0,133,87,140,5,47,197,37,76,245,21,49,87,233,25,
+27,3,101,204,140,31,24,120,17,129,4,40,0,5,117,60,
+90,66,162,4,69,9,137,172,211,218,171,40,61,10,222,132,
+60,68,203,216,132,101,160,81,198,39,0,2,224,228,159,103,
+145,46,7,104,240,34,172,199,147,0,16,158,131,117,128,176,
+14,22,182,25,31,205,190,0,35,64,224,230,251,162,150,143,
+229,232,58,196,240,125,223,193,144,178,152,132,227,62,206,235,
+133,44,134,77,197,31,120,18,37,12,74,141,167,18,45,97,
+20,72,1,68,32,33,175,186,137,102,208,250,77,7,89,27,
+178,85,64,130,107,170,82,105,129,4,47,125,226,204,223,177,
+169,244,42,37,227,98,132,140,151,177,131,65,38,84,197,147,
+40,189,137,26,20,129,68,13,138,210,147,160,125,128,136,6,
+20,60,138,120,21,181,55,1,28,214,211,221,72,0,51,112,
+176,143,2,130,253,246,89,47,131,151,12,45,241,10,10,6,
+129,135,165,180,206,227,97,128,4,8,136,227,152,210,174,171,
+102,248,24,20,64,194,176,178,233,213,174,167,187,33,29,72,
+240,8,98,244,96,16,207,97,22,20,250,224,64,227,221,200,
+155,227,224,52,196,36,214,142,172,123,72,144,128,66,197,242,
+178,151,73,85,62,47,167,85,210,210,105,117,25,31,227,101,
+224,64,16,72,24,225,8,36,250,64,81,123,19,147,64,49,
+173,187,17,77,124,34,26,80,80,30,68,20,28,168,117,80,
+0,15,113,139,196,33,18,204,116,140,193,59,22,175,195,126,
+144,113,77,30,7,24,240,30,188,83,161,219,96,106,52,176,
+128,7,195,214,61,211,141,208,146,251,200,44,80,72,195,104,
+197,118,124,245,203,113,159,164,247,225,89,231,185,38,80,56,
+103,26,12,104,188,142,104,13,6,154,184,137,107,203,155,215,
+254,135,152,196,218,145,173,2,18,68,133,210,229,224,170,250,
+130,182,74,45,120,105,8,143,251,205,224,24,110,32,97,174,
+68,32,145,224,101,9,137,62,80,68,39,121,19,53,36,74,
+80,88,79,32,179,12,102,38,70,145,224,37,152,89,79,16,
+19,16,120,18,32,224,28,199,129,34,221,16,144,176,13,24,
+0,225,243,246,254,199,131,177,57,102,159,216,140,81,3,229,
+193,224,125,127,195,72,4,143,193,4,38,113,6,101,100,216,
+216,71,102,77,144,114,156,1,243,200,164,7,152,116,229,192,
+37,240,1,2,233,64,130,241,247,193,160,84,105,1,33,80,
+112,157,140,204,216,150,95,223,13,205,39,234,6,89,125,89,
+247,129,203,136,150,7,36,124,169,74,101,214,26,233,71,115,
+151,85,72,70,196,72,25,55,195,7,7,144,0,11,93,142,
+190,110,71,64,81,2,162,246,36,74,45,61,138,18,20,209,
+73,144,224,81,196,179,200,182,238,7,143,64,26,235,0,194,
+160,124,245,201,223,7,120,115,82,107,14,20,238,45,157,227,
+224,168,28,120,3,224,162,155,161,12,196,103,92,3,108,92,
+195,112,49,131,245,53,106,47,87,129,65,254,91,149,49,187,
+150,248,4,64,128,8,16,241,202,4,50,93,139,7,1,16,
+242,160,27,195,192,93,111,18,16,74,48,4,14,81,231,7,
+20,188,37,192,145,191,193,147,88,27,178,85,64,194,50,144,
+48,194,225,203,202,130,108,190,84,197,32,84,58,45,20,67,
+100,200,140,125,26,36,74,80,148,222,68,221,221,168,181,15,
+20,81,222,68,13,137,64,129,129,75,111,157,209,131,67,188,
+11,112,163,190,248,196,64,117,1,188,233,234,115,125,64,168,
+31,47,61,15,67,12,230,180,211,78,235,12,204,140,83,251,
+181,250,188,3,159,246,115,77,192,225,101,184,22,163,100,232,
+190,15,106,91,121,137,231,24,134,228,13,232,162,232,126,240,
+8,196,55,128,66,236,2,124,29,119,126,9,134,128,192,190,
+0,34,80,168,225,0,12,148,55,146,37,80,128,132,223,202,
+239,55,64,98,109,200,86,5,9,193,203,242,141,80,6,195,
+112,4,225,184,222,140,146,1,51,116,80,0,9,177,9,235,
+101,151,163,134,68,233,69,4,18,37,40,234,238,199,180,248,
+4,56,208,128,130,225,50,30,238,61,160,229,255,42,180,226,
+241,52,116,11,24,141,22,220,51,0,137,243,25,151,117,16,
+225,49,248,75,59,231,251,223,15,179,23,5,50,65,196,52,
+117,95,247,206,168,8,131,231,53,248,104,173,123,130,2,143,
+64,90,129,72,127,133,39,80,89,2,70,30,228,203,95,28,
+90,186,142,124,247,129,32,90,123,11,129,1,205,136,11,208,
+200,187,101,60,9,112,243,194,151,223,180,79,6,120,172,172,
+108,85,49,9,149,42,111,132,230,75,85,130,151,134,234,84,
+68,173,40,195,101,232,153,43,145,47,103,3,67,13,139,18,
+18,206,153,6,139,0,162,175,203,97,155,113,107,237,203,248,
+4,72,48,8,6,204,176,205,237,240,249,61,158,130,252,51,
+26,222,4,227,55,234,96,221,53,116,27,60,75,70,63,108,
+235,10,248,223,10,176,49,249,73,172,33,243,43,128,64,183,
+2,28,236,115,30,143,132,199,101,180,194,119,56,120,11,64,
+170,53,7,16,111,210,50,102,249,225,61,240,92,92,95,112,
+83,87,67,121,2,1,72,148,48,168,161,16,48,4,10,1,
+67,20,152,228,43,160,176,4,62,158,10,232,7,8,126,91,
+154,223,121,0,197,202,201,86,19,147,72,229,49,231,191,14,
+94,122,89,73,69,21,8,100,164,140,26,8,0,34,144,176,
+157,101,95,119,163,244,40,2,138,218,163,0,138,62,111,194,
+58,183,222,167,221,24,58,120,0,4,88,200,19,72,200,167,
+188,73,107,191,81,5,45,54,215,91,183,194,51,0,75,186,
+35,224,192,131,96,244,174,41,173,185,33,140,142,235,175,203,
+33,150,192,240,157,171,44,0,36,144,224,45,128,168,32,37,
+239,64,44,194,228,41,223,227,224,181,216,159,56,1,79,204,
+43,225,64,4,0,202,50,48,136,177,219,87,123,11,180,15,
+14,174,43,159,20,20,120,37,60,8,106,219,51,203,163,225,
+108,191,41,177,20,200,28,0,177,242,178,85,66,34,193,75,
+149,95,255,153,113,50,28,134,197,77,103,200,0,160,171,1,
+18,25,225,136,71,17,64,212,58,173,235,81,195,34,160,160,
+182,25,172,238,15,67,0,1,144,176,31,48,228,47,144,112,
+62,8,136,13,136,67,104,101,181,224,210,240,24,28,3,22,
+235,9,68,50,58,128,48,43,146,55,162,213,231,81,1,13,
+131,227,77,184,62,143,194,185,160,194,211,208,181,96,168,238,
+35,112,105,216,152,23,227,94,129,1,163,150,7,42,109,12,
+222,61,169,245,192,33,199,162,129,66,9,135,0,2,12,114,
+93,10,102,212,49,249,213,205,242,97,227,252,174,148,103,17,
+72,12,147,173,86,78,182,42,72,80,193,203,196,37,244,181,
+181,140,92,106,6,81,6,47,25,188,160,37,72,36,120,89,
+123,17,181,214,30,197,36,80,4,18,1,133,180,140,131,33,
+90,74,3,86,233,138,104,181,65,65,55,193,240,165,121,30,
+128,2,2,140,154,241,250,227,33,94,9,144,100,248,19,48,
+116,99,24,150,231,116,13,176,112,29,222,128,46,6,32,48,
+62,221,7,221,6,35,35,150,210,2,150,99,202,133,17,103,
+56,51,6,157,248,5,131,7,13,203,24,186,253,210,129,131,
+37,163,207,49,42,79,181,74,19,56,228,222,241,32,228,33,
+195,182,233,70,241,92,252,166,60,8,26,56,100,57,200,202,
+200,186,134,132,86,37,18,72,196,155,16,151,16,116,203,151,
+170,4,2,85,122,45,84,226,18,192,0,18,60,138,122,190,
+68,169,53,36,2,138,64,34,160,152,228,73,240,22,84,126,
+45,163,138,47,77,188,9,199,25,149,209,5,111,175,26,149,
+96,168,140,219,53,164,17,87,49,79,65,255,63,193,87,144,
+1,12,207,38,200,199,200,98,116,206,53,215,192,204,69,177,
+11,93,12,134,233,186,130,152,186,26,12,190,108,205,197,23,
+98,188,142,241,34,24,118,140,62,215,183,30,15,163,52,120,
+101,27,8,68,115,237,104,186,21,174,67,3,5,154,235,91,
+2,163,251,120,142,76,209,6,127,191,111,150,131,172,156,108,
+149,144,80,145,234,191,255,211,47,87,249,85,60,70,203,168,
+1,33,93,14,222,68,32,81,122,21,129,68,9,136,64,162,
+246,38,250,188,8,64,74,183,34,255,48,22,72,24,189,16,
+103,96,80,60,7,35,12,238,45,109,134,43,65,193,58,15,
+3,40,76,120,98,188,90,125,35,24,2,156,38,75,57,7,
+80,92,143,135,33,77,98,16,158,89,252,66,235,204,0,237,
+179,46,56,200,112,181,220,12,150,33,203,75,140,85,26,199,
+203,110,135,99,1,66,210,39,14,17,24,80,105,162,37,24,
+168,123,69,235,109,247,149,87,231,120,126,65,91,191,41,245,
+251,198,147,40,127,251,65,110,89,217,234,186,27,42,143,138,
+100,190,132,150,84,255,252,216,99,143,237,198,252,181,150,12,
+34,125,127,0,40,167,103,7,16,209,26,18,165,71,209,7,
+9,48,40,189,136,4,46,237,179,109,132,66,203,207,144,237,
+183,79,90,83,168,5,47,13,73,102,104,52,6,15,18,142,
+51,124,128,240,60,186,10,70,36,24,16,240,25,241,160,96,
+66,147,158,209,49,182,24,31,56,232,239,219,87,110,83,134,
+29,99,182,164,90,115,231,74,39,125,140,222,62,75,128,200,
+241,236,11,20,74,173,65,16,205,189,117,157,2,174,12,233,
+130,25,213,21,75,192,50,128,32,26,130,65,86,70,214,53,
+36,106,9,36,168,184,68,190,84,197,197,22,151,48,116,167,
+18,50,64,134,203,224,121,16,32,17,48,4,22,129,67,169,
+37,52,38,117,55,74,80,4,22,150,192,34,32,8,88,12,
+223,61,164,11,20,76,167,54,188,24,239,33,160,112,156,225,
+39,134,1,0,140,8,4,28,183,205,83,72,32,147,97,1,
+97,52,30,132,231,142,198,232,163,49,214,218,120,173,151,134,
+94,2,36,219,165,246,237,207,53,235,107,231,222,129,67,169,
+242,44,239,158,7,4,121,133,4,36,40,41,27,136,65,110,
+89,217,106,33,33,186,239,101,47,193,75,45,174,96,158,161,
+60,21,148,155,207,64,25,46,72,248,0,13,56,4,18,150,
+140,120,18,36,74,79,162,84,160,136,150,192,160,206,211,157,
+48,212,40,54,32,144,10,26,166,87,91,151,55,19,161,24,
+136,244,37,44,128,192,58,80,88,58,150,137,86,214,65,34,
+202,176,24,24,136,148,144,160,0,145,37,227,44,97,17,227,
+45,13,216,122,109,220,125,6,159,253,179,192,64,115,237,220,
+95,94,228,49,154,188,131,157,231,145,214,156,14,2,16,126,
+91,50,64,98,229,100,171,133,68,230,75,232,179,27,29,240,
+98,147,47,85,113,171,25,86,90,119,80,200,63,122,89,47,
+33,17,175,33,128,200,186,243,2,138,114,189,244,42,2,138,
+192,194,121,226,4,242,98,152,82,176,81,215,195,204,70,110,
+189,238,71,188,3,221,161,196,43,226,73,80,128,0,12,42,
+157,46,6,67,74,119,35,144,112,157,104,64,81,106,9,141,
+26,24,49,92,26,80,100,191,101,169,57,47,199,250,96,208,
+151,214,181,147,7,249,41,243,75,1,194,115,228,217,116,195,
+0,66,23,195,111,59,0,98,101,101,171,134,132,249,18,94,
+133,78,92,66,128,143,251,170,18,50,74,198,13,6,153,158,
+93,67,34,160,40,181,132,68,52,251,234,174,71,0,145,46,
+7,227,7,10,160,98,232,64,144,46,9,24,208,192,193,121,
+210,100,95,212,62,144,3,141,24,145,237,64,34,160,136,6,
+20,165,78,3,70,212,190,24,127,105,228,147,12,191,214,250,
+122,185,102,192,64,229,165,6,4,13,36,168,231,52,27,148,
+87,24,72,208,65,86,78,182,90,72,8,118,249,130,182,191,
+255,51,169,74,92,194,164,33,147,170,84,88,253,123,6,205,
+192,203,233,217,117,151,163,4,68,233,93,76,130,68,237,69,
+208,192,195,186,99,9,102,2,4,143,192,122,2,153,182,65,
+194,104,69,134,73,3,16,106,155,71,193,120,128,33,158,69,
+186,29,246,213,192,232,51,68,90,67,35,70,28,85,78,181,
+209,79,3,65,121,110,174,25,205,189,2,6,32,136,150,121,
+202,62,249,150,127,207,166,203,146,111,76,208,193,147,88,89,
+217,106,33,193,61,229,77,152,158,44,46,97,34,147,209,1,
+47,45,233,55,51,56,70,171,155,144,97,80,16,232,243,38,
+162,37,56,250,60,138,196,38,2,133,18,24,140,30,4,28,
+183,4,2,105,172,243,48,168,125,150,224,1,2,12,63,208,
+160,37,44,120,21,233,130,164,27,18,72,88,47,97,193,224,
+74,163,140,198,48,75,3,46,13,218,122,96,17,99,47,65,
+48,11,6,180,4,0,205,189,227,41,212,249,203,62,121,247,
+252,241,146,204,251,40,187,27,3,40,86,78,182,42,72,144,
+128,194,82,165,242,5,109,147,170,4,12,5,9,243,178,23,
+35,211,130,51,212,18,18,181,39,81,170,125,116,146,55,81,
+238,171,129,17,56,0,70,150,1,66,60,10,222,4,0,216,
+47,141,252,5,16,241,32,228,219,122,186,31,89,15,24,24,
+85,0,83,66,162,214,24,101,109,196,165,33,91,175,141,127,
+26,12,234,237,82,115,77,234,254,242,85,170,188,38,191,229,
+115,80,101,98,50,156,97,237,242,183,29,100,101,100,171,131,
+68,41,60,137,76,170,242,233,53,193,66,175,60,155,24,164,
+178,50,78,134,13,16,254,172,167,12,94,6,20,53,44,210,
+245,136,6,14,37,36,2,135,210,147,200,50,221,140,62,5,
+6,10,22,52,93,14,208,96,40,128,64,227,77,68,3,10,
+6,5,22,125,154,86,153,6,18,1,70,105,172,125,0,97,
+244,53,24,114,108,146,230,26,185,190,101,142,5,4,212,126,
+75,0,148,183,156,39,207,158,9,32,149,179,88,142,119,81,
+226,77,248,232,241,32,43,35,91,45,36,180,54,226,18,153,
+84,101,218,179,151,151,140,38,152,84,165,210,51,68,6,157,
+185,18,53,36,2,138,18,18,179,64,81,66,162,4,197,52,
+72,212,96,8,28,162,32,65,235,46,71,13,137,196,42,250,
+96,17,64,88,47,161,208,167,12,55,26,163,45,181,4,65,
+140,220,18,60,236,11,0,92,43,233,115,61,251,250,142,203,
+91,188,6,101,149,161,233,251,222,247,190,205,3,31,248,192,
+238,5,57,241,37,224,167,64,49,200,202,200,86,15,9,147,
+170,84,46,51,20,77,99,206,39,225,5,222,24,32,67,6,
+131,18,18,150,89,239,243,38,166,193,162,236,110,4,20,37,
+48,2,138,82,39,1,34,112,200,118,246,5,22,37,52,2,
+138,192,162,4,70,13,141,0,35,198,26,131,93,170,50,236,
+104,12,159,186,78,64,100,153,180,1,137,109,235,246,217,150,
+111,128,84,150,15,120,192,3,154,123,220,227,30,205,95,255,
+245,95,55,119,184,195,29,154,187,223,253,238,29,36,92,203,
+68,179,43,175,188,114,254,187,151,153,129,57,200,202,200,86,
+13,9,174,169,138,149,47,85,121,129,74,133,75,240,146,145,
+49,92,16,200,48,104,0,17,72,148,160,152,4,140,18,18,
+53,40,74,45,65,17,5,137,116,51,226,81,4,22,165,102,
+127,9,138,82,75,88,148,192,40,161,81,194,99,26,48,178,
+175,214,24,122,159,50,252,120,23,209,120,15,89,151,119,229,
+117,255,251,223,191,3,2,24,220,246,182,183,109,254,242,47,
+255,178,185,221,237,110,215,1,226,158,247,188,103,247,91,120,
+70,51,56,77,203,246,54,43,208,27,210,6,125,93,13,191,
+111,116,144,91,86,182,106,72,24,225,208,234,228,75,85,102,
+238,121,85,218,164,42,19,152,24,12,35,85,113,85,204,128,
+162,132,69,31,36,38,129,34,144,40,65,81,2,35,144,40,
+181,246,44,202,216,68,160,81,106,9,138,82,107,104,4,22,
+53,48,232,36,15,163,214,73,144,8,72,234,180,64,144,120,
+133,107,123,62,177,158,187,221,237,110,205,95,252,197,95,52,
+127,246,103,127,214,41,40,220,254,246,183,111,238,120,199,59,
+54,119,190,243,157,59,48,232,86,72,171,236,149,31,224,25,
+250,244,214,172,88,18,200,251,70,136,97,109,191,105,98,19,
+9,100,14,114,203,201,86,15,9,170,5,18,151,240,22,165,
+217,142,249,130,182,202,206,240,84,74,193,203,18,18,1,197,
+36,111,162,6,69,13,9,186,28,80,148,176,88,74,204,34,
+176,232,3,6,5,135,218,187,136,198,155,168,181,246,50,98,
+252,1,132,109,199,3,11,80,8,52,92,215,51,50,118,0,
+248,227,63,254,227,230,79,254,228,79,154,219,220,230,54,29,
+12,238,114,151,187,116,176,224,65,220,235,94,247,106,238,115,
+159,251,116,30,133,120,67,130,198,202,198,51,186,22,216,120,
+179,84,12,201,219,179,222,193,241,161,28,159,220,19,140,230,
+33,150,144,24,64,113,203,201,86,11,9,149,7,32,44,19,
+151,200,23,180,125,80,214,171,214,90,60,6,197,120,85,82,
+160,168,33,49,13,20,179,32,81,131,34,144,8,40,178,62,
+9,18,224,80,122,23,129,67,128,17,72,244,193,34,128,232,
+3,69,13,9,219,52,93,147,128,162,4,4,77,247,65,26,
+249,18,71,208,101,248,195,63,252,195,230,119,127,247,119,155,
+223,255,253,223,111,254,244,79,255,180,249,171,191,250,171,14,
+10,128,192,75,232,131,2,32,43,183,128,65,30,1,199,156,
+12,51,82,197,141,116,53,188,115,227,221,27,128,55,123,214,
+188,23,128,72,240,114,128,196,45,47,91,125,76,130,234,195,
+170,92,230,75,152,84,229,69,42,113,9,144,224,154,51,88,
+80,200,63,141,151,160,152,6,139,18,16,165,246,1,162,134,
+4,181,77,227,77,4,18,37,24,74,96,4,14,81,251,45,
+75,80,196,195,8,40,64,193,50,199,203,174,72,9,144,0,
+34,26,79,194,49,249,99,212,12,95,119,1,12,126,231,119,
+126,167,249,131,63,248,131,46,166,192,67,184,247,189,239,221,
+41,24,240,38,0,33,239,196,40,35,229,225,25,229,87,30,
+92,219,100,44,93,10,175,151,251,38,5,112,251,31,82,195,
+212,251,238,187,239,252,55,55,13,95,27,254,212,221,48,239,
+5,244,211,229,72,67,48,64,226,150,147,173,30,18,42,145,
+150,199,203,94,230,75,120,193,74,229,19,151,48,194,193,56,
+84,94,198,207,16,54,21,18,89,47,247,149,192,160,75,129,
+132,37,13,24,226,77,196,243,176,12,28,74,77,218,108,131,
+5,80,36,70,17,5,133,0,132,199,192,83,8,12,64,196,
+53,228,245,126,247,187,95,231,37,240,12,120,10,255,235,127,
+253,175,110,93,215,225,174,119,189,107,231,29,72,3,6,150,
+188,10,101,167,124,60,183,188,186,150,123,129,14,47,193,176,
+179,151,191,120,10,160,224,255,80,64,193,191,172,233,86,24,
+121,18,88,246,145,32,31,217,241,85,49,31,240,245,253,140,
+120,17,186,26,160,15,18,233,78,14,128,184,101,101,171,143,
+73,104,101,84,40,113,9,255,70,149,151,189,196,37,84,86,
+134,194,232,24,182,74,190,20,72,4,20,53,24,2,143,26,
+32,129,69,233,77,4,16,217,14,40,162,241,38,74,112,88,
+103,120,241,22,234,238,71,192,16,56,36,77,60,136,18,20,
+246,185,55,48,242,0,4,16,197,18,196,17,110,125,235,91,
+119,64,48,226,144,192,226,54,219,108,211,121,8,1,66,188,
+132,0,65,222,220,203,181,65,199,136,6,8,27,161,48,121,
+77,12,40,80,48,231,193,63,140,121,187,211,39,251,77,185,
+22,119,208,21,244,137,63,95,241,214,189,48,157,222,208,167,
+223,77,240,217,156,23,94,132,174,198,224,69,172,156,108,181,
+144,32,169,64,32,161,130,137,75,248,162,180,73,85,226,18,
+222,8,213,146,50,48,70,12,8,75,133,68,31,40,166,1,
+162,132,68,52,221,144,18,18,150,89,7,137,104,60,133,108,
+7,24,209,192,32,96,136,199,224,217,164,117,31,64,96,236,
+186,13,188,4,65,197,63,255,243,63,239,70,30,50,4,105,
+126,2,47,33,147,152,226,93,81,207,230,58,241,102,92,31,
+100,1,65,44,193,176,178,153,145,62,154,43,166,224,27,25,
+166,193,235,62,248,50,152,46,4,40,240,228,124,165,203,75,
+119,226,13,60,6,35,79,126,27,94,131,110,161,191,68,208,
+189,0,135,12,125,130,67,60,8,191,107,116,144,91,86,182,
+106,72,164,18,169,88,134,206,124,169,202,164,42,227,238,94,
+246,242,241,23,21,60,173,234,44,72,148,26,72,148,80,168,
+1,17,56,148,144,232,83,247,14,40,104,214,3,2,203,210,
+155,96,248,1,66,233,69,4,8,174,39,127,186,2,128,0,
+0,134,29,163,182,65,162,28,126,140,119,16,40,120,70,207,
+225,90,242,0,58,186,36,188,4,221,6,30,130,97,100,221,
+6,229,200,75,48,92,169,235,144,255,30,85,198,186,15,60,
+5,80,240,247,6,98,12,241,22,124,181,219,168,133,225,77,
+67,212,70,160,128,92,183,66,236,1,28,116,45,74,56,12,
+158,195,202,203,86,15,9,162,114,169,108,121,217,75,203,229,
+11,212,190,8,37,120,150,224,220,114,33,81,130,130,214,222,
+69,60,137,218,155,232,83,96,40,85,126,106,207,2,0,180,
+224,129,2,72,72,43,207,2,134,98,5,0,160,171,16,15,
+65,96,209,104,67,128,32,29,32,100,148,193,185,242,45,143,
+128,224,62,174,47,86,83,199,17,116,27,76,105,23,96,20,
+248,229,37,248,211,30,95,248,22,79,16,16,86,174,62,195,
+167,251,32,174,0,10,62,242,43,22,228,95,202,120,11,37,
+24,196,26,12,107,150,96,0,244,192,97,232,86,172,190,108,
+213,49,9,21,139,88,198,155,224,198,250,130,182,63,171,241,
+53,105,209,117,46,51,3,100,48,90,210,77,129,132,245,122,
+127,96,17,96,44,197,155,176,164,37,36,128,1,20,44,93,
+135,145,27,94,228,21,136,33,252,209,31,253,209,124,12,225,
+78,119,186,83,7,4,199,1,33,193,197,58,142,224,158,1,
+2,72,26,226,52,218,147,56,2,47,65,183,193,7,95,0,
+65,160,23,16,124,114,15,16,116,27,188,85,43,200,104,238,
+9,32,136,41,24,61,242,103,66,186,15,60,133,62,40,152,
+239,192,99,240,33,25,1,101,191,139,238,68,166,93,215,96,
+232,131,195,0,140,149,147,173,218,147,32,129,133,74,39,46,
+33,8,150,151,189,84,122,198,32,46,193,96,0,33,174,182,
+37,163,178,143,209,91,198,29,183,30,8,88,74,111,31,181,
+30,112,68,165,3,136,164,143,145,150,222,69,150,129,2,104,
+89,119,63,49,2,30,65,70,25,44,65,1,16,12,63,242,
+16,50,252,8,8,153,135,144,124,186,182,231,3,154,116,25,
+204,119,0,4,195,143,98,51,233,50,0,2,120,154,163,32,
+142,224,95,191,252,133,160,79,237,153,173,106,246,163,110,131,
+46,27,15,193,84,119,208,21,16,6,4,31,248,17,87,48,
+100,233,63,69,65,25,20,116,245,120,11,98,12,70,40,18,
+132,4,6,80,8,24,232,0,128,181,37,27,6,18,84,165,
+228,218,138,75,112,131,185,201,90,75,45,168,22,149,65,165,
+79,110,25,99,11,4,2,0,235,246,131,70,220,245,192,32,
+30,67,169,246,73,227,120,90,112,16,224,57,36,77,238,45,
+62,192,19,48,31,1,16,204,69,176,110,232,49,222,65,188,
+2,94,66,102,43,58,223,125,92,51,65,69,64,0,192,4,
+22,203,145,134,204,73,48,210,224,179,126,60,4,129,197,18,
+8,70,129,210,101,16,71,224,33,4,8,190,20,165,28,121,
+8,186,112,128,96,36,34,80,72,108,1,20,120,11,186,17,
+37,24,74,143,33,94,67,60,135,65,214,150,108,213,221,141,
+44,163,250,184,42,173,191,209,83,225,5,214,180,158,12,136,
+81,49,96,198,23,227,47,215,129,193,146,50,202,128,129,150,
+158,70,210,74,147,116,224,160,11,193,136,237,3,3,49,1,
+6,207,11,200,124,132,223,251,189,223,155,159,143,192,75,40,
+39,40,101,232,177,244,18,2,156,140,102,152,143,16,32,240,
+16,210,101,48,210,144,24,130,63,41,10,16,116,25,234,24,
+2,15,65,151,193,71,122,76,98,210,101,8,16,12,73,250,
+247,175,120,8,2,141,70,32,18,83,80,182,226,10,241,20,
+196,21,50,59,18,20,74,48,228,55,169,127,163,65,214,158,
+108,24,72,16,149,83,229,213,47,54,73,135,129,136,200,27,
+186,211,234,106,133,25,33,173,189,133,24,124,212,182,52,165,
+218,151,22,61,222,131,115,93,143,161,235,26,8,34,230,101,
+167,4,24,117,37,64,65,183,34,32,0,17,235,185,30,111,
+3,104,120,32,128,38,176,168,203,144,89,139,249,39,173,12,
+61,250,146,147,46,67,70,26,120,8,98,8,241,16,202,46,
+67,98,8,60,4,243,19,64,193,20,118,93,6,64,229,33,
+40,51,93,53,64,240,86,109,128,16,47,33,113,133,128,161,
+134,66,60,133,120,11,3,16,214,143,108,245,144,32,89,87,
+65,85,98,174,176,96,90,190,84,165,197,21,188,212,42,199,
+123,96,244,241,28,2,128,64,195,178,4,7,79,129,74,199,
+184,25,59,163,207,208,35,16,128,66,230,35,232,58,0,6,
+112,72,159,107,198,67,0,134,0,33,195,143,128,144,185,8,
+70,26,204,71,16,84,52,66,35,134,96,232,209,4,165,50,
+134,96,232,49,49,132,4,21,19,67,0,73,49,132,218,67,
+48,43,21,16,120,8,226,8,128,32,192,88,142,60,196,59,
+136,6,6,165,166,27,17,64,4,12,181,14,178,246,101,171,
+143,73,144,84,82,203,116,57,244,163,25,142,47,104,103,190,
+4,131,100,252,241,30,74,24,196,128,227,73,88,23,36,20,
+39,48,9,137,241,215,30,130,25,140,9,46,150,19,148,114,
+253,0,38,1,75,113,17,51,34,203,9,74,25,105,200,208,
+35,47,65,28,65,208,85,222,141,52,120,9,202,4,37,221,
+6,35,13,254,89,60,147,148,204,71,0,4,193,90,65,197,
+210,67,72,151,129,135,0,156,160,80,2,129,215,85,122,8,
+1,66,12,127,41,16,136,14,178,126,101,67,4,46,83,145,
+3,137,116,57,180,170,198,246,181,198,34,253,12,20,16,184,
+251,12,57,198,12,8,246,49,114,80,208,101,0,130,12,61,
+154,185,104,95,94,137,174,231,35,184,142,235,6,8,9,46,
+242,16,0,33,221,134,114,130,18,47,193,63,126,137,35,164,
+219,16,47,65,55,169,12,44,6,8,153,139,160,203,192,83,
+226,33,36,168,24,15,33,65,69,30,66,226,7,101,80,177,
+236,46,196,43,24,100,99,203,134,240,36,210,154,165,245,203,
+40,135,62,56,99,211,127,215,175,23,151,224,230,243,26,18,
+84,100,248,229,92,4,221,7,30,2,239,161,244,16,74,32,
+196,251,16,71,224,33,240,80,196,17,234,23,157,196,17,50,
+252,232,127,74,51,99,81,183,129,151,224,221,134,122,198,98,
+217,109,16,88,204,72,67,233,33,128,2,239,32,93,134,114,
+148,1,20,234,248,65,60,132,120,9,37,84,233,32,27,91,
+54,4,36,34,129,4,195,224,86,235,143,251,55,111,67,128,
+90,112,19,138,64,194,204,69,175,67,155,143,160,27,145,201,
+73,70,26,188,251,144,185,8,165,167,33,184,40,166,193,67,
+48,19,50,195,143,153,160,100,180,193,240,99,128,96,248,209,
+4,37,163,13,134,98,243,178,147,110,131,137,94,153,160,228,
+187,156,233,54,212,64,224,37,152,160,164,219,0,10,1,66,
+38,41,101,148,1,20,250,128,80,198,14,2,132,0,181,212,
+65,54,182,108,40,72,168,240,12,129,129,112,177,181,184,12,
+208,80,168,254,62,99,206,11,95,226,5,32,192,67,0,5,
+48,208,93,0,131,196,16,50,31,161,244,16,252,253,93,31,
+16,120,8,96,196,67,248,192,7,62,208,197,17,120,8,128,
+96,98,23,15,33,35,13,245,208,99,102,43,150,115,16,116,
+23,18,84,4,132,186,187,16,24,4,4,37,0,2,132,114,
+223,32,131,76,146,13,9,9,134,195,160,184,227,90,103,127,
+38,172,203,97,196,64,203,47,78,96,136,145,55,192,43,0,
+131,116,25,236,203,140,197,204,71,240,153,53,64,0,154,196,
+17,50,31,129,135,144,56,130,41,204,230,35,120,251,49,30,
+66,226,8,2,139,226,8,102,43,26,105,0,5,113,132,204,
+69,168,187,13,229,176,99,25,67,136,103,80,122,7,53,16,
+74,29,100,144,89,178,213,66,162,207,0,98,24,140,137,97,
+105,137,181,212,250,250,12,90,171,111,242,17,195,7,11,223,
+89,20,59,176,45,168,40,134,0,8,153,177,152,41,204,121,
+243,81,96,145,87,146,119,26,202,9,74,153,177,88,2,33,
+67,143,1,2,47,161,158,156,84,78,97,230,37,208,105,94,
+66,159,214,176,24,100,144,229,200,170,66,226,166,214,0,110,
+190,233,198,209,214,150,149,24,72,45,246,49,44,70,166,69,
+22,232,19,4,228,250,139,13,48,120,158,0,213,77,48,228,
+40,160,152,81,6,67,143,190,162,84,206,71,224,137,148,129,
+197,122,130,82,230,35,232,54,148,147,147,2,4,176,42,61,
+132,120,9,233,58,148,64,40,193,96,217,7,137,26,4,229,
+49,58,200,32,203,145,85,131,196,15,174,252,122,115,221,151,
+206,27,109,109,121,153,102,16,246,51,46,45,116,190,162,237,
+253,4,241,1,177,2,195,162,20,4,44,121,6,32,194,59,
+0,3,30,130,56,66,223,140,69,113,132,178,203,16,32,36,
+150,80,118,27,234,192,34,15,161,246,18,178,204,243,196,27,
+168,215,107,29,100,144,45,37,171,2,137,235,190,124,126,115,
+225,135,14,29,109,173,142,48,46,134,201,96,181,238,2,133,
+60,10,177,2,198,111,66,18,181,173,171,224,152,248,65,134,
+29,129,165,158,156,84,123,8,25,105,40,223,103,232,139,35,
+88,198,35,168,117,48,248,65,86,91,86,28,18,223,252,236,
+25,205,103,118,222,65,115,62,218,179,242,194,240,24,32,227,
+100,184,90,119,6,174,59,160,91,32,94,64,173,243,10,242,
+166,99,134,28,19,80,204,92,132,116,25,0,33,30,66,96,
+144,88,194,164,17,7,154,245,210,19,136,14,50,200,106,203,
+138,66,226,155,103,125,166,57,225,233,143,111,126,113,227,234,
+254,35,116,12,176,4,5,227,6,11,93,2,134,79,211,61,
+8,0,2,129,50,118,64,157,31,32,196,67,168,33,0,12,
+37,28,74,16,100,123,144,65,214,162,172,24,36,174,255,202,
+23,155,163,30,254,144,230,199,215,124,115,180,103,144,65,6,
+89,15,178,34,144,184,225,138,203,155,35,30,122,223,214,147,
+56,99,180,103,144,65,6,89,47,114,139,67,226,167,223,185,
+190,57,234,17,15,105,206,123,207,219,71,123,6,25,100,144,
+245,36,183,40,36,126,209,246,209,143,123,210,99,154,19,159,
+249,132,230,87,109,95,124,144,65,6,89,127,114,139,65,226,
+87,191,252,101,243,169,151,63,175,57,244,111,238,209,252,232,
+91,223,24,237,29,100,144,65,214,155,220,98,144,248,194,59,
+223,210,28,112,143,219,53,151,28,123,212,104,207,32,131,12,
+178,30,229,22,129,196,229,31,63,174,57,224,158,183,111,62,
+241,130,103,142,246,12,50,200,230,201,173,110,117,171,77,210,
+72,189,29,41,211,150,199,235,237,72,153,182,212,200,172,253,
+145,50,205,114,116,53,100,139,223,245,123,23,95,216,28,114,
+255,187,118,250,163,111,14,221,140,65,182,140,244,25,204,82,
+52,82,111,71,202,180,229,241,122,59,82,166,45,53,50,107,
+127,164,76,179,28,93,13,217,162,119,189,233,71,63,108,142,
+126,212,223,119,221,140,47,237,255,190,209,222,65,6,217,124,
+89,174,145,204,74,95,31,159,181,29,89,234,254,73,233,34,
+179,142,215,178,220,244,91,82,182,232,93,79,125,229,139,58,
+64,0,197,205,63,191,105,180,119,144,65,54,95,182,180,81,
+213,199,103,109,71,150,186,127,82,186,200,172,227,181,44,55,
+253,150,148,45,118,215,139,142,62,162,3,4,189,242,83,39,
+141,246,14,50,200,150,145,218,72,178,93,107,100,83,183,39,
+105,164,239,24,141,244,29,163,181,212,251,203,180,165,70,234,
+237,149,148,45,114,87,51,42,197,32,0,226,248,167,253,251,
+178,95,222,50,92,250,195,111,92,221,124,243,179,159,110,46,
+58,234,240,230,220,119,191,173,57,115,151,215,53,167,189,234,
+197,205,39,95,252,236,46,0,122,242,11,183,107,78,253,207,
+23,118,251,207,223,231,93,205,101,39,126,180,249,222,37,23,
+13,243,47,54,136,76,50,154,90,35,155,186,61,73,35,125,
+199,104,164,239,24,173,165,222,95,166,45,53,82,111,175,164,
+108,246,93,25,233,241,79,121,236,188,23,177,148,169,215,63,
+249,246,53,221,8,200,231,246,124,99,115,194,211,30,215,28,
+242,128,187,205,159,191,92,61,244,129,119,239,64,2,46,63,
+251,222,119,71,119,24,100,107,147,73,70,83,107,164,222,174,
+101,214,241,72,210,77,210,90,234,253,101,218,190,253,145,50,
+77,169,145,122,123,37,101,179,239,250,229,253,247,153,55,88,
+176,232,19,95,159,250,198,103,78,111,62,183,199,206,205,135,
+31,253,143,99,70,190,37,245,160,109,254,186,57,181,245,62,
+188,76,54,200,214,37,147,140,166,214,72,189,93,203,172,227,
+145,164,155,164,181,212,251,203,180,125,251,35,101,154,82,35,
+245,246,74,202,102,221,213,215,165,14,190,223,157,231,141,244,
+138,147,63,54,58,178,32,223,191,252,210,230,11,239,122,107,
+115,250,14,47,107,62,241,252,103,52,199,254,199,191,54,71,
+252,253,253,154,3,239,245,87,99,6,190,165,245,147,47,121,
+118,243,131,43,190,62,202,197,32,235,93,38,25,77,173,145,
+89,219,181,44,247,120,182,39,233,44,169,211,149,231,150,26,
+169,183,87,82,54,235,174,39,61,247,233,243,70,121,228,63,
+63,104,89,241,129,95,254,226,23,221,60,138,107,190,240,249,
+230,146,99,142,108,206,121,199,158,157,97,31,249,47,127,219,
+77,196,42,13,126,83,245,224,251,222,169,249,242,1,251,116,
+49,143,65,214,183,76,50,154,90,35,179,182,107,89,238,241,
+108,79,210,89,82,167,43,207,45,53,82,111,175,164,108,242,
+93,121,13,165,65,158,191,239,222,163,35,155,47,63,251,238,
+119,154,171,78,255,84,115,206,219,246,104,61,143,71,110,54,
+52,78,126,209,118,205,77,63,250,209,232,234,131,172,71,89,
+174,145,108,170,81,229,188,90,107,169,247,151,105,151,179,127,
+169,178,220,244,91,82,54,233,174,55,223,120,99,115,212,195,
+31,60,111,132,7,182,70,252,163,111,221,114,31,147,249,241,
+181,223,106,46,56,236,192,238,141,210,210,248,151,163,31,125,
+194,35,155,159,125,255,123,163,43,14,178,222,100,165,140,42,
+231,213,90,75,189,191,76,187,156,253,75,149,229,166,223,146,
+178,73,119,253,202,129,239,31,51,64,175,130,175,148,124,231,
+130,175,52,167,191,230,229,205,129,247,190,195,88,30,150,162,
+31,125,226,163,154,159,255,248,199,163,43,13,178,158,36,70,
+178,92,141,172,213,237,229,234,106,200,178,239,202,109,63,252,
+193,247,30,51,190,11,14,61,96,116,116,229,228,134,203,47,
+109,187,17,207,26,203,199,82,244,83,47,127,254,178,231,113,
+12,178,250,210,103,48,75,209,200,90,221,94,174,174,134,44,
+251,174,95,124,255,187,23,25,222,15,174,186,98,116,116,92,
+124,224,53,159,140,247,165,232,124,49,186,211,159,215,218,166,
+169,212,185,179,228,242,143,31,223,28,246,183,247,90,148,167,
+105,122,225,145,135,141,206,30,100,163,200,166,26,217,111,255,
+230,111,78,61,47,215,173,175,63,105,255,122,148,101,229,222,
+151,166,14,255,187,251,140,25,156,143,219,150,114,233,101,151,
+53,239,122,239,187,155,215,191,113,167,230,63,119,120,117,167,
+175,216,254,85,155,164,206,125,245,107,119,104,118,222,109,151,
+230,29,239,126,87,115,248,135,62,216,124,250,51,103,52,223,
+252,214,183,198,190,46,253,163,111,94,221,28,243,184,135,143,
+229,107,154,250,16,142,207,234,13,178,113,100,83,140,245,250,
+11,190,220,252,191,255,231,255,49,245,188,92,183,190,254,164,
+253,235,81,150,149,123,127,168,83,27,220,25,59,190,114,116,
+116,78,206,250,252,231,122,13,126,75,235,110,123,238,209,124,
+234,212,83,186,255,180,32,254,50,240,132,167,63,110,81,254,
+38,233,89,187,239,212,157,215,39,254,55,227,140,51,63,211,
+171,142,45,87,46,186,228,226,238,220,207,159,253,249,209,158,
+205,147,175,93,248,181,238,122,231,156,251,133,209,158,113,153,
+117,124,150,108,238,249,171,41,203,53,206,58,93,182,175,254,
+244,169,29,36,34,117,186,200,172,253,179,142,71,150,187,189,
+146,178,244,187,182,45,247,71,254,237,159,22,25,91,253,79,
+92,43,5,137,232,27,118,125,99,243,149,11,190,218,221,27,
+40,150,234,81,28,124,223,59,79,156,198,125,197,149,87,246,
+222,139,58,182,92,57,236,67,71,116,231,238,180,235,46,163,
+61,155,39,7,28,124,80,119,189,55,189,101,207,209,158,113,
+57,224,144,233,199,103,201,252,249,111,222,180,243,87,83,98,
+76,75,53,170,58,157,245,187,252,246,127,111,46,59,241,216,
+209,158,57,153,116,189,89,251,103,29,143,44,119,123,37,101,
+201,119,189,246,220,179,123,141,237,186,47,158,59,74,49,39,
+53,36,222,246,174,119,52,103,158,245,217,230,211,109,203,116,
+218,167,79,239,90,255,147,78,254,68,115,194,199,78,108,142,
+61,238,163,205,161,71,28,222,236,186,199,155,198,206,41,117,
+215,61,119,111,222,183,223,190,93,247,165,239,56,213,45,113,
+95,242,195,111,92,213,28,246,160,123,246,230,181,214,175,30,
+242,129,238,156,90,6,72,172,61,72,204,50,154,122,123,146,
+204,58,239,119,254,175,255,210,60,247,14,127,177,104,2,222,
+172,243,234,237,200,172,116,217,158,165,171,41,75,190,251,103,
+118,218,190,215,208,110,252,193,13,163,20,115,82,67,226,160,
+67,15,25,29,153,44,226,11,92,242,183,190,227,237,99,231,
+210,87,189,118,135,230,234,111,92,221,165,17,139,248,232,9,
+199,55,59,188,254,117,139,211,189,102,251,246,248,220,92,141,
+75,143,251,112,111,94,107,61,254,169,255,222,165,175,165,132,
+196,135,142,62,170,249,217,141,55,206,171,96,236,15,90,143,
+229,194,139,47,234,84,16,22,0,63,117,218,169,205,79,127,
+246,211,238,255,63,63,222,66,240,140,207,158,217,5,106,73,
+9,137,107,174,189,166,61,126,82,243,217,207,157,213,220,92,
+84,68,221,152,207,180,231,128,231,39,79,57,165,185,234,234,
+171,71,71,230,228,107,23,93,216,156,120,210,199,155,43,175,
+186,178,23,18,57,126,133,227,61,144,24,191,254,167,166,95,
+127,131,66,226,39,215,95,215,188,245,254,119,111,126,235,255,
+249,191,187,237,82,30,248,192,7,118,26,153,118,157,82,102,
+165,203,246,44,93,77,89,210,221,125,64,166,175,117,62,236,
+193,247,26,165,88,144,77,129,68,196,95,224,241,44,202,243,
+233,123,246,25,255,202,213,247,190,255,253,102,175,119,46,6,
+202,129,135,28,60,151,160,5,138,185,27,117,126,107,245,254,
+200,141,55,124,127,238,156,66,74,72,28,125,204,71,70,123,
+23,228,188,47,158,223,29,227,193,236,253,190,247,204,167,21,
+176,125,195,46,111,156,223,126,239,251,247,233,210,7,18,224,
+246,154,55,236,56,127,156,193,146,111,93,243,173,230,181,59,
+189,126,126,127,148,215,69,46,190,228,146,249,125,175,108,97,
+24,207,43,16,152,117,124,249,215,223,189,91,95,15,144,88,
+238,254,90,178,255,151,63,255,121,243,177,103,63,165,185,234,
+244,83,186,6,105,191,253,246,235,254,9,126,146,72,67,159,
+242,148,167,52,191,241,27,191,49,127,157,232,36,169,143,79,
+218,174,117,53,101,73,119,247,6,103,159,145,233,255,215,178,
+57,144,32,64,177,215,59,223,49,118,13,234,63,56,75,249,
+225,143,126,216,236,184,243,27,198,210,108,191,227,107,187,243,
+201,164,238,81,173,87,159,113,106,151,190,148,18,18,12,229,
+144,195,15,155,87,127,4,28,72,208,119,190,231,221,93,151,
+40,219,186,70,59,237,182,75,183,14,34,36,144,200,241,215,
+237,52,151,239,157,223,180,235,220,241,15,206,129,113,199,182,
+75,101,116,8,20,109,131,10,207,229,136,35,63,52,127,190,
+86,158,33,91,15,4,102,29,63,236,131,115,247,223,113,231,
+101,94,127,3,65,194,215,221,63,241,194,109,59,195,95,174,
+248,143,216,29,119,220,113,12,22,147,164,62,62,105,187,214,
+213,148,37,221,221,72,64,159,129,125,188,37,111,45,155,11,
+9,114,238,249,231,141,93,131,38,56,89,202,113,109,215,163,
+78,247,221,246,7,139,28,247,148,127,235,205,119,169,94,117,
+175,101,90,76,226,134,27,110,24,131,196,213,223,248,70,115,
+202,233,167,205,111,251,51,97,93,162,108,147,121,79,98,199,
+57,163,252,200,71,143,237,182,65,196,182,225,93,219,239,217,
+119,206,99,250,196,167,62,57,127,190,46,203,251,222,191,111,
+183,190,231,94,111,233,142,191,251,125,239,237,182,3,129,28,
+223,35,199,247,25,63,190,212,235,47,58,127,13,65,34,178,
+169,70,83,26,92,125,254,183,206,62,171,123,25,240,187,23,
+95,56,218,179,32,102,232,126,251,188,47,52,95,61,236,128,
+230,188,247,190,163,249,236,174,59,118,159,105,60,99,199,87,
+117,219,23,127,228,200,110,56,29,92,192,34,82,223,167,188,
+119,223,254,72,153,166,79,87,67,150,116,215,73,223,128,248,
+212,75,159,59,74,177,32,91,2,18,98,16,229,53,104,223,
+112,220,185,231,47,24,107,244,219,215,93,55,58,218,52,23,
+29,181,240,73,189,73,250,217,93,94,55,74,189,32,37,36,
+120,43,111,121,251,94,243,202,131,41,33,33,14,114,250,25,
+159,158,223,214,247,63,254,196,19,230,183,73,29,184,60,241,
+164,143,117,219,32,193,243,121,251,222,239,236,182,181,224,175,
+121,253,142,205,171,95,251,154,249,243,25,49,227,182,254,246,
+189,223,213,157,95,199,36,222,179,239,62,83,143,207,190,126,
+206,127,103,151,126,254,252,13,0,137,27,219,223,243,200,135,
+63,164,251,148,65,4,44,206,222,107,247,230,216,39,60,106,
+201,159,52,48,229,255,146,143,30,221,252,226,103,63,237,128,
+81,223,167,188,119,223,254,72,153,166,79,87,67,102,222,245,
+167,223,253,206,196,183,48,17,181,150,45,1,137,175,124,245,
+171,99,215,160,181,39,161,5,22,252,171,211,149,144,48,196,
+57,235,71,62,197,52,237,74,150,26,147,160,91,18,18,226,
+21,90,253,82,205,86,93,54,36,170,192,229,180,235,155,217,
+186,8,18,235,32,112,89,75,125,124,210,118,169,219,109,183,
+93,243,185,55,191,177,171,223,215,158,119,206,40,37,239,225,
+71,221,203,128,234,62,47,227,202,83,78,110,206,125,247,94,
+205,39,94,176,109,115,232,131,238,209,91,143,162,199,60,238,
+95,154,239,94,244,181,102,239,189,247,238,238,17,201,61,35,
+217,158,180,191,150,73,251,87,66,102,222,245,234,79,159,210,
+91,24,244,150,130,68,42,105,169,31,59,233,227,205,135,143,
+61,166,217,103,191,247,55,187,189,121,143,110,212,163,78,67,
+75,72,144,227,158,60,189,203,209,247,7,66,183,20,36,204,
+233,32,39,126,188,31,18,9,116,114,91,175,188,234,170,249,
+17,136,137,45,253,34,72,244,31,159,191,126,155,142,212,215,
+183,191,247,252,173,24,18,15,125,232,67,155,27,190,126,89,
+115,208,54,119,236,222,16,246,125,147,165,202,117,95,62,191,
+249,252,91,119,107,14,127,232,125,123,235,212,65,109,215,229,
+202,83,62,209,188,240,133,47,28,157,49,59,63,145,122,59,
+50,105,255,74,200,204,187,126,105,191,247,244,22,4,189,37,
+186,27,245,249,203,213,26,18,126,204,190,188,71,125,45,171,
+150,18,18,90,219,147,79,249,212,188,138,65,108,42,36,184,
+251,63,254,201,79,154,35,142,252,96,183,13,116,92,83,247,
+176,253,174,247,190,167,75,159,64,226,235,118,122,125,183,253,
+254,253,63,208,109,239,178,251,110,93,250,24,125,32,176,112,
+252,77,189,199,223,241,238,189,187,109,163,47,36,215,55,226,
+65,222,127,192,132,235,175,65,72,212,90,203,164,253,181,120,
+78,111,19,171,3,98,11,155,34,55,253,240,7,205,249,239,
+123,103,55,49,175,174,87,166,254,243,40,238,116,167,59,77,
+205,103,157,223,122,59,50,105,255,74,200,204,187,126,250,117,
+175,92,84,0,209,143,63,235,201,163,84,11,178,169,144,208,
+55,62,246,248,227,186,214,181,60,127,185,90,67,226,178,19,
+142,233,205,123,244,147,47,121,206,40,229,130,76,11,92,154,
+24,182,169,144,160,70,48,242,140,111,121,251,219,186,227,71,
+126,248,232,110,251,149,59,108,223,28,124,248,161,243,195,164,
+251,238,191,95,119,188,12,132,190,126,151,157,231,207,15,4,
+102,29,207,245,237,31,187,254,7,102,92,127,43,133,4,64,
+124,247,162,11,230,62,55,160,171,113,238,217,221,126,229,4,
+184,75,209,35,142,250,80,115,86,219,221,253,201,79,127,210,
+124,231,194,11,154,15,62,236,111,22,213,45,223,63,249,194,
+57,231,76,205,103,157,223,122,59,50,105,255,74,200,204,187,
+126,108,219,39,46,122,248,232,49,255,254,47,163,84,11,178,
+92,72,48,178,227,63,118,98,103,60,229,121,181,26,46,124,
+223,126,239,111,142,60,250,168,110,210,143,201,75,90,246,186,
+219,81,67,226,250,175,126,169,55,239,209,79,191,246,21,163,
+148,11,114,75,65,194,156,138,119,190,103,174,85,103,136,174,
+67,156,243,182,119,205,181,222,209,55,181,93,170,60,203,119,
+190,243,157,230,117,163,225,222,157,119,219,181,123,209,173,75,
+51,130,192,248,241,93,22,29,95,222,245,139,243,215,96,224,
+50,82,27,77,182,107,157,36,254,154,193,239,127,240,253,238,
+218,253,243,28,225,73,121,238,55,182,203,93,91,175,204,82,
+121,103,72,56,90,214,185,215,182,192,61,229,180,211,154,27,
+174,188,98,209,203,143,212,23,214,200,172,252,76,58,62,235,
+188,149,144,153,119,63,250,81,255,176,232,193,163,130,56,45,
+150,71,41,231,164,134,4,87,90,255,247,235,87,124,189,249,
+218,133,23,54,159,59,251,236,206,200,63,112,208,129,205,27,
+218,86,171,76,91,170,31,102,255,131,15,108,190,112,222,185,
+205,13,63,248,193,232,234,139,69,203,87,158,87,67,194,167,
+240,250,242,30,61,123,175,55,141,82,174,140,8,184,94,254,
+245,203,155,235,175,31,127,11,85,235,246,173,107,174,233,102,
+62,94,125,245,213,93,186,82,116,83,76,122,202,11,109,181,
+204,58,78,114,125,177,136,229,94,127,173,73,109,60,217,174,
+181,79,76,156,58,244,129,115,127,227,224,47,29,34,129,68,
+89,135,252,46,223,251,254,247,186,152,88,234,216,73,159,60,
+185,109,72,174,104,62,120,212,145,243,251,62,127,206,217,205,
+21,159,58,105,81,253,58,237,213,47,233,174,49,45,63,100,
+210,241,89,231,173,132,204,188,123,31,29,75,173,95,185,222,
+220,152,2,53,235,178,28,115,158,38,179,32,97,14,254,180,
+17,14,159,197,91,109,249,254,13,55,52,215,183,173,57,253,
+225,102,124,139,51,215,48,225,107,107,149,229,26,77,157,254,
+130,11,46,104,174,248,228,130,49,155,64,21,233,131,68,41,
+31,109,187,195,142,239,241,214,55,119,219,140,63,241,29,35,
+80,191,188,249,230,230,99,219,61,121,172,126,29,246,144,109,
+154,159,254,244,167,205,127,249,47,255,165,55,223,117,254,178,
+93,235,106,202,204,187,31,242,128,185,127,230,154,164,245,159,
+241,108,14,36,184,224,159,253,220,220,139,90,75,149,89,144,
+32,211,94,248,250,198,103,78,27,165,90,29,209,114,151,239,
+162,152,29,57,75,174,249,246,181,205,161,31,60,188,83,222,
+1,249,78,235,49,229,26,75,41,195,203,46,191,124,254,26,
+38,128,173,23,89,174,209,244,165,63,115,215,185,174,6,245,
+133,246,200,44,72,92,112,225,215,186,227,175,126,221,107,70,
+123,22,234,123,130,194,151,84,239,13,153,164,101,234,255,35,
+30,241,136,222,124,215,249,203,118,173,171,41,51,239,126,200,
+253,239,50,246,208,181,138,238,150,50,11,18,34,234,186,32,
+233,155,151,106,136,115,185,178,20,72,124,240,31,238,223,155,
+119,250,227,107,231,140,108,181,196,203,97,101,254,121,81,179,
+196,183,30,146,222,12,80,114,254,23,191,56,191,239,27,223,
+252,70,183,111,154,36,88,169,194,103,42,251,90,150,218,88,
+74,3,154,166,165,104,249,201,49,143,123,196,252,239,95,142,
+208,205,130,132,250,233,56,168,123,241,111,255,131,15,106,94,
+255,198,185,250,23,72,252,184,5,184,63,137,202,245,121,177,
+55,180,93,237,87,190,242,149,19,243,69,102,237,159,116,124,
+37,100,230,93,235,239,89,214,122,226,51,254,99,148,114,78,
+250,32,97,223,85,223,184,186,249,113,241,17,218,143,125,226,
+164,69,233,180,134,203,149,37,65,226,31,31,208,155,119,240,
+88,77,81,105,247,120,235,91,186,124,11,50,90,30,114,196,
+194,167,245,28,143,138,33,92,251,237,111,119,235,121,23,195,
+228,44,219,196,232,16,143,128,102,159,165,115,120,13,94,138,
+139,216,159,169,215,128,157,244,68,108,226,242,182,82,155,245,
+186,150,224,81,27,73,105,56,211,180,79,12,79,166,14,44,
+165,187,33,240,123,204,104,42,125,212,123,66,222,209,241,27,
+216,14,36,200,135,31,243,176,249,235,31,120,175,59,52,63,
+188,250,170,238,221,142,105,249,154,181,127,210,241,149,144,153,
+119,157,22,184,164,72,249,211,235,23,10,181,15,18,10,185,
+22,36,46,211,148,46,220,114,100,41,144,56,98,66,92,229,
+148,255,124,193,40,197,234,200,197,151,206,189,125,105,100,33,
+35,10,94,34,139,8,220,10,224,126,224,192,3,186,74,120,
+208,97,135,116,239,111,148,207,107,52,130,152,136,37,109,42,
+171,192,218,238,109,223,185,76,251,225,99,62,210,193,166,124,
+35,84,23,239,157,239,222,187,155,217,41,16,87,70,242,189,
+77,106,228,99,61,200,82,140,8,12,127,114,221,183,155,3,
+183,185,227,124,29,248,248,179,159,58,58,186,0,137,143,158,
+112,92,247,126,11,207,1,68,213,77,251,213,181,79,158,122,
+74,235,169,125,115,62,238,115,205,181,215,118,199,74,72,0,
+79,174,127,200,3,239,214,77,212,170,33,81,235,44,89,106,
+186,91,66,102,222,245,164,231,60,109,254,129,39,169,79,236,
+71,68,121,83,201,162,70,54,106,201,75,78,81,149,117,83,
+34,235,75,129,196,193,247,235,239,50,213,95,213,90,105,201,
+204,210,15,125,248,168,110,168,216,186,121,12,145,188,77,154,
+152,197,199,91,239,171,124,94,243,29,64,133,225,103,238,131,
+138,13,202,1,1,208,148,51,88,141,96,100,184,147,90,63,
+238,196,227,231,231,82,24,242,227,229,105,41,109,27,114,94,
+15,178,20,35,2,137,27,190,126,121,247,63,49,169,3,135,
+60,240,238,205,47,70,245,46,144,136,150,67,157,230,180,244,
+53,118,215,182,221,11,199,75,72,148,95,113,63,226,239,239,
+219,237,219,170,33,225,159,191,243,192,147,212,31,245,100,90,
+235,69,23,95,60,95,176,81,173,100,45,230,27,212,233,124,
+228,118,185,50,11,18,42,64,95,158,169,15,232,174,150,24,
+209,72,171,125,233,101,151,118,175,144,91,63,248,176,57,72,
+136,53,228,153,222,248,166,93,59,47,194,108,207,75,47,191,
+108,126,191,225,76,162,75,145,125,103,127,225,156,174,28,179,
+253,221,239,125,183,251,144,140,215,195,169,209,19,47,203,229,
+184,150,240,231,237,111,151,214,210,132,54,34,54,34,253,167,
+207,88,254,111,178,18,82,26,88,159,241,212,251,173,223,230,
+54,183,233,92,127,93,128,249,122,208,2,227,219,95,60,175,
+75,19,72,28,119,226,9,221,55,56,116,183,2,232,115,207,
+27,255,2,91,164,15,18,159,124,233,115,230,175,255,169,151,
+63,175,219,247,216,199,62,182,55,159,145,228,119,150,174,134,
+204,188,235,101,39,126,116,161,64,167,232,69,71,207,129,64,
+223,56,173,80,169,94,198,42,165,52,146,232,14,237,121,95,
+191,162,255,243,252,147,100,22,36,84,138,190,252,250,227,226,
+213,148,196,100,76,18,211,194,101,178,83,38,159,149,47,185,
+249,6,68,228,212,211,79,159,223,255,163,209,112,105,109,244,
+39,23,175,130,251,214,197,217,231,156,51,54,47,34,94,92,
+190,39,241,211,22,164,153,101,233,55,57,234,35,31,110,127,
+159,197,31,227,89,75,50,203,120,234,253,217,190,185,5,226,
+33,127,115,247,177,186,112,206,219,231,38,141,189,121,175,183,
+118,101,112,218,25,159,238,182,73,234,242,164,143,2,247,65,
+162,236,110,124,229,224,185,89,173,183,190,245,173,123,243,25,
+73,254,102,233,106,200,204,187,138,55,148,238,217,36,61,226,
+161,247,109,110,28,69,218,143,57,238,163,93,193,213,234,203,
+81,90,195,72,162,197,165,110,255,186,215,118,51,24,151,26,
+52,155,5,137,111,125,254,179,189,249,253,210,254,227,95,187,
+90,73,241,108,59,237,58,247,5,43,30,196,151,191,242,149,
+46,182,96,251,192,67,231,190,174,149,201,59,140,214,255,146,
+68,120,26,246,239,178,199,194,36,176,218,232,205,49,169,203,
+197,199,113,110,188,105,238,115,122,25,89,18,188,140,212,49,
+34,223,190,184,224,107,95,27,29,93,125,233,51,24,90,203,
+172,253,128,124,220,147,30,61,86,23,4,50,127,220,122,14,
+41,3,101,103,2,160,180,9,18,123,169,240,186,158,174,108,
+47,36,158,255,204,249,107,255,176,245,86,207,60,243,204,249,
+251,71,39,73,157,174,214,213,144,37,221,213,8,70,89,168,
+147,212,236,50,114,227,77,55,245,126,175,50,106,74,176,73,
+40,90,188,244,165,107,101,52,199,28,119,108,235,62,127,161,
+107,85,47,108,93,107,110,249,215,175,188,162,155,49,232,123,
+151,126,160,250,235,84,53,36,196,29,234,124,10,182,250,127,
+209,213,146,114,90,119,173,249,4,159,247,42,108,191,245,29,
+115,239,119,68,118,27,125,5,171,156,238,30,163,223,251,125,
+11,70,175,187,162,155,87,122,107,159,59,251,243,29,160,182,
+31,117,45,12,131,70,24,132,160,179,174,77,210,251,126,198,
+90,145,62,131,161,181,204,218,239,57,207,123,207,219,23,213,
+137,211,182,127,105,243,131,182,204,118,127,203,92,176,151,103,
+181,215,187,222,49,15,9,154,24,144,184,155,122,73,227,181,
+5,18,38,239,29,254,144,185,17,65,118,227,126,245,240,39,
+157,36,117,186,90,87,67,150,116,215,75,142,61,106,81,161,
+78,210,124,129,90,244,119,159,15,188,127,190,128,87,74,107,
+72,248,168,76,157,71,129,165,213,148,124,23,147,43,11,152,
+49,124,42,200,168,98,229,93,22,173,91,196,240,100,210,157,
+114,218,220,103,247,58,163,31,185,196,102,4,126,243,155,223,
+236,190,216,69,121,14,229,247,43,65,66,100,62,219,121,119,
+196,215,203,165,191,240,162,139,186,81,14,95,56,119,252,205,
+111,91,59,144,168,165,54,154,210,144,74,141,148,251,62,253,
+241,143,53,135,60,96,110,90,118,169,103,183,221,142,31,183,
+93,56,211,174,235,81,164,89,26,72,148,49,143,171,78,251,
+100,247,157,204,105,159,181,43,243,85,234,90,146,37,229,198,
+191,136,79,154,107,80,171,86,250,210,227,230,190,193,208,81,
+251,252,243,155,55,183,45,82,95,193,222,18,90,67,194,183,
+2,234,60,174,230,44,75,1,177,228,85,151,130,152,63,146,
+125,190,229,240,157,239,126,119,126,187,140,229,92,114,233,165,
+243,251,5,21,197,42,188,96,150,125,202,250,204,179,22,62,
+196,243,213,175,93,208,85,120,235,254,9,77,28,72,96,51,
+199,247,59,112,255,14,26,9,90,234,202,136,9,249,238,133,
+237,228,111,45,74,109,76,165,129,149,26,41,247,121,125,91,
+172,160,174,23,244,228,151,60,103,108,130,157,238,177,50,153,
+166,94,8,204,200,220,197,163,6,213,63,219,9,154,251,80,
+110,121,239,90,202,99,165,174,37,89,114,110,252,127,102,93,
+160,147,20,40,190,90,253,137,176,201,57,90,44,227,249,179,
+222,248,220,84,213,39,247,73,251,136,183,251,234,127,31,247,
+7,67,224,181,90,34,40,152,252,10,50,18,31,249,205,190,
+253,15,58,176,57,255,75,11,179,39,203,24,14,192,36,192,
+72,253,13,1,239,32,219,215,127,231,250,174,11,22,163,143,
+26,202,251,252,57,115,95,94,202,212,226,232,117,215,95,215,
+236,119,192,254,99,251,168,119,17,252,93,192,90,145,62,67,
+162,145,89,251,35,217,190,249,23,63,111,187,199,47,29,171,
+27,81,221,133,115,222,190,71,243,163,37,204,92,173,197,12,
+78,215,16,240,63,225,132,19,70,123,23,231,35,146,253,147,
+116,45,200,146,115,241,171,214,173,93,202,135,101,75,61,253,
+53,175,152,127,13,183,22,239,225,51,18,111,68,94,116,241,
+69,221,112,222,34,189,112,130,182,199,12,181,114,165,47,17,
+167,184,226,235,221,7,112,203,8,62,225,238,213,121,242,159,
+28,171,41,151,181,207,235,255,58,76,164,138,248,132,92,254,
+199,67,203,14,116,217,174,3,184,254,87,131,119,1,36,186,
+6,215,93,127,253,124,218,192,79,185,242,32,4,52,79,61,
+253,180,206,51,41,197,189,93,227,75,95,254,114,119,142,235,
+136,71,8,56,251,204,191,128,229,106,130,180,79,250,12,136,
+70,102,237,143,148,219,63,255,233,79,155,51,119,126,205,162,
+58,18,53,189,250,196,109,159,216,156,191,239,222,205,213,103,
+156,214,213,229,105,95,176,50,37,251,224,251,221,185,57,246,
+137,143,234,190,35,225,165,174,72,157,143,72,246,79,210,181,
+32,203,202,197,13,87,92,222,205,32,235,43,208,73,250,161,
+127,122,80,115,197,201,31,211,247,24,93,101,229,228,179,197,
+139,60,244,232,71,254,253,178,62,83,54,200,218,145,218,104,
+150,187,29,169,247,131,161,87,188,143,121,252,35,198,234,202,
+36,61,252,193,219,116,127,234,100,152,243,156,119,190,185,185,
+246,188,133,161,209,175,28,180,95,115,96,11,150,79,29,118,
+240,124,28,98,150,36,63,181,70,234,237,213,144,101,223,253,
+170,83,79,238,186,19,125,5,56,77,143,127,218,191,119,223,
+203,92,169,22,74,148,185,126,177,139,11,56,200,250,148,89,
+198,51,107,59,210,183,95,157,244,141,9,95,168,242,134,168,
+239,162,122,123,179,172,59,182,189,24,118,242,11,183,235,62,
+119,119,237,185,231,180,158,197,194,107,253,221,63,238,63,244,
+62,205,251,183,123,234,252,107,225,125,247,175,37,233,106,141,
+212,219,171,33,155,116,119,163,29,155,2,10,250,225,71,253,
+67,247,95,23,63,190,102,238,47,249,110,41,169,231,71,124,
+244,137,143,94,244,255,142,131,172,31,217,84,99,153,116,94,
+246,71,129,162,108,192,110,110,161,113,243,77,55,45,104,187,
+61,173,129,59,105,183,55,52,239,253,219,123,207,79,241,142,
+228,250,147,164,204,67,153,174,222,94,77,217,228,92,92,241,
+201,143,207,124,141,124,170,222,243,246,45,177,31,51,162,242,
+217,221,8,202,150,148,79,239,88,124,155,211,119,12,191,176,
+101,254,246,127,144,213,145,77,53,154,73,231,101,127,125,220,
+255,125,250,139,191,165,120,188,1,203,79,190,125,109,243,190,
+109,238,212,252,241,111,254,198,232,200,130,212,215,175,165,204,
+67,153,174,222,94,77,217,172,92,124,239,226,175,117,163,5,
+99,198,191,137,122,240,125,238,212,185,121,254,33,201,4,168,
+107,206,254,108,243,227,111,95,211,254,8,203,111,253,253,137,
+113,9,176,242,143,87,6,89,159,82,26,82,105,60,245,254,
+73,26,153,181,93,139,23,179,104,36,219,62,201,159,243,78,
+219,225,229,205,157,127,243,215,167,94,39,247,89,170,214,50,
+105,255,74,200,102,223,245,230,155,110,236,188,129,73,111,90,
+110,174,234,11,122,93,221,95,10,158,254,218,87,116,255,172,
+244,229,3,246,237,254,94,205,127,27,248,3,149,90,4,144,
+114,190,175,82,149,175,178,15,178,62,165,52,160,210,88,234,
+253,147,52,50,107,187,150,73,233,163,151,157,120,108,243,229,
+3,247,157,223,158,36,229,57,75,209,90,38,237,95,9,217,
+98,119,253,201,117,215,54,159,127,243,46,205,161,15,28,127,
+121,102,75,171,63,83,249,216,118,79,234,64,240,131,43,23,
+191,130,46,0,117,228,63,63,104,62,253,197,31,94,252,6,
+234,32,27,79,102,25,223,36,141,244,109,255,254,175,255,191,
+205,211,110,251,39,205,255,254,191,253,111,243,199,107,141,212,
+219,181,148,231,76,211,213,144,45,126,87,127,176,122,201,49,
+71,118,255,140,85,71,136,55,69,15,185,255,93,155,19,159,
+249,132,230,156,119,236,217,253,3,184,235,79,147,139,143,89,
+152,66,126,210,243,158,190,42,67,175,131,172,61,153,100,100,
+165,1,246,105,164,222,254,127,254,207,255,163,121,244,159,253,
+97,243,27,255,223,255,55,150,190,214,72,189,93,75,121,206,
+52,93,13,185,69,239,234,207,83,175,57,251,172,174,123,224,
+79,126,24,251,209,255,250,208,238,147,120,140,95,220,64,119,
+224,67,15,123,96,115,204,227,30,222,156,244,220,167,53,103,
+188,225,213,205,23,247,125,119,243,245,79,156,216,124,255,242,
+75,187,47,16,47,85,120,17,71,61,226,239,58,64,28,246,
+183,247,90,213,151,184,6,217,178,210,103,48,75,209,90,38,
+29,95,234,126,250,107,191,118,171,46,112,175,126,79,146,190,
+243,104,100,169,219,245,254,213,144,213,189,251,22,110,229,191,
+246,193,67,230,189,136,203,63,190,240,134,227,32,235,95,106,
+163,89,170,214,50,233,248,82,247,211,219,252,222,255,234,26,
+164,105,210,119,30,141,44,117,187,222,191,26,178,186,119,223,
+130,98,202,172,111,90,0,196,103,118,218,126,180,119,144,173,
+69,150,107,44,117,250,108,215,26,169,183,35,125,233,126,237,
+215,126,109,126,127,223,241,105,58,73,250,210,150,186,154,178,
+186,119,223,130,242,249,183,204,253,49,176,110,203,52,55,112,
+144,245,41,203,53,150,58,125,182,107,141,212,219,145,73,233,
+106,141,244,29,43,117,146,244,165,45,117,53,101,117,239,190,
+133,228,123,23,95,216,28,116,239,59,118,95,24,242,126,201,
+32,91,159,212,198,82,26,80,169,145,122,59,82,166,157,166,
+155,42,147,174,83,239,159,164,181,76,218,191,146,178,186,119,
+223,2,242,171,95,222,220,28,255,212,199,118,159,216,187,242,
+212,147,71,123,7,217,218,164,54,150,108,215,26,169,183,35,
+101,218,105,186,169,50,233,58,245,254,73,90,203,164,253,43,
+41,171,123,247,45,32,153,56,117,254,62,239,26,237,25,100,
+107,148,218,88,178,93,107,164,222,158,36,147,210,101,127,173,
+181,244,165,161,181,204,218,95,31,159,180,127,53,100,117,239,
+190,153,242,253,203,46,233,222,223,207,63,55,15,178,245,74,
+109,44,165,1,149,26,169,183,39,201,164,116,217,95,107,45,
+125,105,104,45,179,246,215,199,39,237,95,13,89,221,187,111,
+134,120,51,207,167,233,188,130,126,243,141,235,227,239,242,7,
+217,116,169,141,165,52,160,82,35,245,118,100,86,186,165,110,
+47,117,127,100,210,254,200,172,243,38,29,95,9,89,157,187,
+110,1,249,252,91,118,237,62,34,243,179,239,141,127,117,105,
+144,173,83,106,35,41,13,167,212,72,189,29,153,149,110,169,
+219,75,221,31,153,180,63,50,235,188,73,199,87,66,86,231,
+174,155,41,87,158,114,114,55,39,226,7,87,45,239,143,124,
+6,89,191,178,92,35,153,148,126,214,117,234,227,217,174,53,
+82,111,71,102,237,223,212,227,171,33,107,35,23,203,16,96,
+240,73,188,235,191,250,229,209,158,65,54,130,44,215,104,38,
+165,159,117,157,250,120,182,107,141,212,219,145,89,251,55,245,
+248,106,200,218,200,197,18,229,231,63,249,73,115,220,147,30,
+211,124,235,115,103,142,246,12,178,81,164,54,158,165,234,44,
+153,148,190,222,31,141,212,219,145,50,237,52,93,170,44,55,
+253,45,33,171,123,247,101,136,79,207,157,254,154,151,119,95,
+45,30,100,227,73,105,96,203,209,89,50,41,125,189,63,26,
+169,183,35,101,218,105,186,84,89,110,250,91,66,86,247,238,
+203,144,175,28,248,254,230,218,243,230,254,59,98,144,65,6,
+89,57,89,23,144,240,81,219,239,95,122,241,104,107,144,65,
+6,89,73,89,243,144,240,189,202,159,245,124,162,110,144,65,
+6,89,25,89,55,221,141,65,6,25,100,117,100,128,196,32,
+131,12,50,85,6,72,12,50,200,32,83,101,128,196,32,131,
+12,50,69,154,230,255,7,191,171,212,35,236,50,144,76,0,
+0,0,0,73,69,78,68,174,66,96,130};
+
+
+int splash_image15_sz = sizeof(splash_image15);
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/stdio/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/stdio/main.cpp
new file mode 100644
index 0000000000..bdfd53c976
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/stdio/main.cpp
@@ -0,0 +1,40 @@
+#include "mbed.h"
+#include "test_env.h"
+
+/* This test purpose is to verify the behaviour when the program does not link
+ * any symbol from the mbed library.
+ * In the past we had an issue where the stdio retargeting was not linked in.
+ */
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(stdio_auto);
+ MBED_HOSTTEST_DESCRIPTION(stdio);
+ MBED_HOSTTEST_START("MBED_2");
+
+ DigitalOut led1(LED1);
+ DigitalOut led2(LED2);
+
+ int value_int;
+
+
+ notify_start(); // Just to sync with host test supervisor
+
+ const char* PRINT_PATTERN = "MBED: Your value was: %d\r\n";
+
+ while (true) {
+ // SCANF PRINTF family
+ value_int = 0;
+ led1 = 1;
+ scanf("%d", &value_int);
+ printf(PRINT_PATTERN, value_int);
+ led1 = 0;
+
+ // FSCANF, FPRINTF family
+ value_int = 0;
+ led2 = 1;
+ fscanf(stdin, "%d", &value_int);
+ fprintf(stdout, PRINT_PATTERN, value_int);
+ led2 = 0;
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/stdio_benchmark/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/stdio_benchmark/main.cpp
new file mode 100644
index 0000000000..b9179815dc
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/stdio_benchmark/main.cpp
@@ -0,0 +1,35 @@
+#include "mbed.h"
+
+#define TEST_STDIO 0
+
+int main() {
+ printf("\r\n\r\n*** Start of memory write test (2K bytes) ***\r\n");
+
+ // dummy data
+ char buf[2048];
+ int index = 0;
+ for (index = 0; index < 2048; index++) {
+ buf[index] = ~index & 0xFF;
+ }
+
+ // Run the timed write test
+ float starttime, duration;
+ Timer t;
+ t.start();
+ starttime = t.read();
+
+#if TEST_STDIO
+ LocalFileSystem local("local");
+ FILE *fp = fopen("/local/test.dat", "w");
+ fwrite(buf, sizeof(buf[0]), sizeof(buf)/sizeof(buf[0]), fp);
+ fclose(fp);
+#else
+ FILEHANDLE fh = local_file_open("test.dat", O_WRONLY);
+ LocalFileHandle lfh(fh);
+ lfh.write(buf, sizeof(buf));
+ lfh.close();
+#endif
+
+ duration = t.read() - starttime;
+ printf("Write completed in %.2f seconds. Average throughput = %.0f bytes/second.\r\n", duration, 2048/duration);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/stl/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/stl/main.cpp
new file mode 100644
index 0000000000..62404ac944
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/stl/main.cpp
@@ -0,0 +1,121 @@
+#include "test_env.h"
+
+#include <algorithm>
+#include <string>
+#include <vector>
+#include <queue>
+#include <map>
+#include <math.h>
+
+#define BUFFER_SIZE 128
+#define TABLE_SIZE(TAB) (sizeof(TAB) / sizeof(TAB[0]))
+
+#define NEGATIVE_INTEGERS -32768,-3214,-999,-100,-1,0,1,4231,999,4123,32760,99999
+#define POSITIVE_INTEGERS 32768,3214,999,100,1,0,1,4231,999,4123,32760,99999
+#define FLOATS 0.002,0.92430,15.91320,791.77368,6208.2,25719.4952,426815.982588,6429271.046,42468024.93,212006462.910
+#define FLOATS_STR "0.002","0.92430","15.91320","791.77368","6208.2","25719.4952","426815.982588","6429271.046","42468024.93","212006462.910"
+
+template <class T, class F>
+void BubbleSort(T& array, size_t array_size, F functor)
+{
+ bool flag = true;
+ size_t numLength = array_size;
+ for(size_t i = 1; (i <= numLength) && flag; i++) {
+ flag = false;
+ for (size_t j = 0; j < (numLength - 1); j++) {
+ if (functor(array[j+1], array[j])) {
+ int temp = array[j];
+ array[j] = array[j + 1];
+ array[j+1] = temp;
+ flag = true;
+ }
+ }
+ }
+}
+
+struct printInt {
+ void operator()(int i) {
+ printf("%d ", i);
+ }
+};
+
+struct printFloat {
+ void operator()(float f) {
+ printf("%f ", f);
+ }
+};
+
+struct printString {
+ void operator()(char* s) {
+ printf("%s ", s);
+ }
+};
+
+struct greaterAbs {
+ bool operator()(int a, int b) {
+ return abs(a) > abs(b);
+ }
+};
+
+
+int main()
+{
+ int p_integers[] = {POSITIVE_INTEGERS};
+ int n_integers[] = {NEGATIVE_INTEGERS};
+ float floats[] = {FLOATS};
+ bool result = true;
+
+ {
+ std::vector<int> v_pints(p_integers, p_integers + TABLE_SIZE(p_integers));
+ bool equal_result = std::equal(v_pints.begin(), v_pints.end(), p_integers);
+ result = result && equal_result;
+ printf("[%s] Fill vector with data\r\n", equal_result ? "OK" : "FAIL");
+ }
+
+ {
+ char* floats_str[] = {FLOATS_STR};
+ float floats_transform[TABLE_SIZE(floats_str)] = {0.0};
+ std::transform(floats_str, floats_str + TABLE_SIZE(floats_str), floats_transform, atof);
+ bool equal_result = std::equal(floats_transform, floats_transform + TABLE_SIZE(floats_transform), floats);
+ result = result && equal_result;
+ printf("[%s] Transform float strings\r\n", equal_result ? "OK" : "FAIL");
+
+ std::for_each(floats_str, floats_str + TABLE_SIZE(floats_str), printString());
+ printf("\r\n");
+ std::for_each(floats_transform, floats_transform + TABLE_SIZE(floats_transform), printFloat());
+ printf("\r\n");
+ }
+
+ {
+ std::vector<int> v_nints_1(n_integers, n_integers + TABLE_SIZE(n_integers));
+ std::vector<int> v_nints_2(n_integers, n_integers + TABLE_SIZE(n_integers));
+ {
+ BubbleSort(v_nints_1, v_nints_1.size(), std::greater<int>());
+ std::sort(v_nints_2.begin(), v_nints_2.end(), std::greater<int>());
+ bool equal_result = std::equal(v_nints_1.begin(), v_nints_1.end(), v_nints_2.begin());
+ result = result && equal_result;
+ printf("[%s] Sort integers\r\n", equal_result ? "OK" : "FAIL");
+
+ std::for_each(v_nints_1.begin(), v_nints_1.end(), printInt());
+ printf("\r\n");
+ std::for_each(v_nints_2.begin(), v_nints_2.end(), printInt());
+ printf("\r\n");
+ }
+
+ {
+ BubbleSort(v_nints_1, v_nints_1.size(), greaterAbs());
+ std::sort(v_nints_2.begin(), v_nints_2.end(), greaterAbs());
+ bool equal_result = std::equal(v_nints_1.begin(), v_nints_1.end(), v_nints_2.begin());
+ result = result && equal_result;
+ printf("[%s] Sort integers\r\n", equal_result ? "OK" : "FAIL");
+
+ std::for_each(v_nints_1.begin(), v_nints_1.end(), printInt());
+ printf("\r\n");
+ std::for_each(v_nints_2.begin(), v_nints_2.end(), printInt());
+ printf("\r\n");
+ }
+ }
+
+ notify_completion(result);
+ return 0;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker/main.cpp
new file mode 100644
index 0000000000..fc1ed9ca30
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker/main.cpp
@@ -0,0 +1,49 @@
+#include "mbed.h"
+#include "test_env.h"
+
+void print_char(char c = '*')
+{
+ printf("%c", c);
+ fflush(stdout);
+}
+
+Ticker flipper_1;
+DigitalOut led1(LED1);
+
+void flip_1() {
+ static int led1_state = 0;
+ if (led1_state) {
+ led1 = 0; led1_state = 0;
+ } else {
+ led1 = 1; led1_state = 1;
+ }
+ print_char();
+}
+
+Ticker flipper_2;
+DigitalOut led2(LED2);
+
+void flip_2() {
+ static int led2_state = 0;
+ if (led2_state) {
+ led2 = 0; led2_state = 0;
+ } else {
+ led2 = 1; led2_state = 1;
+ }
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(wait_us_auto);
+ MBED_HOSTTEST_DESCRIPTION(Ticker Int);
+ MBED_HOSTTEST_START("MBED_11");
+
+ led1 = 0;
+ led2 = 0;
+ flipper_1.attach(&flip_1, 1.0); // the address of the function to be attached (flip) and the interval (1 second)
+ flipper_2.attach(&flip_2, 2.0); // the address of the function to be attached (flip) and the interval (2 seconds)
+
+ while (true) {
+ wait(1.0);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_2/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_2/main.cpp
new file mode 100644
index 0000000000..2509f4e4db
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_2/main.cpp
@@ -0,0 +1,38 @@
+#include "mbed.h"
+#include "test_env.h"
+
+Ticker tick;
+DigitalOut led(LED1);
+
+namespace {
+ const int MS_INTERVALS = 1000;
+}
+
+void print_char(char c = '*')
+{
+ printf("%c", c);
+ fflush(stdout);
+}
+
+void togglePin(void)
+{
+ static int ticker_count = 0;
+ if (ticker_count >= MS_INTERVALS) {
+ print_char();
+ ticker_count = 0;
+ led = !led; // Blink
+ }
+ ticker_count++;
+}
+
+int main()
+{
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(wait_us_auto);
+ MBED_HOSTTEST_DESCRIPTION(Ticker Int us);
+ MBED_HOSTTEST_START("MBED_23");
+
+ tick.attach_us(togglePin, 1000);
+
+ while (1);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_3/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_3/main.cpp
new file mode 100644
index 0000000000..a24078eb69
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_3/main.cpp
@@ -0,0 +1,43 @@
+#include "mbed.h"
+#include "test_env.h"
+
+void ticker_callback_1(void);
+void ticker_callback_2(void);
+
+DigitalOut led0(LED1);
+DigitalOut led1(LED2);
+Ticker ticker;
+
+void print_char(char c = '*')
+{
+ printf("%c", c);
+ fflush(stdout);
+}
+
+void ticker_callback_2(void)
+{
+ ticker.detach();
+ ticker.attach(ticker_callback_1, 1.0);
+ led1 = !led1;
+ print_char();
+}
+
+void ticker_callback_1(void)
+{
+ ticker.detach();
+ ticker.attach(ticker_callback_2, 1.0);
+ led0 = !led0;
+ print_char();
+}
+
+int main(void)
+{
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(wait_us_auto);
+ MBED_HOSTTEST_DESCRIPTION(Ticker Two callbacks);
+ MBED_HOSTTEST_START("MBED_34");
+
+ ticker.attach(ticker_callback_1, 1.0);
+
+ while(1);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_mfun/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_mfun/main.cpp
new file mode 100644
index 0000000000..18f1bb51c1
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/ticker_mfun/main.cpp
@@ -0,0 +1,41 @@
+#include "mbed.h"
+
+Ticker tick;
+DigitalOut led(LED1);
+
+namespace {
+ const int MS_INTERVALS = 1000;
+}
+
+class TickerHandler {
+public:
+ TickerHandler(const int _ms_intervals) : m_ticker_count(0), m_ms_intervals(_ms_intervals) {
+ }
+
+ void print_char(char c = '*')
+ {
+ printf("%c", c);
+ fflush(stdout);
+ }
+
+ void togglePin(void)
+ {
+ if (ticker_count >= MS_INTERVALS) {
+ print_char();
+ ticker_count = 0;
+ led = !led; // Blink
+ }
+ ticker_count++;
+ }
+
+protected:
+ int m_ticker_count;
+};
+
+int main()
+{
+ TickerHandler th;
+
+ tick.attach_us(th, TickerHandler::togglePin, 1000);
+ while (1);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/time_us/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/time_us/main.cpp
new file mode 100644
index 0000000000..18452c8f47
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/time_us/main.cpp
@@ -0,0 +1,30 @@
+#include "mbed.h"
+#include "test_env.h"
+
+DigitalOut led(LED1);
+
+namespace {
+ const int MS_INTERVALS = 1000;
+}
+
+void print_char(char c = '*')
+{
+ printf("%c", c);
+ fflush(stdout);
+}
+
+int main()
+{
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(wait_us_auto);
+ MBED_HOSTTEST_DESCRIPTION(Time us);
+ MBED_HOSTTEST_START("MBED_25");
+
+ while (true) {
+ for (int i = 0; i < MS_INTERVALS; i++) {
+ wait_us(1000);
+ }
+ led = !led; // Blink
+ print_char();
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/timeout/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/timeout/main.cpp
new file mode 100644
index 0000000000..0dc7ee1ce4
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/timeout/main.cpp
@@ -0,0 +1,42 @@
+#include "mbed.h"
+#include "test_env.h"
+
+Timeout timer;
+DigitalOut led(LED1);
+
+namespace {
+ const int MS_INTERVALS = 1000;
+}
+
+void print_char(char c = '*') {
+ printf("%c", c);
+ fflush(stdout);
+}
+
+void toggleOff(void);
+
+void toggleOn(void) {
+ static int toggle_counter = 0;
+ if (toggle_counter == MS_INTERVALS) {
+ led = !led;
+ print_char();
+ toggle_counter = 0;
+ }
+ toggle_counter++;
+ timer.attach_us(toggleOff, 500);
+}
+
+void toggleOff(void) {
+ timer.attach_us(toggleOn, 500);
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(wait_us_auto);
+ MBED_HOSTTEST_DESCRIPTION(Timeout Int us);
+ MBED_HOSTTEST_START("MBED_24");
+
+ toggleOn();
+
+ while (1);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/tsi/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/tsi/main.cpp
new file mode 100644
index 0000000000..f1dfa08907
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/tsi/main.cpp
@@ -0,0 +1,14 @@
+#include "mbed.h"
+#include "TSISensor.h"
+
+int main(void) {
+ DigitalOut led(LED_GREEN);
+ TSISensor tsi;
+
+ while (true) {
+ printf("slider percentage: %f%\r\n", tsi.readPercentage());
+ printf("slider distance: %dmm\r\n", tsi.readDistance());
+ wait(1);
+ led = !led;
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/vtor_reloc/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/vtor_reloc/main.cpp
new file mode 100644
index 0000000000..c7e654e8c0
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/vtor_reloc/main.cpp
@@ -0,0 +1,76 @@
+// Interrupt table relocation test, based on the 'interrupt_in' test
+// It will test an interrupt pin before and after the interrupt table is relocated
+// Works only on LPC1768
+
+#include "test_env.h"
+#include "cmsis_nvic.h"
+#include <string.h>
+
+#define PIN_IN (p5)
+#define PIN_OUT (p25)
+#define NUM_VECTORS (16+33)
+
+DigitalOut out(PIN_OUT);
+DigitalOut myled(LED1);
+
+volatile int checks = 0;
+uint32_t int_table[NUM_VECTORS] __attribute__ ((aligned(256)));
+
+#define FALLING_EDGE_COUNT 5
+
+void flipper() {
+ for (int i = 0; i < FALLING_EDGE_COUNT; i++) {
+ out = 1;
+ wait(0.2);
+ out = 0;
+ wait(0.2);
+ }
+}
+
+void in_handler() {
+ checks++;
+ myled = !myled;
+}
+
+static bool test_once() {
+ InterruptIn in(PIN_IN);
+ checks = 0;
+ printf("Interrupt table location: 0x%08X\r\n", SCB->VTOR);
+ in.rise(NULL);
+ in.fall(in_handler);
+ flipper();
+ in.fall(NULL);
+ bool result = (checks == FALLING_EDGE_COUNT);
+ printf("Falling edge checks counted: %d ... [%s]\r\n", checks, result ? "OK" : "FAIL");
+ return result;
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(Interrupt vector relocation);
+ MBED_HOSTTEST_START("MBED_A18");
+
+ // First test, no table reallocation
+ {
+ printf("Starting first test (interrupts not relocated).\r\n");
+ bool ret = test_once();
+ if (ret == false) {
+ MBED_HOSTTEST_RESULT(false);
+ }
+ }
+
+ // Relocate interrupt table and test again
+ {
+ printf("Starting second test (interrupts relocated).\r\n");
+ memcpy(int_table, (void*)SCB->VTOR, sizeof(int_table));
+ SCB->VTOR = (uint32_t)int_table;
+
+ bool ret = test_once();
+ if (ret == false) {
+ MBED_HOSTTEST_RESULT(false);
+ }
+ }
+
+ MBED_HOSTTEST_RESULT(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/HTTPClient.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/HTTPClient.cpp
new file mode 100644
index 0000000000..ff367fb30a
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/HTTPClient.cpp
@@ -0,0 +1,649 @@
+/* HTTPClient.cpp */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+//Debug is disabled by default
+#if 0
+//Enable debug
+#include <cstdio>
+#define DBG(x, ...) std::printf("[HTTPClient : DBG]"x"\r\n", ##__VA_ARGS__);
+#define WARN(x, ...) std::printf("[HTTPClient : WARN]"x"\r\n", ##__VA_ARGS__);
+#define ERR(x, ...) std::printf("[HTTPClient : ERR]"x"\r\n", ##__VA_ARGS__);
+
+#else
+//Disable debug
+#define DBG(x, ...)
+#define WARN(x, ...)
+#define ERR(x, ...)
+
+#endif
+
+#define HTTP_PORT 80
+
+#define OK 0
+
+#define MIN(x,y) (((x)<(y))?(x):(y))
+#define MAX(x,y) (((x)>(y))?(x):(y))
+
+#define CHUNK_SIZE 256
+
+#include <cstring>
+
+#include "HTTPClient.h"
+
+HTTPClient::HTTPClient() :
+m_sock(), m_basicAuthUser(NULL), m_basicAuthPassword(NULL), m_httpResponseCode(0)
+{
+
+}
+
+HTTPClient::~HTTPClient()
+{
+
+}
+
+#if 0
+void HTTPClient::basicAuth(const char* user, const char* password) //Basic Authentification
+{
+ m_basicAuthUser = user;
+ m_basicAuthPassword = password;
+}
+#endif
+
+HTTPResult HTTPClient::get(const char* url, IHTTPDataIn* pDataIn, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking
+{
+ return connect(url, HTTP_GET, NULL, pDataIn, timeout);
+}
+
+HTTPResult HTTPClient::get(const char* url, char* result, size_t maxResultLen, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking
+{
+ HTTPText str(result, maxResultLen);
+ return get(url, &str, timeout);
+}
+
+HTTPResult HTTPClient::post(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking
+{
+ return connect(url, HTTP_POST, (IHTTPDataOut*)&dataOut, pDataIn, timeout);
+}
+
+HTTPResult HTTPClient::put(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking
+{
+ return connect(url, HTTP_PUT, (IHTTPDataOut*)&dataOut, pDataIn, timeout);
+}
+
+HTTPResult HTTPClient::del(const char* url, IHTTPDataIn* pDataIn, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking
+{
+ return connect(url, HTTP_DELETE, NULL, pDataIn, timeout);
+}
+
+
+int HTTPClient::getHTTPResponseCode()
+{
+ return m_httpResponseCode;
+}
+
+#define CHECK_CONN_ERR(ret) \
+ do{ \
+ if(ret) { \
+ m_sock.close(); \
+ ERR("Connection error (%d)", ret); \
+ return HTTP_CONN; \
+ } \
+ } while(0)
+
+#define PRTCL_ERR() \
+ do{ \
+ m_sock.close(); \
+ ERR("Protocol error"); \
+ return HTTP_PRTCL; \
+ } while(0)
+
+HTTPResult HTTPClient::connect(const char* url, HTTP_METH method, IHTTPDataOut* pDataOut, IHTTPDataIn* pDataIn, int timeout) //Execute request
+{
+ m_httpResponseCode = 0; //Invalidate code
+ m_timeout = timeout;
+
+ pDataIn->writeReset();
+ if( pDataOut )
+ {
+ pDataOut->readReset();
+ }
+
+ char scheme[8];
+ uint16_t port;
+ char host[32];
+ char path[64];
+ //First we need to parse the url (http[s]://host[:port][/[path]]) -- HTTPS not supported (yet?)
+ HTTPResult res = parseURL(url, scheme, sizeof(scheme), host, sizeof(host), &port, path, sizeof(path));
+ if(res != HTTP_OK)
+ {
+ ERR("parseURL returned %d", res);
+ return res;
+ }
+
+ if(port == 0) //TODO do handle HTTPS->443
+ {
+ port = 80;
+ }
+
+ DBG("Scheme: %s", scheme);
+ DBG("Host: %s", host);
+ DBG("Port: %d", port);
+ DBG("Path: %s", path);
+
+ //Connect
+ DBG("Connecting socket to server");
+ int ret = m_sock.connect(host, port);
+ if (ret < 0)
+ {
+ m_sock.close();
+ ERR("Could not connect");
+ return HTTP_CONN;
+ }
+
+ //Send request
+ DBG("Sending request");
+ char buf[CHUNK_SIZE];
+ const char* meth = (method==HTTP_GET)?"GET":(method==HTTP_POST)?"POST":(method==HTTP_PUT)?"PUT":(method==HTTP_DELETE)?"DELETE":"";
+ snprintf(buf, sizeof(buf), "%s %s HTTP/1.1\r\nHost: %s\r\n", meth, path, host); //Write request
+ ret = send(buf);
+ if(ret)
+ {
+ m_sock.close();
+ ERR("Could not write request");
+ return HTTP_CONN;
+ }
+
+ //Send all headers
+
+ //Send default headers
+ DBG("Sending headers");
+ if( pDataOut != NULL )
+ {
+ if( pDataOut->getIsChunked() )
+ {
+ ret = send("Transfer-Encoding: chunked\r\n");
+ CHECK_CONN_ERR(ret);
+ }
+ else
+ {
+ snprintf(buf, sizeof(buf), "Content-Length: %d\r\n", pDataOut->getDataLen());
+ ret = send(buf);
+ CHECK_CONN_ERR(ret);
+ }
+ char type[48];
+ if( pDataOut->getDataType(type, 48) == HTTP_OK )
+ {
+ snprintf(buf, sizeof(buf), "Content-Type: %s\r\n", type);
+ ret = send(buf);
+ CHECK_CONN_ERR(ret);
+ }
+ }
+
+ //Close headers
+ DBG("Headers sent");
+ ret = send("\r\n");
+ CHECK_CONN_ERR(ret);
+
+ size_t trfLen;
+
+ //Send data (if available)
+ if( pDataOut != NULL )
+ {
+ DBG("Sending data");
+ while(true)
+ {
+ size_t writtenLen = 0;
+ pDataOut->read(buf, CHUNK_SIZE, &trfLen);
+ if( pDataOut->getIsChunked() )
+ {
+ //Write chunk header
+ char chunkHeader[16];
+ snprintf(chunkHeader, sizeof(chunkHeader), "%X\r\n", trfLen); //In hex encoding
+ ret = send(chunkHeader);
+ CHECK_CONN_ERR(ret);
+ }
+ else if( trfLen == 0 )
+ {
+ break;
+ }
+ if( trfLen != 0 )
+ {
+ ret = send(buf, trfLen);
+ CHECK_CONN_ERR(ret);
+ }
+
+ if( pDataOut->getIsChunked() )
+ {
+ ret = send("\r\n"); //Chunk-terminating CRLF
+ CHECK_CONN_ERR(ret);
+ }
+ else
+ {
+ writtenLen += trfLen;
+ if( writtenLen >= pDataOut->getDataLen() )
+ {
+ break;
+ }
+ }
+
+ if( trfLen == 0 )
+ {
+ break;
+ }
+ }
+
+ }
+
+ //Receive response
+ DBG("Receiving response");
+ ret = recv(buf, CHUNK_SIZE - 1, CHUNK_SIZE - 1, &trfLen); //Read n bytes
+ CHECK_CONN_ERR(ret);
+
+ buf[trfLen] = '\0';
+
+ char* crlfPtr = strstr(buf, "\r\n");
+ if(crlfPtr == NULL)
+ {
+ PRTCL_ERR();
+ }
+
+ int crlfPos = crlfPtr - buf;
+ buf[crlfPos] = '\0';
+
+ //Parse HTTP response
+ if( sscanf(buf, "HTTP/%*d.%*d %d %*[^\r\n]", &m_httpResponseCode) != 1 )
+ {
+ //Cannot match string, error
+ ERR("Not a correct HTTP answer : %s\n", buf);
+ PRTCL_ERR();
+ }
+
+ if( (m_httpResponseCode < 200) || (m_httpResponseCode >= 300) )
+ {
+ //Did not return a 2xx code; TODO fetch headers/(&data?) anyway and implement a mean of writing/reading headers
+ WARN("Response code %d", m_httpResponseCode);
+ PRTCL_ERR();
+ }
+
+ DBG("Reading headers");
+
+ memmove(buf, &buf[crlfPos+2], trfLen - (crlfPos + 2) + 1); //Be sure to move NULL-terminating char as well
+ trfLen -= (crlfPos + 2);
+
+ size_t recvContentLength = 0;
+ bool recvChunked = false;
+ //Now get headers
+ while( true )
+ {
+ crlfPtr = strstr(buf, "\r\n");
+ if(crlfPtr == NULL)
+ {
+ if( trfLen < CHUNK_SIZE - 1 )
+ {
+ size_t newTrfLen;
+ ret = recv(buf + trfLen, 1, CHUNK_SIZE - trfLen - 1, &newTrfLen);
+ trfLen += newTrfLen;
+ buf[trfLen] = '\0';
+ DBG("Read %d chars; In buf: [%s]", newTrfLen, buf);
+ CHECK_CONN_ERR(ret);
+ continue;
+ }
+ else
+ {
+ PRTCL_ERR();
+ }
+ }
+
+ crlfPos = crlfPtr - buf;
+
+ if(crlfPos == 0) //End of headers
+ {
+ DBG("Headers read");
+ memmove(buf, &buf[2], trfLen - 2 + 1); //Be sure to move NULL-terminating char as well
+ trfLen -= 2;
+ break;
+ }
+
+ buf[crlfPos] = '\0';
+
+ char key[32];
+ char value[32];
+
+ key[31] = '\0';
+ value[31] = '\0';
+
+ int n = sscanf(buf, "%31[^:]: %31[^\r\n]", key, value);
+ if ( n == 2 )
+ {
+ DBG("Read header : %s: %s\n", key, value);
+ if( !strcmp(key, "Content-Length") )
+ {
+ sscanf(value, "%d", &recvContentLength);
+ pDataIn->setDataLen(recvContentLength);
+ }
+ else if( !strcmp(key, "Transfer-Encoding") )
+ {
+ if( !strcmp(value, "Chunked") || !strcmp(value, "chunked") )
+ {
+ recvChunked = true;
+ pDataIn->setIsChunked(true);
+ }
+ }
+ else if( !strcmp(key, "Content-Type") )
+ {
+ pDataIn->setDataType(value);
+ }
+
+ memmove(buf, &buf[crlfPos+2], trfLen - (crlfPos + 2) + 1); //Be sure to move NULL-terminating char as well
+ trfLen -= (crlfPos + 2);
+
+ }
+ else
+ {
+ ERR("Could not parse header");
+ PRTCL_ERR();
+ }
+
+ }
+
+ //Receive data
+ DBG("Receiving data");
+ while(true)
+ {
+ size_t readLen = 0;
+
+ if( recvChunked )
+ {
+ //Read chunk header
+ bool foundCrlf;
+ do
+ {
+ foundCrlf = false;
+ crlfPos=0;
+ buf[trfLen]=0;
+ if(trfLen >= 2)
+ {
+ for(; crlfPos < trfLen - 2; crlfPos++)
+ {
+ if( buf[crlfPos] == '\r' && buf[crlfPos + 1] == '\n' )
+ {
+ foundCrlf = true;
+ break;
+ }
+ }
+ }
+ if(!foundCrlf) //Try to read more
+ {
+ if( trfLen < CHUNK_SIZE )
+ {
+ size_t newTrfLen;
+ ret = recv(buf + trfLen, 0, CHUNK_SIZE - trfLen - 1, &newTrfLen);
+ trfLen += newTrfLen;
+ CHECK_CONN_ERR(ret);
+ continue;
+ }
+ else
+ {
+ PRTCL_ERR();
+ }
+ }
+ } while(!foundCrlf);
+ buf[crlfPos] = '\0';
+ int n = sscanf(buf, "%x", &readLen);
+ if(n!=1)
+ {
+ ERR("Could not read chunk length");
+ PRTCL_ERR();
+ }
+
+ memmove(buf, &buf[crlfPos+2], trfLen - (crlfPos + 2)); //Not need to move NULL-terminating char any more
+ trfLen -= (crlfPos + 2);
+
+ if( readLen == 0 )
+ {
+ //Last chunk
+ break;
+ }
+ }
+ else
+ {
+ readLen = recvContentLength;
+ }
+
+ DBG("Retrieving %d bytes", readLen);
+
+ do
+ {
+ pDataIn->write(buf, MIN(trfLen, readLen));
+ if( trfLen > readLen )
+ {
+ memmove(buf, &buf[readLen], trfLen - readLen);
+ trfLen -= readLen;
+ readLen = 0;
+ }
+ else
+ {
+ readLen -= trfLen;
+ }
+
+ if(readLen)
+ {
+ ret = recv(buf, 1, CHUNK_SIZE - trfLen - 1, &trfLen);
+ CHECK_CONN_ERR(ret);
+ }
+ } while(readLen);
+
+ if( recvChunked )
+ {
+ if(trfLen < 2)
+ {
+ size_t newTrfLen;
+ //Read missing chars to find end of chunk
+ ret = recv(buf + trfLen, 2 - trfLen, CHUNK_SIZE - trfLen - 1, &newTrfLen);
+ CHECK_CONN_ERR(ret);
+ trfLen += newTrfLen;
+ }
+ if( (buf[0] != '\r') || (buf[1] != '\n') )
+ {
+ ERR("Format error");
+ PRTCL_ERR();
+ }
+ memmove(buf, &buf[2], trfLen - 2);
+ trfLen -= 2;
+ }
+ else
+ {
+ break;
+ }
+
+ }
+
+ m_sock.close();
+ DBG("Completed HTTP transaction");
+
+ return HTTP_OK;
+}
+
+HTTPResult HTTPClient::recv(char* buf, size_t minLen, size_t maxLen, size_t* pReadLen) //0 on success, err code on failure
+{
+ DBG("Trying to read between %d and %d bytes", minLen, maxLen);
+ size_t readLen = 0;
+
+ if(!m_sock.is_connected())
+ {
+ WARN("Connection was closed by server");
+ return HTTP_CLOSED; //Connection was closed by server
+ }
+
+ int ret;
+ while(readLen < maxLen)
+ {
+ if(readLen < minLen)
+ {
+ DBG("Trying to read at most %d bytes [Blocking]", minLen - readLen);
+ m_sock.set_blocking(false, m_timeout);
+ ret = m_sock.receive_all(buf + readLen, minLen - readLen);
+ }
+ else
+ {
+ DBG("Trying to read at most %d bytes [Not blocking]", maxLen - readLen);
+ m_sock.set_blocking(false, 0);
+ ret = m_sock.receive(buf + readLen, maxLen - readLen);
+ }
+
+ if( ret > 0)
+ {
+ readLen += ret;
+ }
+ else if( ret == 0 )
+ {
+ break;
+ }
+ else
+ {
+ if(!m_sock.is_connected())
+ {
+ ERR("Connection error (recv returned %d)", ret);
+ *pReadLen = readLen;
+ return HTTP_CONN;
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ if(!m_sock.is_connected())
+ {
+ break;
+ }
+ }
+ DBG("Read %d bytes", readLen);
+ *pReadLen = readLen;
+ return HTTP_OK;
+}
+
+HTTPResult HTTPClient::send(char* buf, size_t len) //0 on success, err code on failure
+{
+ if(len == 0)
+ {
+ len = strlen(buf);
+ }
+ DBG("Trying to write %d bytes", len);
+ size_t writtenLen = 0;
+
+ if(!m_sock.is_connected())
+ {
+ WARN("Connection was closed by server");
+ return HTTP_CLOSED; //Connection was closed by server
+ }
+
+ m_sock.set_blocking(false, m_timeout);
+ int ret = m_sock.send_all(buf, len);
+ if(ret > 0)
+ {
+ writtenLen += ret;
+ }
+ else if( ret == 0 )
+ {
+ WARN("Connection was closed by server");
+ return HTTP_CLOSED; //Connection was closed by server
+ }
+ else
+ {
+ ERR("Connection error (send returned %d)", ret);
+ return HTTP_CONN;
+ }
+
+ DBG("Written %d bytes", writtenLen);
+ return HTTP_OK;
+}
+
+HTTPResult HTTPClient::parseURL(const char* url, char* scheme, size_t maxSchemeLen, char* host, size_t maxHostLen, uint16_t* port, char* path, size_t maxPathLen) //Parse URL
+{
+ char* schemePtr = (char*) url;
+ char* hostPtr = (char*) strstr(url, "://");
+ if(hostPtr == NULL)
+ {
+ WARN("Could not find host");
+ return HTTP_PARSE; //URL is invalid
+ }
+
+ if( maxSchemeLen < hostPtr - schemePtr + 1 ) //including NULL-terminating char
+ {
+ WARN("Scheme str is too small (%d >= %d)", maxSchemeLen, hostPtr - schemePtr + 1);
+ return HTTP_PARSE;
+ }
+ memcpy(scheme, schemePtr, hostPtr - schemePtr);
+ scheme[hostPtr - schemePtr] = '\0';
+
+ hostPtr+=3;
+
+ size_t hostLen = 0;
+
+ char* portPtr = strchr(hostPtr, ':');
+ if( portPtr != NULL )
+ {
+ hostLen = portPtr - hostPtr;
+ portPtr++;
+ if( sscanf(portPtr, "%hu", port) != 1)
+ {
+ WARN("Could not find port");
+ return HTTP_PARSE;
+ }
+ }
+ else
+ {
+ *port=0;
+ }
+ char* pathPtr = strchr(hostPtr, '/');
+ if( hostLen == 0 )
+ {
+ hostLen = pathPtr - hostPtr;
+ }
+
+ if( maxHostLen < hostLen + 1 ) //including NULL-terminating char
+ {
+ WARN("Host str is too small (%d >= %d)", maxHostLen, hostLen + 1);
+ return HTTP_PARSE;
+ }
+ memcpy(host, hostPtr, hostLen);
+ host[hostLen] = '\0';
+
+ size_t pathLen;
+ char* fragmentPtr = strchr(hostPtr, '#');
+ if(fragmentPtr != NULL)
+ {
+ pathLen = fragmentPtr - pathPtr;
+ }
+ else
+ {
+ pathLen = strlen(pathPtr);
+ }
+
+ if( maxPathLen < pathLen + 1 ) //including NULL-terminating char
+ {
+ WARN("Path str is too small (%d >= %d)", maxPathLen, pathLen + 1);
+ return HTTP_PARSE;
+ }
+ memcpy(path, pathPtr, pathLen);
+ path[pathLen] = '\0';
+
+ return HTTP_OK;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/HTTPClient.h b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/HTTPClient.h
new file mode 100644
index 0000000000..7cb30b0337
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/HTTPClient.h
@@ -0,0 +1,159 @@
+/* HTTPClient.h */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/** \file
+HTTP Client header file
+*/
+
+#ifndef HTTP_CLIENT_H
+#define HTTP_CLIENT_H
+
+#include "TCPSocketConnection.h"
+
+#define HTTP_CLIENT_DEFAULT_TIMEOUT 15000
+
+class HTTPData;
+
+#include "IHTTPData.h"
+#include "mbed.h"
+
+///HTTP client results
+enum HTTPResult
+{
+ HTTP_PROCESSING, ///<Processing
+ HTTP_PARSE, ///<url Parse error
+ HTTP_DNS, ///<Could not resolve name
+ HTTP_PRTCL, ///<Protocol error
+ HTTP_NOTFOUND, ///<HTTP 404 Error
+ HTTP_REFUSED, ///<HTTP 403 Error
+ HTTP_ERROR, ///<HTTP xxx error
+ HTTP_TIMEOUT, ///<Connection timeout
+ HTTP_CONN, ///<Connection error
+ HTTP_CLOSED, ///<Connection was closed by remote host
+ HTTP_OK = 0, ///<Success
+};
+
+/**A simple HTTP Client
+The HTTPClient is composed of:
+- The actual client (HTTPClient)
+- Classes that act as a data repository, each of which deriving from the HTTPData class (HTTPText for short text content, HTTPFile for file I/O, HTTPMap for key/value pairs, and HTTPStream for streaming purposes)
+*/
+class HTTPClient
+{
+public:
+ ///Instantiate the HTTP client
+ HTTPClient();
+ ~HTTPClient();
+
+#if 0 //TODO add header handlers
+ /**
+ Provides a basic authentification feature (Base64 encoded username and password)
+ Pass two NULL pointers to switch back to no authentication
+ @param user username to use for authentication, must remain valid durlng the whole HTTP session
+ @param user password to use for authentication, must remain valid durlng the whole HTTP session
+ */
+ void basicAuth(const char* user, const char* password); //Basic Authentification
+#endif
+
+ //High Level setup functions
+ /** Execute a GET request on the URL
+ Blocks until completion
+ @param url : url on which to execute the request
+ @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL
+ @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
+ @return 0 on success, HTTP error (<0) on failure
+ */
+ HTTPResult get(const char* url, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
+
+ /** Execute a GET request on the URL
+ Blocks until completion
+ This is a helper to directly get a piece of text from a HTTP result
+ @param url : url on which to execute the request
+ @param result : pointer to a char array in which the result will be stored
+ @param maxResultLen : length of the char array (including space for the NULL-terminating char)
+ @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
+ @return 0 on success, HTTP error (<0) on failure
+ */
+ HTTPResult get(const char* url, char* result, size_t maxResultLen, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
+
+ /** Execute a POST request on the URL
+ Blocks until completion
+ @param url : url on which to execute the request
+ @param dataOut : a IHTTPDataOut instance that contains the data that will be posted
+ @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL
+ @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
+ @return 0 on success, HTTP error (<0) on failure
+ */
+ HTTPResult post(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
+
+ /** Execute a PUT request on the URL
+ Blocks until completion
+ @param url : url on which to execute the request
+ @param dataOut : a IHTTPDataOut instance that contains the data that will be put
+ @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL
+ @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
+ @return 0 on success, HTTP error (<0) on failure
+ */
+ HTTPResult put(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
+
+ /** Execute a DELETE request on the URL
+ Blocks until completion
+ @param url : url on which to execute the request
+ @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL
+ @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
+ @return 0 on success, HTTP error (<0) on failure
+ */
+ HTTPResult del(const char* url, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
+
+ /** Get last request's HTTP response code
+ @return The HTTP response code of the last request
+ */
+ int getHTTPResponseCode();
+
+private:
+ enum HTTP_METH
+ {
+ HTTP_GET,
+ HTTP_POST,
+ HTTP_PUT,
+ HTTP_DELETE,
+ HTTP_HEAD
+ };
+
+ HTTPResult connect(const char* url, HTTP_METH method, IHTTPDataOut* pDataOut, IHTTPDataIn* pDataIn, int timeout); //Execute request
+ HTTPResult recv(char* buf, size_t minLen, size_t maxLen, size_t* pReadLen); //0 on success, err code on failure
+ HTTPResult send(char* buf, size_t len = 0); //0 on success, err code on failure
+ HTTPResult parseURL(const char* url, char* scheme, size_t maxSchemeLen, char* host, size_t maxHostLen, uint16_t* port, char* path, size_t maxPathLen); //Parse URL
+
+ //Parameters
+ TCPSocketConnection m_sock;
+
+ int m_timeout;
+
+ const char* m_basicAuthUser;
+ const char* m_basicAuthPassword;
+ int m_httpResponseCode;
+
+};
+
+//Including data containers here for more convenience
+#include "data/HTTPText.h"
+#include "data/HTTPMap.h"
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/IHTTPData.h b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/IHTTPData.h
new file mode 100644
index 0000000000..24f1337511
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/IHTTPData.h
@@ -0,0 +1,96 @@
+/* IHTTPData.h */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef IHTTPDATA_H
+#define IHTTPDATA_H
+
+#include <cstring>
+
+using std::size_t;
+
+///This is a simple interface for HTTP data storage (impl examples are Key/Value Pairs, File, etc...)
+class IHTTPDataOut
+{
+protected:
+ friend class HTTPClient;
+
+ /** Reset stream to its beginning
+ * Called by the HTTPClient on each new request
+ */
+ virtual void readReset() = 0;
+
+ /** Read a piece of data to be transmitted
+ * @param buf Pointer to the buffer on which to copy the data
+ * @param len Length of the buffer
+ * @param pReadLen Pointer to the variable on which the actual copied data length will be stored
+ */
+ virtual int read(char* buf, size_t len, size_t* pReadLen) = 0;
+
+ /** Get MIME type
+ * @param type Internet media type from Content-Type header
+ */
+ virtual int getDataType(char* type, size_t maxTypeLen) = 0; //Internet media type for Content-Type header
+
+ /** Determine whether the HTTP client should chunk the data
+ * Used for Transfer-Encoding header
+ */
+ virtual bool getIsChunked() = 0;
+
+ /** If the data is not chunked, get its size
+ * Used for Content-Length header
+ */
+ virtual size_t getDataLen() = 0;
+
+};
+
+///This is a simple interface for HTTP data storage (impl examples are Key/Value Pairs, File, etc...)
+class IHTTPDataIn
+{
+protected:
+ friend class HTTPClient;
+
+ /** Reset stream to its beginning
+ * Called by the HTTPClient on each new request
+ */
+ virtual void writeReset() = 0;
+
+ /** Write a piece of data transmitted by the server
+ * @param buf Pointer to the buffer from which to copy the data
+ * @param len Length of the buffer
+ */
+ virtual int write(const char* buf, size_t len) = 0;
+
+ /** Set MIME type
+ * @param type Internet media type from Content-Type header
+ */
+ virtual void setDataType(const char* type) = 0;
+
+ /** Determine whether the data is chunked
+ * Recovered from Transfer-Encoding header
+ */
+ virtual void setIsChunked(bool chunked) = 0;
+
+ /** If the data is not chunked, set its size
+ * From Content-Length header
+ */
+ virtual void setDataLen(size_t len) = 0;
+
+};
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPMap.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPMap.cpp
new file mode 100644
index 0000000000..5eb4c52e6e
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPMap.cpp
@@ -0,0 +1,200 @@
+/* HTTPMap.cpp */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "HTTPMap.h"
+
+#include <cstring>
+
+#include <cctype>
+
+#define OK 0
+
+using std::strncpy;
+
+HTTPMap::HTTPMap() : m_pos(0), m_count(0)
+{
+
+}
+
+void HTTPMap::put(const char* key, const char* value)
+{
+ if(m_count >= HTTPMAP_TABLE_SIZE)
+ {
+ return;
+ }
+ m_keys[m_count] = key;
+ m_values[m_count] = value;
+ m_count++;
+}
+
+void HTTPMap::clear()
+{
+ m_count = 0;
+ m_pos = 0;
+}
+
+/*virtual*/ void HTTPMap::readReset()
+{
+ m_pos = 0;
+}
+
+/*virtual*/ int HTTPMap::read(char* buf, size_t len, size_t* pReadLen)
+{
+ if(m_pos >= m_count)
+ {
+ *pReadLen = 0;
+ m_pos = 0;
+ return OK;
+ }
+
+ //URL encode
+ char* out = buf;
+ const char* in = m_keys[m_pos];
+ if( (m_pos != 0) && (out - buf < len - 1) )
+ {
+ *out='&';
+ out++;
+ }
+
+ while( (*in != '\0') && (out - buf < len - 3) )
+ {
+ if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~')
+ {
+ *out = *in;
+ out++;
+ }
+ else if( *in == ' ' )
+ {
+ *out='+';
+ out++;
+ }
+ else
+ {
+ char hex[] = "0123456789abcdef";
+ *out='%';
+ out++;
+ *out=hex[(*in>>4)&0xf];
+ out++;
+ *out=hex[(*in)&0xf];
+ out++;
+ }
+ in++;
+ }
+
+ if( out - buf < len - 1 )
+ {
+ *out='=';
+ out++;
+ }
+
+ in = m_values[m_pos];
+ while( (*in != '\0') && (out - buf < len - 3) )
+ {
+ if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~')
+ {
+ *out = *in;
+ out++;
+ }
+ else if( *in == ' ' )
+ {
+ *out='+';
+ out++;
+ }
+ else
+ {
+ char hex[] = "0123456789abcdef";
+ *out='%';
+ out++;
+ *out=hex[(*in>>4)&0xf];
+ out++;
+ *out=hex[(*in)&0xf];
+ out++;
+ }
+ in++;
+ }
+
+ *pReadLen = out - buf;
+
+ m_pos++;
+ return OK;
+}
+
+/*virtual*/ int HTTPMap::getDataType(char* type, size_t maxTypeLen) //Internet media type for Content-Type header
+{
+ strncpy(type, "application/x-www-form-urlencoded", maxTypeLen-1);
+ type[maxTypeLen-1] = '\0';
+ return OK;
+}
+
+/*virtual*/ bool HTTPMap::getIsChunked() //For Transfer-Encoding header
+{
+ return false; ////Data is computed one key/value pair at a time
+}
+
+/*virtual*/ size_t HTTPMap::getDataLen() //For Content-Length header
+{
+ size_t count = 0;
+ for(size_t i = 0; i< m_count; i++)
+ {
+ //URL encode
+ const char* in = m_keys[i];
+ if( i != 0 )
+ {
+ count++;
+ }
+
+ while( (*in != '\0') )
+ {
+ if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~')
+ {
+ count++;
+ }
+ else if( *in == ' ' )
+ {
+ count++;
+ }
+ else
+ {
+ count+=3;
+ }
+ in++;
+ }
+
+ count ++;
+
+ in = m_values[i];
+ while( (*in != '\0') )
+ {
+ if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~')
+ {
+ count++;
+ }
+ else if( *in == ' ' )
+ {
+ count++;
+ }
+ else
+ {
+ count+=3;
+ }
+ in++;
+ }
+ }
+ return count;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPMap.h b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPMap.h
new file mode 100644
index 0000000000..c8433778ff
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPMap.h
@@ -0,0 +1,71 @@
+/* HTTPMap.h */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#ifndef HTTPMAP_H_
+#define HTTPMAP_H_
+
+#include "../IHTTPData.h"
+
+#define HTTPMAP_TABLE_SIZE 32
+
+/** Map of key/value pairs
+ * Used to transmit POST data using the application/x-www-form-urlencoded encoding
+ */
+class HTTPMap: public IHTTPDataOut
+{
+public:
+ /**
+ Instantiates HTTPMap
+ It supports at most 32 key/values pairs
+ */
+ HTTPMap();
+
+ /** Put Key/Value pair
+ The references to the parameters must remain valid as long as the clear() function is not called
+ @param key The key to use
+ @param value The corresponding value
+ */
+ void put(const char* key, const char* value);
+
+ /** Clear table
+ */
+ void clear();
+
+protected:
+ //IHTTPDataIn
+ virtual void readReset();
+
+ virtual int read(char* buf, size_t len, size_t* pReadLen);
+
+ virtual int getDataType(char* type, size_t maxTypeLen); //Internet media type for Content-Type header
+
+ virtual bool getIsChunked(); //For Transfer-Encoding header
+
+ virtual size_t getDataLen(); //For Content-Length header
+
+private:
+ const char* m_keys[HTTPMAP_TABLE_SIZE];
+ const char* m_values[HTTPMAP_TABLE_SIZE];
+
+ size_t m_pos;
+ size_t m_count;
+};
+
+#endif /* HTTPMAP_H_ */
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPText.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPText.cpp
new file mode 100644
index 0000000000..18cd42070f
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPText.cpp
@@ -0,0 +1,104 @@
+/* HTTPText.cpp */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "HTTPText.h"
+
+#include <cstring>
+
+#define OK 0
+
+using std::memcpy;
+using std::strncpy;
+using std::strlen;
+
+#define MIN(x,y) (((x)<(y))?(x):(y))
+
+HTTPText::HTTPText(char* str) : m_str(str), m_pos(0)
+{
+ m_size = strlen(str) + 1;
+}
+
+HTTPText::HTTPText(char* str, size_t size) : m_str(str), m_size(size), m_pos(0)
+{
+
+}
+
+//IHTTPDataIn
+/*virtual*/ void HTTPText::readReset()
+{
+ m_pos = 0;
+}
+
+/*virtual*/ int HTTPText::read(char* buf, size_t len, size_t* pReadLen)
+{
+ *pReadLen = MIN(len, m_size - 1 - m_pos);
+ memcpy(buf, m_str + m_pos, *pReadLen);
+ m_pos += *pReadLen;
+ return OK;
+}
+
+/*virtual*/ int HTTPText::getDataType(char* type, size_t maxTypeLen) //Internet media type for Content-Type header
+{
+ strncpy(type, "text/plain", maxTypeLen-1);
+ type[maxTypeLen-1] = '\0';
+ return OK;
+}
+
+/*virtual*/ bool HTTPText::getIsChunked() //For Transfer-Encoding header
+{
+ return false;
+}
+
+/*virtual*/ size_t HTTPText::getDataLen() //For Content-Length header
+{
+ return m_size - 1;
+}
+
+//IHTTPDataOut
+/*virtual*/ void HTTPText::writeReset()
+{
+ m_pos = 0;
+}
+
+/*virtual*/ int HTTPText::write(const char* buf, size_t len)
+{
+ size_t writeLen = MIN(len, m_size - 1 - m_pos);
+ memcpy(m_str + m_pos, buf, writeLen);
+ m_pos += writeLen;
+ m_str[m_pos] = '\0';
+ return OK;
+}
+
+/*virtual*/ void HTTPText::setDataType(const char* type) //Internet media type from Content-Type header
+{
+
+}
+
+/*virtual*/ void HTTPText::setIsChunked(bool chunked) //From Transfer-Encoding header
+{
+
+}
+
+/*virtual*/ void HTTPText::setDataLen(size_t len) //From Content-Length header, or if the transfer is chunked, next chunk length
+{
+
+}
+
+
+
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPText.h b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPText.h
new file mode 100644
index 0000000000..cb76c6fdac
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/HTTPClient/data/HTTPText.h
@@ -0,0 +1,72 @@
+/* HTTPText.h */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#ifndef HTTPTEXT_H_
+#define HTTPTEXT_H_
+
+#include "../IHTTPData.h"
+
+/** A data endpoint to store text
+*/
+class HTTPText : public IHTTPDataIn, public IHTTPDataOut
+{
+public:
+ /** Create an HTTPText instance for output
+ * @param str String to be transmitted
+ */
+ HTTPText(char* str);
+
+ /** Create an HTTPText instance for input
+ * @param str Buffer to store the incoming string
+ * @param size Size of the buffer
+ */
+ HTTPText(char* str, size_t size);
+
+protected:
+ //IHTTPDataIn
+ virtual void readReset();
+
+ virtual int read(char* buf, size_t len, size_t* pReadLen);
+
+ virtual int getDataType(char* type, size_t maxTypeLen); //Internet media type for Content-Type header
+
+ virtual bool getIsChunked(); //For Transfer-Encoding header
+
+ virtual size_t getDataLen(); //For Content-Length header
+
+ //IHTTPDataOut
+ virtual void writeReset();
+
+ virtual int write(const char* buf, size_t len);
+
+ virtual void setDataType(const char* type); //Internet media type from Content-Type header
+
+ virtual void setIsChunked(bool chunked); //From Transfer-Encoding header
+
+ virtual void setDataLen(size_t len); //From Content-Length header, or if the transfer is chunked, next chunk length
+
+private:
+ char* m_str;
+ size_t m_size;
+
+ size_t m_pos;
+};
+
+#endif /* HTTPTEXT_H_ */
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/httptest.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/httptest.cpp
new file mode 100644
index 0000000000..e3db1c826a
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/httptest.cpp
@@ -0,0 +1,58 @@
+#include "mbed.h"
+#include "CellularModem.h"
+#include "HTTPClient.h"
+#include "httptest.h"
+
+int httptest(CellularModem& modem, const char* apn, const char* username, const char* password)
+{
+ printf("Connecting...\n");
+
+ HTTPClient http;
+ char str[512];
+
+ modem.power(true);
+ Thread::wait(1000);
+ int ret = modem.connect(apn, username, password);
+ if(ret)
+ {
+ printf("Could not connect\n");
+ return false;
+ }
+
+ //GET data
+ printf("Trying to fetch page...\n");
+ ret = http.get("http://mbed.org/media/uploads/donatien/hello.txt", str, 128);
+ if (!ret)
+ {
+ printf("Page fetched successfully - read %d characters\n", strlen(str));
+ printf("Result: %s\n", str);
+ }
+ else
+ {
+ printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
+ modem.disconnect();
+ return false;
+ }
+
+ //POST data
+ HTTPMap map;
+ HTTPText text(str, 512);
+ map.put("Hello", "World");
+ map.put("test", "1234");
+ printf("Trying to post data...\n");
+ ret = http.post("http://httpbin.org/post", map, &text);
+ if (!ret)
+ {
+ printf("Executed POST successfully - read %d characters\n", strlen(str));
+ printf("Result: %s\n", str);
+ }
+ else
+ {
+ printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
+ modem.disconnect();
+ return false;
+ }
+
+ modem.disconnect();
+ return true;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/httptest.h b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/httptest.h
new file mode 100644
index 0000000000..affd6d23be
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/common/httptest.h
@@ -0,0 +1,9 @@
+#ifndef HTTPTEST_H_
+#define HTTPTEST_H_
+
+#include "CellularModem.h"
+
+int httptest(CellularModem& modem, const char* apn = NULL, const char* username = NULL, const char* password= NULL);
+
+#endif
+
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/ubloxusb/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/ubloxusb/main.cpp
new file mode 100644
index 0000000000..3454114579
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/http/ubloxusb/main.cpp
@@ -0,0 +1,35 @@
+#include "UbloxUSBGSMModem.h"
+#include "UbloxUSBCDMAModem.h"
+#include "httptest.h"
+
+#if !defined(MODEM_UBLOX_GSM) && !defined(MODEM_UBLOX_CDMA)
+#warning No modem defined, using GSM by default
+#define MODEM_UBLOX_GSM
+#endif
+
+#ifndef MODEM_APN
+#warning APN not specified, using "internet"
+#define MODEM_APN "internet"
+#endif
+
+#ifndef MODEM_USERNAME
+#warning username not specified
+#define MODEM_USERNAME NULL
+#endif
+
+#ifndef MODEM_PASSWORD
+#warning password not specified
+#define MODEM_PASSWORD NULL
+#endif
+
+int main()
+{
+#ifdef MODEM_UBLOX_GSM
+ UbloxUSBGSMModem modem;
+#else
+ UbloxUSBCDMAModem modem(p18, true, 1);
+#endif
+ httptest(modem, MODEM_APN, MODEM_USERNAME, MODEM_PASSWORD);
+ while (true);
+}
+
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/common/smstest.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/common/smstest.cpp
new file mode 100644
index 0000000000..5a6393590f
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/common/smstest.cpp
@@ -0,0 +1,41 @@
+#include "CellularModem.h"
+#include "smstest.h"
+
+void smstest(CellularModem& modem)
+{
+ modem.power(true);
+ Thread::wait(1000);
+
+#ifdef DESTINATION_NUMBER
+ modem.sendSM(DESINATION_NUMBER, "Hello from mbed:)");
+#endif
+
+ while(true)
+ {
+ char num[17];
+ char msg[64];
+ size_t count;
+ int ret = modem.getSMCount(&count);
+ if(ret)
+ {
+ printf("getSMCount returned %d\n", ret);
+ Thread::wait(3000);
+ continue;
+ }
+ if( count > 0)
+ {
+ printf("%d SMS to read\n", count);
+ ret = modem.getSM(num, msg, 64);
+ if(ret)
+ {
+ printf("getSM returned %d\n", ret);
+ Thread::wait(3000);
+ continue;
+ }
+
+ printf("%s : %s\n", num, msg);
+ }
+ Thread::wait(3000);
+ }
+}
+
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/common/smstest.h b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/common/smstest.h
new file mode 100644
index 0000000000..0d1ea80fc7
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/common/smstest.h
@@ -0,0 +1,9 @@
+#ifndef SMSTEST_H_
+#define SMSTEST_H_
+
+#include "CellularModem.h"
+
+void smstest(CellularModem&);
+
+#endif
+
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/ubloxusb/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/ubloxusb/main.cpp
new file mode 100644
index 0000000000..a493be7bfe
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/cellular/sms/ubloxusb/main.cpp
@@ -0,0 +1,21 @@
+#include "UbloxUSBGSMModem.h"
+#include "UbloxUSBCDMAModem.h"
+#include "smstest.h"
+
+#if !defined(MODEM_UBLOX_GSM) && !defined(MODEM_UBLOX_CDMA)
+#warning No modem defined, using GSM by default
+#define MODEM_UBLOX_GSM
+#endif
+
+int main()
+{
+#ifdef MODEM_UBLOX_GSM
+ UbloxUSBGSMModem modem;
+#else
+ UbloxUSBCDMAModem modem(p18, true, 1);
+#endif
+
+ smstest(modem);
+ while (true);
+}
+
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_client/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_client/main.cpp
new file mode 100644
index 0000000000..17193f08d0
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_client/main.cpp
@@ -0,0 +1,59 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "EthernetInterface.h"
+
+struct s_ip_address {
+ int ip_1;
+ int ip_2;
+ int ip_3;
+ int ip_4;
+};
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(tcpecho_client_auto);
+ MBED_HOSTTEST_DESCRIPTION(TCP echo client);
+ MBED_HOSTTEST_START("NET_4");
+
+ char buffer[256] = {0};
+ char out_buffer[] = "Hello World\n";
+ char out_success[] = "{{success}}\n{{end}}\n";
+ char out_failure[] = "{{failure}}\n{{end}}\n";
+ s_ip_address ip_addr = {0, 0, 0, 0};
+ int port = 0;
+
+ printf("TCPCllient waiting for server IP and port..." NL);
+ scanf("%d.%d.%d.%d:%d", &ip_addr.ip_1, &ip_addr.ip_2, &ip_addr.ip_3, &ip_addr.ip_4, &port);
+ printf("Address received:%d.%d.%d.%d:%d" NL, ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4, port);
+
+ EthernetInterface eth;
+ eth.init(); //Use DHCP
+ eth.connect();
+
+ printf("TCPClient IP Address is %s" NL, eth.getIPAddress());
+ sprintf(buffer, "%d.%d.%d.%d", ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4);
+
+ TCPSocketConnection socket;
+ while (socket.connect(buffer, port) < 0) {
+ printf("TCPCllient unable to connect to %s:%d" NL, buffer, port);
+ wait(1);
+ }
+
+ socket.send_all(out_buffer, sizeof(out_buffer) - 1);
+
+ int n = socket.receive(buffer, sizeof(buffer));
+ if (n > 0)
+ {
+ buffer[n] = '\0';
+ printf("%s", buffer);
+ if (strncmp(out_buffer, buffer, sizeof(out_buffer) - 1) == 0) {
+ socket.send_all(out_success, sizeof(out_success) - 1);
+ }
+ }
+
+ socket.send_all(out_failure, sizeof(out_failure) - 1);
+
+ socket.close();
+ eth.disconnect();
+ return 0;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_client_loop/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_client_loop/main.cpp
new file mode 100644
index 0000000000..6c797e7443
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_client_loop/main.cpp
@@ -0,0 +1,78 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "EthernetInterface.h"
+#include <algorithm>
+
+namespace {
+ const int BUFFER_SIZE = 64;
+ const int MAX_ECHO_LOOPS = 1000;
+ const char ASCII_MAX = '~' - ' ';
+
+ struct s_ip_address
+ {
+ int ip_1;
+ int ip_2;
+ int ip_3;
+ int ip_4;
+ };
+}
+
+char char_rand() {
+ return (rand() % ASCII_MAX) + ' ';
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(tcpecho_client_auto);
+ MBED_HOSTTEST_DESCRIPTION(TCP client echo loop);
+ MBED_HOSTTEST_START("NET_13");
+
+ char buffer[BUFFER_SIZE] = {0};
+ char out_buffer[BUFFER_SIZE] = {0};
+ s_ip_address ip_addr = {0, 0, 0, 0};
+ int port = 0;
+
+ printf("MBED: TCPCllient waiting for server IP and port...\r\n");
+ scanf("%d.%d.%d.%d:%d", &ip_addr.ip_1, &ip_addr.ip_2, &ip_addr.ip_3, &ip_addr.ip_4, &port);
+ printf("MBED: Address received: %d.%d.%d.%d:%d\r\n", ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4, port);
+
+ EthernetInterface eth;
+ eth.init(); //Use DHCP
+ eth.connect();
+
+ printf("MBED: TCPClient IP Address is %s\r\n", eth.getIPAddress());
+ sprintf(buffer, "%d.%d.%d.%d", ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4);
+
+ TCPSocketConnection socket;
+ while (socket.connect(buffer, port) < 0) {
+ printf("MBED: TCPCllient unable to connect to %s:%d\r\n", buffer, port);
+ wait(1);
+ }
+
+ // Test loop for multiple client connections
+ bool result = true;
+ int count_error = 0;
+ for (int i = 0; i < MAX_ECHO_LOOPS; i++) {
+ std::generate(out_buffer, out_buffer + BUFFER_SIZE, char_rand);
+ socket.send_all(out_buffer, BUFFER_SIZE);
+
+ int n = socket.receive(buffer, BUFFER_SIZE);
+ if (n > 0)
+ {
+ bool echoed = memcmp(out_buffer, buffer, BUFFER_SIZE) == 0;
+ result = result && echoed;
+ if (echoed == false) {
+ count_error++; // Count error messages
+ }
+ }
+ }
+
+ printf("MBED: Loop messages passed: %d / %d\r\n", MAX_ECHO_LOOPS - count_error, MAX_ECHO_LOOPS);
+
+ if (notify_completion_str(result, buffer)) {
+ socket.send_all(buffer, strlen(buffer));
+ }
+ socket.close();
+ eth.disconnect();
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_server/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_server/main.cpp
new file mode 100644
index 0000000000..421fb0dbec
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/echo/tcp_server/main.cpp
@@ -0,0 +1,47 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "EthernetInterface.h"
+
+namespace {
+ const int ECHO_SERVER_PORT = 7;
+ const int BUFFER_SIZE = 64;
+}
+
+int main (void) {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(tcpecho_server_auto);
+ MBED_HOSTTEST_DESCRIPTION(TCP echo server);
+ MBED_HOSTTEST_START("NET_3");
+
+ char buffer[BUFFER_SIZE] = {0};
+ EthernetInterface eth;
+ eth.init(); //Use DHCP
+ eth.connect();
+ printf("MBED: Server IP Address is %s:%d" NL, eth.getIPAddress(), ECHO_SERVER_PORT);
+
+ TCPSocketServer server;
+ server.bind(ECHO_SERVER_PORT);
+ server.listen();
+
+ while (true) {
+ printf("MBED: Wait for new connection..." NL);
+ TCPSocketConnection client;
+ server.accept(client);
+ client.set_blocking(false, 1500); // Timeout after (1.5)s
+ printf("MBED: Connection from: %s" NL, client.get_address());
+
+ while (true) {
+ const int n = client.receive(buffer, sizeof(buffer));
+ if (n <= 0) {
+ break;
+ }
+ const int buffer_string_end_index = n >= BUFFER_SIZE ? BUFFER_SIZE-1 : n;
+ buffer[buffer_string_end_index] = '\0';
+ client.send_all(buffer, n);
+ if (n <= 0) {
+ break;
+ }
+ }
+ client.close();
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_client/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_client/main.cpp
new file mode 100644
index 0000000000..97f6050508
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_client/main.cpp
@@ -0,0 +1,82 @@
+#include "mbed.h"
+#include "rtos.h"
+#include "test_env.h"
+#include "EthernetInterface.h"
+#include <algorithm>
+
+#define CHECK(RC, STEP) if (RC < 0) error(STEP": %d\r\n", RC)
+
+namespace {
+ const int BUFFER_SIZE = 64;
+ const int MAX_ECHO_LOOPS = 100;
+ const char ASCII_MAX = '~' - ' ';
+
+ struct s_ip_address {
+ int ip_1;
+ int ip_2;
+ int ip_3;
+ int ip_4;
+ };
+}
+
+char char_rand() {
+ return (rand() % ASCII_MAX) + ' ';
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(udpecho_client_auto);
+ MBED_HOSTTEST_DESCRIPTION(UDP echo client);
+ MBED_HOSTTEST_START("NET_6");
+
+ char buffer[BUFFER_SIZE] = {0};
+ char out_buffer[BUFFER_SIZE] = {0};
+ s_ip_address ip_addr = {0, 0, 0, 0};
+ int port = 0;
+ bool result = true;
+
+ printf("MBED: UDPCllient waiting for server IP and port...\r\n");
+ scanf("%d.%d.%d.%d:%d", &ip_addr.ip_1, &ip_addr.ip_2, &ip_addr.ip_3, &ip_addr.ip_4, &port);
+ printf("MBED: Address received: %d.%d.%d.%d:%d\r\n", ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4, port);
+
+ EthernetInterface eth;
+ int rc = eth.init(); //Use DHCP
+ CHECK(rc, "eth init");
+
+ rc = eth.connect();
+ CHECK(rc, "connect");
+ printf("IP: %s\n", eth.getIPAddress());
+
+ UDPSocket socket;
+ rc = socket.init();
+ CHECK(rc, "socket init");
+
+ printf("MBED: UDPClient IP Address is %s\r\n", eth.getIPAddress());
+ sprintf(buffer, "%d.%d.%d.%d", ip_addr.ip_1, ip_addr.ip_2, ip_addr.ip_3, ip_addr.ip_4);
+
+ Endpoint echo_server;
+ rc = echo_server.set_address(buffer, port);
+ CHECK(rc, "set_address");
+
+ for (int i =0; i < MAX_ECHO_LOOPS; i++) {
+ std::generate(out_buffer, out_buffer + BUFFER_SIZE, char_rand);
+ rc = socket.sendTo(echo_server, out_buffer, sizeof(out_buffer));
+ CHECK(rc, "sendTo");
+
+ const int n = socket.receiveFrom(echo_server, buffer, sizeof(buffer));
+ CHECK(n, "receiveFrom");
+
+ if (memcmp(buffer, out_buffer, BUFFER_SIZE) != 0) {
+ result = false;
+ break;
+ }
+ }
+
+ if (notify_completion_str(result, buffer)) {
+ socket.sendTo(echo_server, buffer, strlen(buffer));
+ }
+
+ socket.close();
+ eth.disconnect();
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_link_layer/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_link_layer/main.cpp
new file mode 100644
index 0000000000..3e40499dfa
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_link_layer/main.cpp
@@ -0,0 +1,151 @@
+#include "mbed.h"
+#include "rtos.h"
+#include "EthernetInterface.h"
+#include <list>
+#include <string>
+
+/**
+* How to use:
+* make.py -m LPC1768 -t ARM -d E:\ -n NET_14
+* udp_link_layer_auto.py -p COM20 -d E:\ -t 10
+*/
+
+// Evil globals
+namespace {
+ // IP and port used to store HOST address info
+ char host_address[32] = {0};
+ volatile int host_port = 0;
+
+ const int ECHO_SERVER_PORT = 7;
+ const int BUFFER_SIZE = 64;
+
+ // Forwarding packet queue
+ std::list<std::string> datagram_queue;
+
+ // Statistics (mbed)
+ volatile int received_packets = 0;
+ volatile int forwarded_packets = 0;
+ volatile int max_queue_len = 0;
+
+ Mutex cli_serv_mutex;
+ // cli_serv_mutex.lock(); // LOCK
+ // cli_serv_mutex.unlock(); // LOCK
+}
+
+void udp_server_task(void const *argument)
+{
+ DigitalOut indicator(LED1);
+ UDPSocket server;
+
+ server.bind(ECHO_SERVER_PORT);
+ // printf("[udp_server_task] Start\r\n");
+
+ Endpoint client;
+ char buffer[BUFFER_SIZE] = { 0 };
+ while (true) {
+ //printf("[udp_server_task] Wait for packet...\r\n");
+ int n = server.receiveFrom(client, buffer, sizeof(buffer));
+ if (n > 0) {
+ //printf("[udp_server_task] Received packet from: %s\r\n", client.get_address());
+ const int buffer_string_end_index = n >= BUFFER_SIZE ? BUFFER_SIZE - 1 : n;
+ buffer[buffer_string_end_index] = '\0';
+ //printf("[udp_server_task] Server received: %s\r\n", buffer);
+ if (host_port == 0) {
+ strcpy(host_address, client.get_address());
+ host_port = ECHO_SERVER_PORT + 1;
+ //printf("[udp_server_task] Set host address and port: %s:%d\r\n", host_address, host_port);
+ }
+ // Dispatch data to client for sending to test HOST
+ cli_serv_mutex.lock(); // LOCK
+ // Push to datagram queue
+ datagram_queue.push_front(std::string(buffer));
+ max_queue_len = datagram_queue.size() > max_queue_len ? datagram_queue.size() : max_queue_len;
+ received_packets++;
+ cli_serv_mutex.unlock(); // LOCK
+ indicator = !indicator;
+ }
+ }
+}
+
+void udp_client_task(void const *argument)
+{
+ while (host_port == 0) {
+ // Waiting for HOST port notification
+ }
+
+ DigitalOut indicator(LED2);
+ UDPSocket socket;
+ socket.init();
+
+ Endpoint echo_server;
+ echo_server.set_address(host_address, host_port);
+ //printf("[udp_client_task] Start: %s:%d\r\n", host_address, host_port);
+
+ while (1) {
+ std::string datagram;
+ bool sent_datagram = false;
+ cli_serv_mutex.lock(); // LOCK
+ if (datagram_queue.size() > 0) {
+ // POP from datagram queue
+ datagram = datagram_queue.back();
+ datagram_queue.pop_back();
+ sent_datagram = true;
+ }
+ cli_serv_mutex.unlock(); // LOCK
+ if (sent_datagram) {
+ //printf("[udp_client_task] Forwarded datagram: %s\r\n", datagram.c_str());
+ socket.sendTo(echo_server, (char *)datagram.c_str(), datagram.length());
+ forwarded_packets++;
+ indicator = !indicator;
+ }
+ }
+}
+
+int main(void)
+{
+ EthernetInterface eth;
+
+ eth.init(); //Use DHCP
+ eth.connect();
+ printf("MBED: Server IP Address is %s:%d\r\n", eth.getIPAddress(), ECHO_SERVER_PORT);
+
+ Thread UdpServerTask(udp_server_task, NULL, osPriorityNormal, DEFAULT_STACK_SIZE * 2.25);
+ Thread UdpClientTask(udp_client_task, NULL, osPriorityNormal, DEFAULT_STACK_SIZE * 2.25);
+
+ // Control TCP server to get MBED statistics
+ {
+ char buffer[BUFFER_SIZE] = {0};
+ const int TELNET_SERVER_PORT = 23;
+ const int BUFFER_SIZE = 256;
+ TCPSocketServer server;
+ server.bind(TELNET_SERVER_PORT);
+ server.listen();
+
+ while (true) {
+ printf("MBED: Wait for new connection...\r\n");
+ TCPSocketConnection client;
+ server.accept(client);
+ client.set_blocking(false, 1500); // Timeout after (1.5)s
+ printf("MBED: Connection from: %s\r\n", client.get_address());
+
+ while (true) {
+ int n = client.receive(buffer, sizeof(buffer));
+ //if (n <= 0) break;
+ if (n > 0) {
+ // printf("Recv %d chars\r\n", n);
+ const int buffer_string_end_index = n >= BUFFER_SIZE ? BUFFER_SIZE - 1 : n;
+ buffer[buffer_string_end_index] = '\0';
+ // client.send_all(buffer, strlen(buffer));
+ if (strncmp(buffer, "stat", 4) == 0) {
+ sprintf(buffer, "received_packets %d\nforwarded_packets %d\nmax_queue_len %d",
+ received_packets, forwarded_packets, max_queue_len);
+ client.send_all(buffer, strlen(buffer));
+ // printf("%s", buffer);
+ }
+ }
+ //if (n <= 0) break;
+ }
+ client.close();
+ }
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_server/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_server/main.cpp
new file mode 100644
index 0000000000..ea90ff7d4a
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/echo/udp_server/main.cpp
@@ -0,0 +1,37 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "EthernetInterface.h"
+
+namespace {
+ const int ECHO_SERVER_PORT = 7;
+ const int BUFFER_SIZE = 64;
+}
+
+int main (void) {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(udpecho_server_auto);
+ MBED_HOSTTEST_DESCRIPTION(UDP echo server);
+ MBED_HOSTTEST_START("NET_5");
+
+ EthernetInterface eth;
+ eth.init(); //Use DHCP
+ eth.connect();
+ printf("MBED: Server IP Address is %s:%d\r\n", eth.getIPAddress(), ECHO_SERVER_PORT);
+
+ UDPSocket server;
+ server.bind(ECHO_SERVER_PORT);
+
+ Endpoint client;
+ char buffer[BUFFER_SIZE] = {0};
+ printf("MBED: Waiting for packet...\r\n");
+ while (true) {
+ int n = server.receiveFrom(client, buffer, sizeof(buffer));
+ if (n > 0) {
+ //printf("Received packet from: %s\n", client.get_address());
+ const int buffer_string_end_index = n >= BUFFER_SIZE ? BUFFER_SIZE-1 : n;
+ buffer[buffer_string_end_index] = '\0';
+ //printf("Server received: %s\n", buffer);
+ server.sendTo(client, buffer, n);
+ }
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/broadcast_receive/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/broadcast_receive/main.cpp
new file mode 100644
index 0000000000..9cee345519
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/broadcast_receive/main.cpp
@@ -0,0 +1,23 @@
+#include "mbed.h"
+#include "EthernetInterface.h"
+
+const int BROADCAST_PORT = 58083;
+
+int main() {
+ EthernetInterface eth;
+ eth.init(); //Use DHCP
+ eth.connect();
+
+ UDPSocket socket;
+ socket.bind(BROADCAST_PORT);
+ socket.set_broadcasting();
+
+ Endpoint broadcaster;
+ char buffer[256];
+ while (true) {
+ printf("\nWait for packet...\n");
+ int n = socket.receiveFrom(broadcaster, buffer, sizeof(buffer));
+ buffer[n] = '\0';
+ printf("Packet from \"%s\": %s\n", broadcaster.get_address(), buffer);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/broadcast_send/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/broadcast_send/main.cpp
new file mode 100644
index 0000000000..4632c63ff0
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/broadcast_send/main.cpp
@@ -0,0 +1,25 @@
+#include "mbed.h"
+#include "EthernetInterface.h"
+
+const int BROADCAST_PORT = 58083;
+
+int main() {
+ EthernetInterface eth;
+ eth.init(); //Use DHCP
+ eth.connect();
+
+ UDPSocket sock;
+ sock.init();
+ sock.set_broadcasting();
+
+ Endpoint broadcast;
+ broadcast.set_address("255.255.255.255", BROADCAST_PORT);
+
+ char out_buffer[] = "very important data";
+
+ while (true) {
+ printf("Broadcasting...\n");
+ sock.sendTo(broadcast, out_buffer, sizeof(out_buffer));
+ Thread::wait(1000);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/multicast_receive/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/multicast_receive/main.cpp
new file mode 100644
index 0000000000..0398bdd1fd
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/multicast_receive/main.cpp
@@ -0,0 +1,27 @@
+#include "mbed.h"
+#include "EthernetInterface.h"
+
+const char* MCAST_GRP = "224.1.1.1";
+const int MCAST_PORT = 5007;
+
+int main() {
+ EthernetInterface eth;
+ eth.init(); //Use DHCP
+ eth.connect();
+
+ UDPSocket server;
+ server.bind(MCAST_PORT);
+ if (server.join_multicast_group(MCAST_GRP) != 0) {
+ printf("Error joining the multicast group\n");
+ while (true) {}
+ }
+
+ Endpoint client;
+ char buffer[256];
+ while (true) {
+ printf("\nWait for packet...\n");
+ int n = server.receiveFrom(client, buffer, sizeof(buffer));
+
+ printf("Packet from \"%s\": %s\n", client.get_address(), buffer);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/multicast_send/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/multicast_send/main.cpp
new file mode 100644
index 0000000000..df41c6d80a
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/multicast_send/main.cpp
@@ -0,0 +1,24 @@
+#include "mbed.h"
+#include "EthernetInterface.h"
+
+const char* MCAST_GRP = "224.1.1.1";
+const int MCAST_PORT = 5007;
+
+int main() {
+ EthernetInterface eth;
+ eth.init(); //Use DHCP
+ eth.connect();
+
+ UDPSocket sock;
+ sock.init();
+
+ Endpoint multicast_group;
+ multicast_group.set_address(MCAST_GRP, MCAST_PORT);
+
+ char out_buffer[] = "very important data";
+ while (true) {
+ printf("Multicast to group: %s\n", MCAST_GRP);
+ sock.sendTo(multicast_group, out_buffer, sizeof(out_buffer));
+ Thread::wait(1000);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/tcpclient/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/tcpclient/main.cpp
new file mode 100644
index 0000000000..303f547aa1
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/tcpclient/main.cpp
@@ -0,0 +1,85 @@
+#include <algorithm>
+#include "mbed.h"
+#include "EthernetInterface.h"
+#include "test_env.h"
+
+namespace {
+ // Test connection information
+ const char *HTTP_SERVER_NAME = "developer.mbed.org";
+ const char *HTTP_SERVER_FILE_PATH = "/media/uploads/mbed_official/hello.txt";
+ const int HTTP_SERVER_PORT = 80;
+ const int RECV_BUFFER_SIZE = 512;
+
+ // Test related data
+ const char *HTTP_OK_STR = "200 OK";
+ const char *HTTP_HELLO_STR = "Hello world!";
+
+ // Test buffers
+ char buffer[RECV_BUFFER_SIZE] = {0};
+}
+
+bool find_substring(const char *first, const char *last, const char *s_first, const char *s_last) {
+ const char *f = std::search(first, last, s_first, s_last);
+ return (f != last);
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(TCP client hello world);
+ MBED_HOSTTEST_START("NET_1");
+
+ bool result = false;
+ EthernetInterface eth;
+ eth.init(); //Use DHCP
+ eth.connect();
+ printf("TCP client IP Address is %s\r\n", eth.getIPAddress());
+
+ TCPSocketConnection sock;
+ if (sock.connect(HTTP_SERVER_NAME, HTTP_SERVER_PORT) == 0) {
+ printf("HTTP: Connected to %s:%d\r\n", HTTP_SERVER_NAME, HTTP_SERVER_PORT);
+
+ // We are constructing GET command like this:
+ // GET http://developer.mbed.org/media/uploads/mbed_official/hello.txt HTTP/1.0\n\n
+ strcpy(buffer, "GET http://");
+ strcat(buffer, HTTP_SERVER_NAME);
+ strcat(buffer, HTTP_SERVER_FILE_PATH);
+ strcat(buffer, " HTTP/1.0\n\n");
+ // Send GET command
+ sock.send_all(buffer, strlen(buffer));
+
+ // Server will respond with HTTP GET's success code
+ bool found_200_ok = false;
+ {
+ const int ret = sock.receive(buffer, sizeof(buffer) - 1);
+ buffer[ret] = '\0';
+ // Find 200 OK HTTP status in reply
+ found_200_ok = find_substring(buffer, buffer + ret, HTTP_OK_STR, HTTP_OK_STR + strlen(HTTP_OK_STR));
+ printf("HTTP: Received %d chars from server\r\n", ret);
+ printf("HTTP: Received 200 OK status ... %s\r\n", found_200_ok ? "[OK]" : "[FAIL]");
+ printf("HTTP: Received massage:\r\n\r\n");
+ printf("%s", buffer);
+ }
+
+ // Server will respond with requested file content
+ bool found_hello = false;
+ {
+ const int ret = sock.receive(buffer, sizeof(buffer) - 1);
+ buffer[ret] = '\0';
+ // Find Hello World! in reply
+ found_hello = find_substring(buffer, buffer + ret, HTTP_HELLO_STR, HTTP_HELLO_STR + strlen(HTTP_HELLO_STR));
+ printf("HTTP: Received %d chars from server\r\n", ret);
+ printf("HTTP: Received '%s' status ... %s\r\n", HTTP_HELLO_STR, found_hello ? "[OK]" : "[FAIL]");
+ printf("HTTP: Received massage:\r\n\r\n");
+ printf("%s", buffer);
+ }
+
+ if (found_200_ok && found_hello) {
+ result = true;
+ }
+ }
+
+ sock.close();
+ eth.disconnect();
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/udpclient/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/udpclient/main.cpp
new file mode 100644
index 0000000000..59dad6db6f
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/helloworld/udpclient/main.cpp
@@ -0,0 +1,56 @@
+#include "mbed.h"
+#include "EthernetInterface.h"
+#include "test_env.h"
+
+namespace {
+ const char *HTTP_SERVER_NAME = "utcnist.colorado.edu";
+ const int HTTP_SERVER_PORT = 37;
+ const float YEARS_TO_PASS = 114.0;
+}
+
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(NIST Internet Time Service);
+ MBED_HOSTTEST_START("NET_2");
+
+ bool result = false;
+ EthernetInterface eth;
+ eth.init(); //Use DHCP
+ eth.connect();
+ printf("UDP client IP Address is %s\n", eth.getIPAddress());
+
+ UDPSocket sock;
+ sock.init();
+
+ Endpoint nist;
+ nist.set_address(HTTP_SERVER_NAME, HTTP_SERVER_PORT);
+
+ char out_buffer[] = "plop"; // Does not matter
+ sock.sendTo(nist, out_buffer, sizeof(out_buffer));
+
+ union {
+ char in_buffer_tab[4];
+ unsigned int in_buffer_uint;
+ };
+
+ const int n = sock.receiveFrom(nist, in_buffer_tab, sizeof(in_buffer_tab));
+ if (n > 0) {
+ result = true;
+ const unsigned int timeRes = ntohl(in_buffer_uint);
+ const float years = timeRes / 60.0 / 60.0 / 24.0 / 365.0;
+ const float days = timeRes / 24.0 / 60.0 / 60.0;
+ printf("UDP: Received %d bytes from server %s on port %d\r\n", n, nist.get_address(), nist.get_port());
+ printf("UDP: %u seconds since 01/01/1900 00:00 GMT ... %s\r\n", timeRes, timeRes > 0 ? "[OK]" : "[FAIL]");
+ printf("UDP: %.2f days since 01/01/1900 00:00 GMT ... %s\r\n", days, timeRes > 0 ? "[OK]" : "[FAIL]");
+ printf("UDP: %.2f years since 01/01/1900 00:00 GMT ... %s\r\n", years, timeRes > YEARS_TO_PASS ? "[OK]" : "[FAIL]");
+
+ if (years < YEARS_TO_PASS) {
+ result = false;
+ }
+ }
+ sock.close();
+ eth.disconnect();
+ MBED_HOSTTEST_RESULT(result);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/HTTPClient.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/HTTPClient.cpp
new file mode 100644
index 0000000000..263c928949
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/HTTPClient.cpp
@@ -0,0 +1,621 @@
+/* HTTPClient.cpp */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+//Debug is disabled by default
+#if 1
+//Enable debug
+#include <cstdio>
+//#define DBG(x, ...) std::printf("[HTTPClient : DBG]"x"\r\n", ##__VA_ARGS__);
+#define DBG(x, ...)
+#define WARN(x, ...) std::printf("[HTTPClient : WARN]"x"\r\n", ##__VA_ARGS__);
+#define ERR(x, ...) std::printf("[HTTPClient : ERR]"x"\r\n", ##__VA_ARGS__);
+
+#else
+//Disable debug
+#define DBG(x, ...)
+#define WARN(x, ...)
+#define ERR(x, ...)
+
+#endif
+
+#define HTTP_PORT 80
+
+#define OK 0
+
+#define MIN(x,y) (((x)<(y))?(x):(y))
+#define MAX(x,y) (((x)>(y))?(x):(y))
+
+#define CHUNK_SIZE 256
+
+#include <cstring>
+
+#include "HTTPClient.h"
+
+HTTPClient::HTTPClient() :
+m_sock(), m_basicAuthUser(NULL), m_basicAuthPassword(NULL), m_httpResponseCode(0)
+{
+
+}
+
+HTTPClient::~HTTPClient()
+{
+
+}
+
+#if 0
+void HTTPClient::basicAuth(const char* user, const char* password) //Basic Authentification
+{
+ m_basicAuthUser = user;
+ m_basicAuthPassword = password;
+}
+#endif
+
+HTTPResult HTTPClient::get(const char* url, IHTTPDataIn* pDataIn, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking
+{
+ return connect(url, HTTP_GET, NULL, pDataIn, timeout);
+}
+
+HTTPResult HTTPClient::get(const char* url, char* result, size_t maxResultLen, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking
+{
+ HTTPText str(result, maxResultLen);
+ return get(url, &str, timeout);
+}
+
+HTTPResult HTTPClient::post(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout /*= HTTP_CLIENT_DEFAULT_TIMEOUT*/) //Blocking
+{
+ return connect(url, HTTP_POST, (IHTTPDataOut*)&dataOut, pDataIn, timeout);
+}
+
+int HTTPClient::getHTTPResponseCode()
+{
+ return m_httpResponseCode;
+}
+
+#define CHECK_CONN_ERR(ret) \
+ do{ \
+ if(ret) { \
+ m_sock.close(); \
+ ERR("Connection error (%d)", ret); \
+ return HTTP_CONN; \
+ } \
+ } while(0)
+
+#define PRTCL_ERR() \
+ do{ \
+ m_sock.close(); \
+ ERR("Protocol error"); \
+ return HTTP_PRTCL; \
+ } while(0)
+
+HTTPResult HTTPClient::connect(const char* url, HTTP_METH method, IHTTPDataOut* pDataOut, IHTTPDataIn* pDataIn, int timeout) //Execute request
+{
+ m_httpResponseCode = 0; //Invalidate code
+ m_timeout = timeout;
+
+ char scheme[8];
+ uint16_t port;
+ char host[32];
+ char path[64];
+ //First we need to parse the url (http[s]://host[:port][/[path]]) -- HTTPS not supported (yet?)
+ HTTPResult res = parseURL(url, scheme, sizeof(scheme), host, sizeof(host), &port, path, sizeof(path));
+ if(res != HTTP_OK)
+ {
+ ERR("parseURL returned %d", res);
+ return res;
+ }
+
+ if(port == 0) //TODO do handle HTTPS->443
+ {
+ port = 80;
+ }
+
+ DBG("Scheme: %s", scheme);
+ DBG("Host: %s", host);
+ DBG("Port: %d", port);
+ DBG("Path: %s", path);
+
+ //Connect
+ DBG("Connecting socket to server");
+ int ret = m_sock.connect(host, port);
+ if (ret < 0)
+ {
+ m_sock.close();
+ ERR("Could not connect");
+ return HTTP_CONN;
+ }
+
+ //Send request
+ DBG("Sending request");
+ char buf[CHUNK_SIZE];
+ const char* meth = (method==HTTP_GET)?"GET":(method==HTTP_POST)?"POST":"";
+ snprintf(buf, sizeof(buf), "%s %s HTTP/1.1\r\nHost: %s\r\n", meth, path, host); //Write request
+ ret = send(buf);
+ if(ret)
+ {
+ m_sock.close();
+ ERR("Could not write request");
+ return HTTP_CONN;
+ }
+
+ //Send all headers
+
+ //Send default headers
+ DBG("Sending headers");
+ if( (method == HTTP_POST) && (pDataOut != NULL) )
+ {
+ if( pDataOut->getIsChunked() )
+ {
+ ret = send("Transfer-Encoding: chunked\r\n");
+ CHECK_CONN_ERR(ret);
+ }
+ else
+ {
+ snprintf(buf, sizeof(buf), "Content-Length: %d\r\n", pDataOut->getDataLen());
+ ret = send(buf);
+ CHECK_CONN_ERR(ret);
+ }
+ char type[48];
+ if( pDataOut->getDataType(type, 48) == HTTP_OK )
+ {
+ snprintf(buf, sizeof(buf), "Content-Type: %s\r\n", type);
+ ret = send(buf);
+ CHECK_CONN_ERR(ret);
+ }
+ }
+
+ //Close headers
+ DBG("Headers sent");
+ ret = send("\r\n");
+ CHECK_CONN_ERR(ret);
+
+ size_t trfLen;
+
+ //Send data (if POST)
+ if( (method == HTTP_POST) && (pDataOut != NULL) )
+ {
+ DBG("Sending data");
+ while(true)
+ {
+ size_t writtenLen = 0;
+ pDataOut->read(buf, CHUNK_SIZE, &trfLen);
+ if( pDataOut->getIsChunked() )
+ {
+ //Write chunk header
+ char chunkHeader[16];
+ snprintf(chunkHeader, sizeof(chunkHeader), "%X\r\n", trfLen); //In hex encoding
+ ret = send(chunkHeader);
+ CHECK_CONN_ERR(ret);
+ }
+ else if( trfLen == 0 )
+ {
+ break;
+ }
+ if( trfLen != 0 )
+ {
+ ret = send(buf, trfLen);
+ CHECK_CONN_ERR(ret);
+ }
+
+ if( pDataOut->getIsChunked() )
+ {
+ ret = send("\r\n"); //Chunk-terminating CRLF
+ CHECK_CONN_ERR(ret);
+ }
+ else
+ {
+ writtenLen += trfLen;
+ if( writtenLen >= pDataOut->getDataLen() )
+ {
+ break;
+ }
+ }
+
+ if( trfLen == 0 )
+ {
+ break;
+ }
+ }
+
+ }
+
+ //Receive response
+ DBG("Receiving response");
+ ret = recv(buf, CHUNK_SIZE - 1, CHUNK_SIZE - 1, &trfLen); //Read n bytes
+ CHECK_CONN_ERR(ret);
+
+ buf[trfLen] = '\0';
+
+ char* crlfPtr = strstr(buf, "\r\n");
+ if(crlfPtr == NULL)
+ {
+ PRTCL_ERR();
+ }
+
+ int crlfPos = crlfPtr - buf;
+ buf[crlfPos] = '\0';
+
+ //Parse HTTP response
+ if( sscanf(buf, "HTTP/%*d.%*d %d %*[^\r\n]", &m_httpResponseCode) != 1 )
+ {
+ //Cannot match string, error
+ ERR("Not a correct HTTP answer : %s\n", buf);
+ PRTCL_ERR();
+ }
+
+ if(m_httpResponseCode != 200)
+ {
+ //Cannot match string, error
+ WARN("Response code %d", m_httpResponseCode);
+ PRTCL_ERR();
+ }
+
+ DBG("Reading headers");
+
+ memmove(buf, &buf[crlfPos+2], trfLen - (crlfPos + 2) + 1); //Be sure to move NULL-terminating char as well
+ trfLen -= (crlfPos + 2);
+
+ size_t recvContentLength = 0;
+ bool recvChunked = false;
+ //Now get headers
+ while( true )
+ {
+ crlfPtr = strstr(buf, "\r\n");
+ if(crlfPtr == NULL)
+ {
+ if( trfLen < CHUNK_SIZE - 1 )
+ {
+ size_t newTrfLen;
+ ret = recv(buf + trfLen, 1, CHUNK_SIZE - trfLen - 1, &newTrfLen);
+ trfLen += newTrfLen;
+ buf[trfLen] = '\0';
+ DBG("Read %d chars; In buf: [%s]", newTrfLen, buf);
+ CHECK_CONN_ERR(ret);
+ continue;
+ }
+ else
+ {
+ PRTCL_ERR();
+ }
+ }
+
+ crlfPos = crlfPtr - buf;
+
+ if(crlfPos == 0) //End of headers
+ {
+ DBG("Headers read");
+ memmove(buf, &buf[2], trfLen - 2 + 1); //Be sure to move NULL-terminating char as well
+ trfLen -= 2;
+ break;
+ }
+
+ buf[crlfPos] = '\0';
+
+ char key[64] = {0};
+ char value[32] = {0};
+
+ int n = sscanf(buf, "%63[^:]: %31[^\r\n]", key, value);
+
+ if ( n == 2 )
+ {
+ DBG("Read header : %s: %s\n", key, value);
+ if( !strcmp(key, "Content-Length") )
+ {
+ sscanf(value, "%d", &recvContentLength);
+ pDataIn->setDataLen(recvContentLength);
+ }
+ else if( !strcmp(key, "Transfer-Encoding") )
+ {
+ if( !strcmp(value, "Chunked") || !strcmp(value, "chunked") )
+ {
+ recvChunked = true;
+ pDataIn->setIsChunked(true);
+ }
+ }
+ else if( !strcmp(key, "Content-Type") )
+ {
+ pDataIn->setDataType(value);
+ }
+
+ memmove(buf, &buf[crlfPos+2], trfLen - (crlfPos + 2) + 1); //Be sure to move NULL-terminating char as well
+ trfLen -= (crlfPos + 2);
+
+ }
+ else
+ {
+ ERR("Could not parse header");
+ PRTCL_ERR();
+ }
+
+ }
+
+ //Receive data
+ DBG("Receiving data");
+ while(true)
+ {
+ size_t readLen = 0;
+
+ if( recvChunked )
+ {
+ //Read chunk header
+ crlfPos=0;
+ for(crlfPos++; crlfPos < trfLen - 2; crlfPos++)
+ {
+ if( buf[crlfPos] == '\r' && buf[crlfPos + 1] == '\n' )
+ {
+ break;
+ }
+ }
+ if(crlfPos >= trfLen - 2) //Try to read more
+ {
+ if( trfLen < CHUNK_SIZE )
+ {
+ size_t newTrfLen;
+ ret = recv(buf + trfLen, 0, CHUNK_SIZE - trfLen - 1, &newTrfLen);
+ trfLen += newTrfLen;
+ CHECK_CONN_ERR(ret);
+ continue;
+ }
+ else
+ {
+ PRTCL_ERR();
+ }
+ }
+ buf[crlfPos] = '\0';
+ int n = sscanf(buf, "%x", &readLen);
+ if(n!=1)
+ {
+ ERR("Could not read chunk length");
+ PRTCL_ERR();
+ }
+
+ memmove(buf, &buf[crlfPos+2], trfLen - (crlfPos + 2)); //Not need to move NULL-terminating char any more
+ trfLen -= (crlfPos + 2);
+
+ if( readLen == 0 )
+ {
+ //Last chunk
+ break;
+ }
+ }
+ else
+ {
+ readLen = recvContentLength;
+ }
+
+ DBG("Retrieving %d bytes", readLen);
+
+ do
+ {
+ pDataIn->write(buf, MIN(trfLen, readLen));
+ if( trfLen > readLen )
+ {
+ memmove(buf, &buf[readLen], trfLen - readLen);
+ trfLen -= readLen;
+ readLen = 0;
+ }
+ else
+ {
+ readLen -= trfLen;
+ }
+
+ if(readLen)
+ {
+ ret = recv(buf, 1, CHUNK_SIZE - trfLen - 1, &trfLen);
+ CHECK_CONN_ERR(ret);
+ }
+ } while(readLen);
+
+ if( recvChunked )
+ {
+ if(trfLen < 2)
+ {
+ size_t newTrfLen;
+ //Read missing chars to find end of chunk
+ ret = recv(buf, 2 - trfLen, CHUNK_SIZE, &newTrfLen);
+ CHECK_CONN_ERR(ret);
+ trfLen += newTrfLen;
+ }
+ if( (buf[0] != '\r') || (buf[1] != '\n') )
+ {
+ ERR("Format error");
+ PRTCL_ERR();
+ }
+ memmove(buf, &buf[2], trfLen - 2);
+ trfLen -= 2;
+ }
+ else
+ {
+ break;
+ }
+
+ }
+
+ m_sock.close();
+ DBG("Completed HTTP transaction");
+
+ return HTTP_OK;
+}
+
+HTTPResult HTTPClient::recv(char* buf, size_t minLen, size_t maxLen, size_t* pReadLen) //0 on success, err code on failure
+{
+ DBG("Trying to read between %d and %d bytes", minLen, maxLen);
+ size_t readLen = 0;
+
+ if(!m_sock.is_connected())
+ {
+ WARN("Connection was closed by server");
+ return HTTP_CLOSED; //Connection was closed by server
+ }
+
+ int ret;
+ while(readLen < maxLen)
+ {
+ if(readLen < minLen)
+ {
+ DBG("Trying to read at most %d bytes [Blocking]", minLen - readLen);
+ m_sock.set_blocking(false, m_timeout);
+ ret = m_sock.receive_all(buf + readLen, minLen - readLen);
+ }
+ else
+ {
+ DBG("Trying to read at most %d bytes [Not blocking]", maxLen - readLen);
+ m_sock.set_blocking(false, 0);
+ ret = m_sock.receive(buf + readLen, maxLen - readLen);
+ }
+
+ if( ret > 0)
+ {
+ readLen += ret;
+ }
+ else if( ret == 0 )
+ {
+ break;
+ }
+ else
+ {
+ if(!m_sock.is_connected())
+ {
+ ERR("Connection error (recv returned %d)", ret);
+ *pReadLen = readLen;
+ return HTTP_CONN;
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ if(!m_sock.is_connected())
+ {
+ break;
+ }
+ }
+ DBG("Read %d bytes", readLen);
+ *pReadLen = readLen;
+ return HTTP_OK;
+}
+
+HTTPResult HTTPClient::send(char* buf, size_t len) //0 on success, err code on failure
+{
+ if(len == 0)
+ {
+ len = strlen(buf);
+ }
+ DBG("Trying to write %d bytes", len);
+ size_t writtenLen = 0;
+
+ if(!m_sock.is_connected())
+ {
+ WARN("Connection was closed by server");
+ return HTTP_CLOSED; //Connection was closed by server
+ }
+
+ m_sock.set_blocking(false, m_timeout);
+ int ret = m_sock.send_all(buf, len);
+ if(ret > 0)
+ {
+ writtenLen += ret;
+ }
+ else if( ret == 0 )
+ {
+ WARN("Connection was closed by server");
+ return HTTP_CLOSED; //Connection was closed by server
+ }
+ else
+ {
+ ERR("Connection error (send returned %d)", ret);
+ return HTTP_CONN;
+ }
+
+ DBG("Written %d bytes", writtenLen);
+ return HTTP_OK;
+}
+
+HTTPResult HTTPClient::parseURL(const char* url, char* scheme, size_t maxSchemeLen, char* host, size_t maxHostLen, uint16_t* port, char* path, size_t maxPathLen) //Parse URL
+{
+ char* schemePtr = (char*) url;
+ char* hostPtr = (char*) strstr(url, "://");
+ if(hostPtr == NULL)
+ {
+ WARN("Could not find host");
+ return HTTP_PARSE; //URL is invalid
+ }
+
+ if( maxSchemeLen < hostPtr - schemePtr + 1 ) //including NULL-terminating char
+ {
+ WARN("Scheme str is too small (%d >= %d)", maxSchemeLen, hostPtr - schemePtr + 1);
+ return HTTP_PARSE;
+ }
+ memcpy(scheme, schemePtr, hostPtr - schemePtr);
+ scheme[hostPtr - schemePtr] = '\0';
+
+ hostPtr+=3;
+
+ size_t hostLen = 0;
+
+ char* portPtr = strchr(hostPtr, ':');
+ if( portPtr != NULL )
+ {
+ hostLen = portPtr - hostPtr;
+ portPtr++;
+ if( sscanf(portPtr, "%hu", port) != 1)
+ {
+ WARN("Could not find port");
+ return HTTP_PARSE;
+ }
+ }
+ else
+ {
+ *port=0;
+ }
+ char* pathPtr = strchr(hostPtr, '/');
+ if( hostLen == 0 )
+ {
+ hostLen = pathPtr - hostPtr;
+ }
+
+ if( maxHostLen < hostLen + 1 ) //including NULL-terminating char
+ {
+ WARN("Host str is too small (%d >= %d)", maxHostLen, hostLen + 1);
+ return HTTP_PARSE;
+ }
+ memcpy(host, hostPtr, hostLen);
+ host[hostLen] = '\0';
+
+ size_t pathLen;
+ char* fragmentPtr = strchr(hostPtr, '#');
+ if(fragmentPtr != NULL)
+ {
+ pathLen = fragmentPtr - pathPtr;
+ }
+ else
+ {
+ pathLen = strlen(pathPtr);
+ }
+
+ if( maxPathLen < pathLen + 1 ) //including NULL-terminating char
+ {
+ WARN("Path str is too small (%d >= %d)", maxPathLen, pathLen + 1);
+ return HTTP_PARSE;
+ }
+ memcpy(path, pathPtr, pathLen);
+ path[pathLen] = '\0';
+
+ return HTTP_OK;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/HTTPClient.h b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/HTTPClient.h
new file mode 100644
index 0000000000..e9ac860cab
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/HTTPClient.h
@@ -0,0 +1,138 @@
+/* HTTPClient.h */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/** \file
+HTTP Client header file
+*/
+
+#ifndef HTTP_CLIENT_H
+#define HTTP_CLIENT_H
+
+#include "TCPSocketConnection.h"
+
+#define HTTP_CLIENT_DEFAULT_TIMEOUT 15000
+
+class HTTPData;
+
+#include "IHTTPData.h"
+#include "mbed.h"
+
+///HTTP client results
+enum HTTPResult
+{
+ HTTP_PROCESSING, ///<Processing
+ HTTP_PARSE, ///<url Parse error
+ HTTP_DNS, ///<Could not resolve name
+ HTTP_PRTCL, ///<Protocol error
+ HTTP_NOTFOUND, ///<HTTP 404 Error
+ HTTP_REFUSED, ///<HTTP 403 Error
+ HTTP_ERROR, ///<HTTP xxx error
+ HTTP_TIMEOUT, ///<Connection timeout
+ HTTP_CONN, ///<Connection error
+ HTTP_CLOSED, ///<Connection was closed by remote host
+ HTTP_OK = 0, ///<Success
+};
+
+/**A simple HTTP Client
+The HTTPClient is composed of:
+- The actual client (HTTPClient)
+- Classes that act as a data repository, each of which deriving from the HTTPData class (HTTPText for short text content, HTTPFile for file I/O, HTTPMap for key/value pairs, and HTTPStream for streaming purposes)
+*/
+class HTTPClient
+{
+public:
+ ///Instantiate the HTTP client
+ HTTPClient();
+ ~HTTPClient();
+
+#if 0 //TODO add header handlers
+ /**
+ Provides a basic authentification feature (Base64 encoded username and password)
+ Pass two NULL pointers to switch back to no authentication
+ @param user username to use for authentication, must remain valid durlng the whole HTTP session
+ @param user password to use for authentication, must remain valid durlng the whole HTTP session
+ */
+ void basicAuth(const char* user, const char* password); //Basic Authentification
+#endif
+
+ //High Level setup functions
+ /** Execute a GET request on the url
+ Blocks until completion
+ @param url : url on which to execute the request
+ @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL
+ @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
+ @return 0 on success, HTTP error (<0) on failure
+ */
+ HTTPResult get(const char* url, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
+
+ /** Execute a GET request on the url
+ Blocks until completion
+ This is a helper to directly get a piece of text from a HTTP result
+ @param url : url on which to execute the request
+ @param result : pointer to a char array in which the result will be stored
+ @param maxResultLen : length of the char array (including space for the NULL-terminating char)
+ @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
+ @return 0 on success, HTTP error (<0) on failure
+ */
+ HTTPResult get(const char* url, char* result, size_t maxResultLen, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
+
+ /** Execute a POST request on the url
+ Blocks until completion
+ @param url : url on which to execute the request
+ @param dataOut : a IHTTPDataOut instance that contains the data that will be posted
+ @param pDataIn : pointer to an IHTTPDataIn instance that will collect the data returned by the request, can be NULL
+ @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
+ @return 0 on success, HTTP error (<0) on failure
+ */
+ HTTPResult post(const char* url, const IHTTPDataOut& dataOut, IHTTPDataIn* pDataIn, int timeout = HTTP_CLIENT_DEFAULT_TIMEOUT); //Blocking
+
+ /** Get last request's HTTP response code
+ @return The HTTP response code of the last request
+ */
+ int getHTTPResponseCode();
+
+private:
+ enum HTTP_METH
+ {
+ HTTP_GET,
+ HTTP_POST,
+ HTTP_HEAD
+ };
+
+ HTTPResult connect(const char* url, HTTP_METH method, IHTTPDataOut* pDataOut, IHTTPDataIn* pDataIn, int timeout); //Execute request
+ HTTPResult recv(char* buf, size_t minLen, size_t maxLen, size_t* pReadLen); //0 on success, err code on failure
+ HTTPResult send(char* buf, size_t len = 0); //0 on success, err code on failure
+ HTTPResult parseURL(const char* url, char* scheme, size_t maxSchemeLen, char* host, size_t maxHostLen, uint16_t* port, char* path, size_t maxPathLen); //Parse URL
+
+ //Parameters
+ TCPSocketConnection m_sock;
+
+ int m_timeout;
+
+ const char* m_basicAuthUser;
+ const char* m_basicAuthPassword;
+ int m_httpResponseCode;
+
+};
+
+//Including data containers here for more convenience
+#include "data/HTTPText.h"
+#include "data/HTTPMap.h"
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/IHTTPData.h b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/IHTTPData.h
new file mode 100644
index 0000000000..2eead464f1
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/IHTTPData.h
@@ -0,0 +1,86 @@
+/* IHTTPData.h */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef IHTTPDATA_H
+#define IHTTPDATA_H
+
+#include <cstring>
+
+using std::size_t;
+
+///This is a simple interface for HTTP data storage (impl examples are Key/Value Pairs, File, etc...)
+class IHTTPDataOut
+{
+protected:
+ friend class HTTPClient;
+
+ /** Read a piece of data to be transmitted
+ * @param buf Pointer to the buffer on which to copy the data
+ * @param len Length of the buffer
+ * @param pReadLen Pointer to the variable on which the actual copied data length will be stored
+ */
+ virtual int read(char* buf, size_t len, size_t* pReadLen) = 0;
+
+ /** Get MIME type
+ * @param type Internet media type from Content-Type header
+ */
+ virtual int getDataType(char* type, size_t maxTypeLen) = 0; //Internet media type for Content-Type header
+
+ /** Determine whether the HTTP client should chunk the data
+ * Used for Transfer-Encoding header
+ */
+ virtual bool getIsChunked() = 0;
+
+ /** If the data is not chunked, get its size
+ * Used for Content-Length header
+ */
+ virtual size_t getDataLen() = 0;
+
+};
+
+///This is a simple interface for HTTP data storage (impl examples are Key/Value Pairs, File, etc...)
+class IHTTPDataIn
+{
+protected:
+ friend class HTTPClient;
+
+ /** Write a piece of data transmitted by the server
+ * @param buf Pointer to the buffer from which to copy the data
+ * @param len Length of the buffer
+ */
+ virtual int write(const char* buf, size_t len) = 0;
+
+ /** Set MIME type
+ * @param type Internet media type from Content-Type header
+ */
+ virtual void setDataType(const char* type) = 0;
+
+ /** Determine whether the data is chunked
+ * Recovered from Transfer-Encoding header
+ */
+ virtual void setIsChunked(bool chunked) = 0;
+
+ /** If the data is not chunked, set its size
+ * From Content-Length header
+ */
+ virtual void setDataLen(size_t len) = 0;
+
+};
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPMap.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPMap.cpp
new file mode 100644
index 0000000000..75ffd970e9
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPMap.cpp
@@ -0,0 +1,196 @@
+/* HTTPMap.cpp */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "HTTPMap.h"
+
+#include <cstring>
+
+#include <cctype>
+
+#define OK 0
+
+using std::strncpy;
+
+HTTPMap::HTTPMap() : m_pos(0), m_count(0)
+{
+
+}
+
+void HTTPMap::put(const char* key, const char* value)
+{
+ if(m_count >= HTTPMAP_TABLE_SIZE)
+ {
+ return;
+ }
+ m_keys[m_count] = key;
+ m_values[m_count] = value;
+ m_count++;
+}
+
+void HTTPMap::clear()
+{
+ m_count = 0;
+ m_pos = 0;
+}
+
+
+/*virtual*/ int HTTPMap::read(char* buf, size_t len, size_t* pReadLen)
+{
+ if(m_pos >= m_count)
+ {
+ *pReadLen = 0;
+ m_pos = 0;
+ return OK;
+ }
+
+ //URL encode
+ char* out = buf;
+ const char* in = m_keys[m_pos];
+ if( (m_pos != 0) && (out - buf < len - 1) )
+ {
+ *out='&';
+ out++;
+ }
+
+ while( (*in != '\0') && (out - buf < len - 3) )
+ {
+ if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~')
+ {
+ *out = *in;
+ out++;
+ }
+ else if( *in == ' ' )
+ {
+ *out='+';
+ out++;
+ }
+ else
+ {
+ char hex[] = "0123456789abcdef";
+ *out='%';
+ out++;
+ *out=hex[(*in>>4)&0xf];
+ out++;
+ *out=hex[(*in)&0xf];
+ out++;
+ }
+ in++;
+ }
+
+ if( out - buf < len - 1 )
+ {
+ *out='=';
+ out++;
+ }
+
+ in = m_values[m_pos];
+ while( (*in != '\0') && (out - buf < len - 3) )
+ {
+ if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~')
+ {
+ *out = *in;
+ out++;
+ }
+ else if( *in == ' ' )
+ {
+ *out='+';
+ out++;
+ }
+ else
+ {
+ char hex[] = "0123456789abcdef";
+ *out='%';
+ out++;
+ *out=hex[(*in>>4)&0xf];
+ out++;
+ *out=hex[(*in)&0xf];
+ out++;
+ }
+ in++;
+ }
+
+ *pReadLen = out - buf;
+
+ m_pos++;
+ return OK;
+}
+
+/*virtual*/ int HTTPMap::getDataType(char* type, size_t maxTypeLen) //Internet media type for Content-Type header
+{
+ strncpy(type, "application/x-www-form-urlencoded", maxTypeLen-1);
+ type[maxTypeLen-1] = '\0';
+ return OK;
+}
+
+/*virtual*/ bool HTTPMap::getIsChunked() //For Transfer-Encoding header
+{
+ return false; ////Data is computed one key/value pair at a time
+}
+
+/*virtual*/ size_t HTTPMap::getDataLen() //For Content-Length header
+{
+ size_t count = 0;
+ for(size_t i = 0; i< m_count; i++)
+ {
+ //URL encode
+ const char* in = m_keys[i];
+ if( i != 0 )
+ {
+ count++;
+ }
+
+ while( (*in != '\0') )
+ {
+ if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~')
+ {
+ count++;
+ }
+ else if( *in == ' ' )
+ {
+ count++;
+ }
+ else
+ {
+ count+=3;
+ }
+ in++;
+ }
+
+ count ++;
+
+ in = m_values[i];
+ while( (*in != '\0') )
+ {
+ if (std::isalnum(*in) || *in == '-' || *in == '_' || *in == '.' || *in == '~')
+ {
+ count++;
+ }
+ else if( *in == ' ' )
+ {
+ count++;
+ }
+ else
+ {
+ count+=3;
+ }
+ in++;
+ }
+ }
+ return count;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPMap.h b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPMap.h
new file mode 100644
index 0000000000..ad02211e9a
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPMap.h
@@ -0,0 +1,69 @@
+/* HTTPMap.h */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#ifndef HTTPMAP_H_
+#define HTTPMAP_H_
+
+#include "../IHTTPData.h"
+
+#define HTTPMAP_TABLE_SIZE 32
+
+/** Map of key/value pairs
+ * Used to transmit POST data using the application/x-www-form-urlencoded encoding
+ */
+class HTTPMap: public IHTTPDataOut
+{
+public:
+ /**
+ Instantiates HTTPMap
+ It supports at most 32 key/values pairs
+ */
+ HTTPMap();
+
+ /** Put Key/Value pair
+ The references to the parameters must remain valid as long as the clear() function is not called
+ @param key The key to use
+ @param value The corresponding value
+ */
+ void put(const char* key, const char* value);
+
+ /** Clear table
+ */
+ void clear();
+
+protected:
+ //IHTTPDataIn
+ virtual int read(char* buf, size_t len, size_t* pReadLen);
+
+ virtual int getDataType(char* type, size_t maxTypeLen); //Internet media type for Content-Type header
+
+ virtual bool getIsChunked(); //For Transfer-Encoding header
+
+ virtual size_t getDataLen(); //For Content-Length header
+
+private:
+ const char* m_keys[HTTPMAP_TABLE_SIZE];
+ const char* m_values[HTTPMAP_TABLE_SIZE];
+
+ size_t m_pos;
+ size_t m_count;
+};
+
+#endif /* HTTPMAP_H_ */
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPText.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPText.cpp
new file mode 100644
index 0000000000..800532b0e2
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPText.cpp
@@ -0,0 +1,94 @@
+/* HTTPText.cpp */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "HTTPText.h"
+
+#include <cstring>
+
+#define OK 0
+
+using std::memcpy;
+using std::strncpy;
+using std::strlen;
+
+#define MIN(x,y) (((x)<(y))?(x):(y))
+
+HTTPText::HTTPText(char* str) : m_str(str), m_pos(0)
+{
+ m_size = strlen(str) + 1;
+}
+
+HTTPText::HTTPText(char* str, size_t size) : m_str(str), m_size(size), m_pos(0)
+{
+
+}
+
+//IHTTPDataIn
+/*virtual*/ int HTTPText::read(char* buf, size_t len, size_t* pReadLen)
+{
+ *pReadLen = MIN(len, m_size - 1 - m_pos);
+ memcpy(buf, m_str + m_pos, *pReadLen);
+ m_pos += *pReadLen;
+ return OK;
+}
+
+/*virtual*/ int HTTPText::getDataType(char* type, size_t maxTypeLen) //Internet media type for Content-Type header
+{
+ strncpy(type, "text/plain", maxTypeLen-1);
+ type[maxTypeLen-1] = '\0';
+ return OK;
+}
+
+/*virtual*/ bool HTTPText::getIsChunked() //For Transfer-Encoding header
+{
+ return false;
+}
+
+/*virtual*/ size_t HTTPText::getDataLen() //For Content-Length header
+{
+ return m_size - 1;
+}
+
+//IHTTPDataOut
+/*virtual*/ int HTTPText::write(const char* buf, size_t len)
+{
+ size_t writeLen = MIN(len, m_size - 1 - m_pos);
+ memcpy(m_str + m_pos, buf, writeLen);
+ m_pos += writeLen;
+ m_str[m_pos] = '\0';
+ return OK;
+}
+
+/*virtual*/ void HTTPText::setDataType(const char* type) //Internet media type from Content-Type header
+{
+
+}
+
+/*virtual*/ void HTTPText::setIsChunked(bool chunked) //From Transfer-Encoding header
+{
+
+}
+
+/*virtual*/ void HTTPText::setDataLen(size_t len) //From Content-Length header, or if the transfer is chunked, next chunk length
+{
+
+}
+
+
+
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPText.h b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPText.h
new file mode 100644
index 0000000000..224a957878
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/HTTPClient/data/HTTPText.h
@@ -0,0 +1,68 @@
+/* HTTPText.h */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#ifndef HTTPTEXT_H_
+#define HTTPTEXT_H_
+
+#include "../IHTTPData.h"
+
+/** A data endpoint to store text
+*/
+class HTTPText : public IHTTPDataIn, public IHTTPDataOut
+{
+public:
+ /** Create an HTTPText instance for output
+ * @param str String to be transmitted
+ */
+ HTTPText(char* str);
+
+ /** Create an HTTPText instance for input
+ * @param str Buffer to store the incoming string
+ * @param size Size of the buffer
+ */
+ HTTPText(char* str, size_t size);
+
+protected:
+ //IHTTPDataIn
+ virtual int read(char* buf, size_t len, size_t* pReadLen);
+
+ virtual int getDataType(char* type, size_t maxTypeLen); //Internet media type for Content-Type header
+
+ virtual bool getIsChunked(); //For Transfer-Encoding header
+
+ virtual size_t getDataLen(); //For Content-Length header
+
+ //IHTTPDataOut
+ virtual int write(const char* buf, size_t len);
+
+ virtual void setDataType(const char* type); //Internet media type from Content-Type header
+
+ virtual void setIsChunked(bool chunked); //From Transfer-Encoding header
+
+ virtual void setDataLen(size_t len); //From Content-Length header, or if the transfer is chunked, next chunk length
+
+private:
+ char* m_str;
+ size_t m_size;
+
+ size_t m_pos;
+};
+
+#endif /* HTTPTEXT_H_ */
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/main.cpp
new file mode 100644
index 0000000000..5ab616ea95
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/HTTPClient_HelloWorld/main.cpp
@@ -0,0 +1,67 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "EthernetInterface.h"
+#include "HTTPClient.h"
+
+
+namespace {
+ const int BUFFER_SIZE = 512;
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(HTTP client hello world);
+ MBED_HOSTTEST_START("NET_7");
+
+ char http_request_buffer[BUFFER_SIZE + 1] = {0};
+ HTTPClient http;
+ EthernetInterface eth;
+ eth.init(); //Use DHCP
+ eth.connect();
+
+ //GET data
+ {
+ bool result = true;
+ const char *url_hello_txt = "http://developer.mbed.org/media/uploads/donatien/hello.txt";
+ printf("HTTP_GET: Trying to fetch page '%s'...\r\n", url_hello_txt);
+ HTTPResult ret = http.get(url_hello_txt, http_request_buffer, BUFFER_SIZE);
+ if (ret == HTTP_OK) {
+ printf("HTTP_GET: Read %d chars: '%s' ... [OK]\r\n", strlen(http_request_buffer), http_request_buffer);
+ } else {
+ printf("HTTP_GET: Error(%d). HTTP error(%d) ... [FAIL]\r\n", ret, http.getHTTPResponseCode());
+ result = false;
+ }
+
+ if (result == false) {
+ eth.disconnect();
+ MBED_HOSTTEST_RESULT(false);
+ }
+ }
+
+ //POST data
+ {
+ bool result = true;
+ const char *url_httpbin_post = "http://httpbin.org/post";
+ HTTPText text(http_request_buffer, BUFFER_SIZE);
+ HTTPMap map;
+ map.put("Hello", "World");
+ map.put("test", "1234");
+ printf("HTTP_POST: Trying to post data to '%s' ...\r\n", url_httpbin_post);
+ HTTPResult ret = http.post(url_httpbin_post, map, &text);
+ if (ret == HTTP_OK) {
+ printf("HTTP_POST: Read %d chars ... [OK]\r\n", strlen(http_request_buffer));
+ printf("HTTP_POST: %s\r\n", http_request_buffer);
+ } else {
+ printf("HTTP_GET: Error(%d). HTTP error(%d) ... [FAIL]\r\n", ret, http.getHTTPResponseCode());
+ result = false;
+ }
+
+ if (result == false) {
+ eth.disconnect();
+ MBED_HOSTTEST_RESULT(false);
+ }
+ }
+ eth.disconnect();
+ MBED_HOSTTEST_RESULT(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.cpp
new file mode 100644
index 0000000000..b049d30036
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.cpp
@@ -0,0 +1,163 @@
+/* NTPClient.cpp */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+//Debug is disabled by default
+#if 0
+//Enable debug
+#define __DEBUG__
+#include <cstdio>
+#define DBG(x, ...) std::printf("[NTPClient : DBG]"x"\r\n", ##__VA_ARGS__);
+#define WARN(x, ...) std::printf("[NTPClient : WARN]"x"\r\n", ##__VA_ARGS__);
+#define ERR(x, ...) std::printf("[NTPClient : ERR]"x"\r\n", ##__VA_ARGS__);
+
+#else
+//Disable debug
+#define DBG(x, ...)
+#define WARN(x, ...)
+#define ERR(x, ...)
+
+#endif
+
+#include "NTPClient.h"
+
+#include "UDPSocket.h"
+
+#include "mbed.h" //time() and set_time()
+
+#define NTP_PORT 123
+#define NTP_CLIENT_PORT 0 //Random port
+#define NTP_TIMESTAMP_DELTA 2208988800ull //Diff btw a UNIX timestamp (Starting Jan, 1st 1970) and a NTP timestamp (Starting Jan, 1st 1900)
+
+NTPClient::NTPClient() : m_sock()
+{
+
+
+}
+
+NTPResult NTPClient::setTime(const char* host, uint16_t port, uint32_t timeout)
+{
+#ifdef __DEBUG__
+ time_t ctTime;
+ ctTime = time(NULL);
+ DBG("Time is set to (UTC): %s", ctime(&ctTime));
+#endif
+
+ //Create & bind socket
+ DBG("Binding socket");
+ m_sock.bind(0); //Bind to a random port
+
+ m_sock.set_blocking(false, timeout); //Set not blocking
+
+ struct NTPPacket pkt;
+
+ //Now ping the server and wait for response
+ DBG("Ping");
+ //Prepare NTP Packet:
+ pkt.li = 0; //Leap Indicator : No warning
+ pkt.vn = 4; //Version Number : 4
+ pkt.mode = 3; //Client mode
+ pkt.stratum = 0; //Not relevant here
+ pkt.poll = 0; //Not significant as well
+ pkt.precision = 0; //Neither this one is
+
+ pkt.rootDelay = 0; //Or this one
+ pkt.rootDispersion = 0; //Or that one
+ pkt.refId = 0; //...
+
+ pkt.refTm_s = 0;
+ pkt.origTm_s = 0;
+ pkt.rxTm_s = 0;
+ pkt.txTm_s = htonl( NTP_TIMESTAMP_DELTA + time(NULL) ); //WARN: We are in LE format, network byte order is BE
+
+ pkt.refTm_f = pkt.origTm_f = pkt.rxTm_f = pkt.txTm_f = 0;
+
+ Endpoint outEndpoint;
+
+ if( outEndpoint.set_address(host, port) < 0)
+ {
+ m_sock.close();
+ return NTP_DNS;
+ }
+
+ //Set timeout, non-blocking and wait using select
+ int ret = m_sock.sendTo( outEndpoint, (char*)&pkt, sizeof(NTPPacket) );
+ if (ret < 0 )
+ {
+ ERR("Could not send packet");
+ m_sock.close();
+ return NTP_CONN;
+ }
+
+ //Read response
+ Endpoint inEndpoint;
+
+ DBG("Pong");
+ do
+ {
+ ret = m_sock.receiveFrom( inEndpoint, (char*)&pkt, sizeof(NTPPacket) ); //FIXME need a DNS Resolver to actually compare the incoming address with the DNS name
+ if(ret < 0)
+ {
+ ERR("Could not receive packet");
+ m_sock.close();
+ return NTP_CONN;
+ }
+ } while( strcmp(outEndpoint.get_address(), inEndpoint.get_address()) != 0 );
+
+ if(ret < sizeof(NTPPacket)) //TODO: Accept chunks
+ {
+ ERR("Receive packet size does not match");
+ m_sock.close();
+ return NTP_PRTCL;
+ }
+
+ if( pkt.stratum == 0) //Kiss of death message : Not good !
+ {
+ ERR("Kissed to death!");
+ m_sock.close();
+ return NTP_PRTCL;
+ }
+
+ //Correct Endianness
+ pkt.refTm_s = ntohl( pkt.refTm_s );
+ pkt.refTm_f = ntohl( pkt.refTm_f );
+ pkt.origTm_s = ntohl( pkt.origTm_s );
+ pkt.origTm_f = ntohl( pkt.origTm_f );
+ pkt.rxTm_s = ntohl( pkt.rxTm_s );
+ pkt.rxTm_f = ntohl( pkt.rxTm_f );
+ pkt.txTm_s = ntohl( pkt.txTm_s );
+ pkt.txTm_f = ntohl( pkt.txTm_f );
+
+ //Compute offset, see RFC 4330 p.13
+ uint32_t destTm_s = (NTP_TIMESTAMP_DELTA + time(NULL));
+ int64_t offset = ( (int64_t)( pkt.rxTm_s - pkt.origTm_s ) + (int64_t) ( pkt.txTm_s - destTm_s ) ) / 2; //Avoid overflow
+ DBG("Sent @%ul", pkt.txTm_s);
+ DBG("Offset: %lld", offset);
+ //Set time accordingly
+ set_time( time(NULL) + offset );
+
+#ifdef __DEBUG__
+ ctTime = time(NULL);
+ DBG("Time is now (UTC): %s", ctime(&ctTime));
+#endif
+
+ m_sock.close();
+
+ return NTP_OK;
+}
+
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.h b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.h
new file mode 100644
index 0000000000..b7cf6ff127
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/NTPClient/NTPClient.h
@@ -0,0 +1,101 @@
+/* NTPClient.h */
+/* Copyright (C) 2012 mbed.org, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/** \file
+NTP Client header file
+*/
+
+#ifndef NTPCLIENT_H_
+#define NTPCLIENT_H_
+
+#include "UDPSocket.h"
+
+#define NTP_DEFAULT_PORT 123
+#define NTP_DEFAULT_TIMEOUT 4000
+
+///NTP client results
+enum NTPResult
+{
+ NTP_DNS, ///<Could not resolve name
+ NTP_PRTCL, ///<Protocol error
+ NTP_TIMEOUT, ///<Connection timeout
+ NTP_CONN, ///<Connection error
+ NTP_OK = 0, ///<Success
+};
+
+/** NTP Client to update the mbed's RTC using a remote time server
+*
+*/
+class NTPClient
+{
+public:
+ /**
+ Instantiate the NTP client
+ */
+ NTPClient();
+
+ /**Get current time (blocking)
+ Update the time using the server host
+ Blocks until completion
+ @param host NTP server IPv4 address or hostname (will be resolved via DNS)
+ @param port port to use; defaults to 123
+ @param timeout waiting timeout in ms (osWaitForever for blocking function, not recommended)
+ @return 0 on success, NTP error code (<0) on failure
+ */
+ NTPResult setTime(const char* host, uint16_t port = NTP_DEFAULT_PORT, uint32_t timeout = NTP_DEFAULT_TIMEOUT); //Blocking
+
+private:
+#if defined (__ICCARM__)
+ #pragma pack()
+#endif
+ struct NTPPacket //See RFC 4330 for Simple NTP
+ {
+ //WARN: We are in LE! Network is BE!
+ //LSb first
+ unsigned mode : 3;
+ unsigned vn : 3;
+ unsigned li : 2;
+
+ uint8_t stratum;
+ uint8_t poll;
+ uint8_t precision;
+ //32 bits header
+
+ uint32_t rootDelay;
+ uint32_t rootDispersion;
+ uint32_t refId;
+
+ uint32_t refTm_s;
+ uint32_t refTm_f;
+ uint32_t origTm_s;
+ uint32_t origTm_f;
+ uint32_t rxTm_s;
+ uint32_t rxTm_f;
+ uint32_t txTm_s;
+ uint32_t txTm_f;
+#if defined (__ICCARM__)
+ };
+#else
+ } __attribute__ ((packed));
+#endif
+
+ UDPSocket m_sock;
+};
+
+#endif /* NTPCLIENT_H_ */
diff --git a/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/main.cpp
new file mode 100644
index 0000000000..fa71656b01
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/net/protocols/NTPClient_HelloWorld/main.cpp
@@ -0,0 +1,39 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "EthernetInterface.h"
+#include "NTPClient.h"
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(NTP client);
+ MBED_HOSTTEST_START("NET_8");
+
+ EthernetInterface eth;
+ NTPClient ntp;
+ eth.init(); //Use DHCP
+ eth.connect();
+
+ // NTP set time
+ {
+ bool result = true;
+ const char *url_ntp_server = "0.pool.ntp.org";
+ printf("NTP_SETTIME: Trying to update time... \r\n");
+ const int ret = ntp.setTime(url_ntp_server);
+ if (ret == 0) {
+ time_t ctTime = time(NULL);
+ printf("NTP_SETTIME: UTC Time read successfully ... [OK]\r\n");
+ printf("NTP_SETTIME: %s\r\n", ctime(&ctTime));
+ }
+ else {
+ printf("NTP_SETTIME: Error(%d) ... [FAIL]\r\n", ret);
+ result = false;
+ }
+
+ if (result == false) {
+ MBED_HOSTTEST_RESULT(false);
+ }
+ }
+ eth.disconnect();
+ MBED_HOSTTEST_RESULT(true);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/ADXL345/ADXL345.cpp b/tool/mbed/mbed-sdk/libraries/tests/peripherals/ADXL345/ADXL345.cpp
new file mode 100644
index 0000000000..6f9c856826
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/ADXL345/ADXL345.cpp
@@ -0,0 +1,405 @@
+/**
+ * @author Aaron Berk
+ *
+ * @section LICENSE
+ *
+ * Copyright (c) 2010 ARM Limited
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @section DESCRIPTION
+ *
+ * ADXL345, triple axis, digital interface, accelerometer.
+ *
+ * Datasheet:
+ *
+ * http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf
+ */
+
+/**
+ * Includes
+ */
+#include "ADXL345.h"
+
+ADXL345::ADXL345(PinName mosi,
+ PinName miso,
+ PinName sck,
+ PinName cs) : spi_(mosi, miso, sck), nCS_(cs) {
+
+ //2MHz, allowing us to use the fastest data rates.
+ spi_.frequency(2000000);
+ spi_.format(8,3);
+
+ nCS_ = 1;
+
+ wait_us(500);
+
+}
+
+int ADXL345::getDevId(void) {
+
+ return oneByteRead(ADXL345_DEVID_REG);
+
+}
+
+int ADXL345::getTapThreshold(void) {
+
+ return oneByteRead(ADXL345_THRESH_TAP_REG);
+
+}
+
+void ADXL345::setTapThreshold(int threshold) {
+
+ oneByteWrite(ADXL345_THRESH_TAP_REG, threshold);
+
+}
+
+int ADXL345::getOffset(int axis) {
+
+ int address = 0;
+
+ if (axis == ADXL345_X) {
+ address = ADXL345_OFSX_REG;
+ } else if (axis == ADXL345_Y) {
+ address = ADXL345_OFSY_REG;
+ } else if (axis == ADXL345_Z) {
+ address = ADXL345_OFSZ_REG;
+ }
+
+ return oneByteRead(address);
+
+}
+
+void ADXL345::setOffset(int axis, char offset) {
+
+ int address = 0;
+
+ if (axis == ADXL345_X) {
+ address = ADXL345_OFSX_REG;
+ } else if (axis == ADXL345_Y) {
+ address = ADXL345_OFSY_REG;
+ } else if (axis == ADXL345_Z) {
+ address = ADXL345_OFSZ_REG;
+ }
+
+ return oneByteWrite(address, offset);
+
+}
+
+int ADXL345::getTapDuration(void) {
+
+ return oneByteRead(ADXL345_DUR_REG)*625;
+
+}
+
+void ADXL345::setTapDuration(int duration_us) {
+
+ int tapDuration = duration_us / 625;
+
+ oneByteWrite(ADXL345_DUR_REG, tapDuration);
+
+}
+
+float ADXL345::getTapLatency(void) {
+
+ return oneByteRead(ADXL345_LATENT_REG)*1.25;
+
+}
+
+void ADXL345::setTapLatency(int latency_ms) {
+
+ int tapLatency = latency_ms / 1.25;
+
+ oneByteWrite(ADXL345_LATENT_REG, tapLatency);
+
+}
+
+float ADXL345::getWindowTime(void) {
+
+ return oneByteRead(ADXL345_WINDOW_REG)*1.25;
+
+}
+
+void ADXL345::setWindowTime(int window_ms) {
+
+ int windowTime = window_ms / 1.25;
+
+ oneByteWrite(ADXL345_WINDOW_REG, windowTime);
+
+}
+
+int ADXL345::getActivityThreshold(void) {
+
+ return oneByteRead(ADXL345_THRESH_ACT_REG);
+
+}
+
+void ADXL345::setActivityThreshold(int threshold) {
+
+ oneByteWrite(ADXL345_THRESH_ACT_REG, threshold);
+
+}
+
+int ADXL345::getInactivityThreshold(void) {
+
+ return oneByteRead(ADXL345_THRESH_INACT_REG);
+
+}
+
+void ADXL345::setInactivityThreshold(int threshold) {
+
+ return oneByteWrite(ADXL345_THRESH_INACT_REG, threshold);
+
+}
+
+int ADXL345::getTimeInactivity(void) {
+
+ return oneByteRead(ADXL345_TIME_INACT_REG);
+
+}
+
+void ADXL345::setTimeInactivity(int timeInactivity) {
+
+ oneByteWrite(ADXL345_TIME_INACT_REG, timeInactivity);
+
+}
+
+int ADXL345::getActivityInactivityControl(void) {
+
+ return oneByteRead(ADXL345_ACT_INACT_CTL_REG);
+
+}
+
+void ADXL345::setActivityInactivityControl(int settings) {
+
+ oneByteWrite(ADXL345_ACT_INACT_CTL_REG, settings);
+
+}
+
+int ADXL345::getFreefallThreshold(void) {
+
+ return oneByteRead(ADXL345_THRESH_FF_REG);
+
+}
+
+void ADXL345::setFreefallThreshold(int threshold) {
+
+ oneByteWrite(ADXL345_THRESH_FF_REG, threshold);
+
+}
+
+int ADXL345::getFreefallTime(void) {
+
+ return oneByteRead(ADXL345_TIME_FF_REG)*5;
+
+}
+
+void ADXL345::setFreefallTime(int freefallTime_ms) {
+
+ int freefallTime = freefallTime_ms / 5;
+
+ oneByteWrite(ADXL345_TIME_FF_REG, freefallTime);
+
+}
+
+int ADXL345::getTapAxisControl(void) {
+
+ return oneByteRead(ADXL345_TAP_AXES_REG);
+
+}
+
+void ADXL345::setTapAxisControl(int settings) {
+
+ oneByteWrite(ADXL345_TAP_AXES_REG, settings);
+
+}
+
+int ADXL345::getTapSource(void) {
+
+ return oneByteRead(ADXL345_ACT_TAP_STATUS_REG);
+
+}
+
+void ADXL345::setPowerMode(char mode) {
+
+ //Get the current register contents, so we don't clobber the rate value.
+ char registerContents = oneByteRead(ADXL345_BW_RATE_REG);
+
+ registerContents = (mode << 4) | registerContents;
+
+ oneByteWrite(ADXL345_BW_RATE_REG, registerContents);
+
+}
+
+int ADXL345::getPowerControl(void) {
+
+ return oneByteRead(ADXL345_POWER_CTL_REG);
+
+}
+
+void ADXL345::setPowerControl(int settings) {
+
+ oneByteWrite(ADXL345_POWER_CTL_REG, settings);
+
+}
+
+int ADXL345::getInterruptEnableControl(void) {
+
+ return oneByteRead(ADXL345_INT_ENABLE_REG);
+
+}
+
+void ADXL345::setInterruptEnableControl(int settings) {
+
+ oneByteWrite(ADXL345_INT_ENABLE_REG, settings);
+
+}
+
+int ADXL345::getInterruptMappingControl(void) {
+
+ return oneByteRead(ADXL345_INT_MAP_REG);
+
+}
+
+void ADXL345::setInterruptMappingControl(int settings) {
+
+ oneByteWrite(ADXL345_INT_MAP_REG, settings);
+
+}
+
+int ADXL345::getInterruptSource(void){
+
+ return oneByteRead(ADXL345_INT_SOURCE_REG);
+
+}
+
+int ADXL345::getDataFormatControl(void){
+
+ return oneByteRead(ADXL345_DATA_FORMAT_REG);
+
+}
+
+void ADXL345::setDataFormatControl(int settings){
+
+ oneByteWrite(ADXL345_DATA_FORMAT_REG, settings);
+
+}
+
+void ADXL345::setDataRate(int rate) {
+
+ //Get the current register contents, so we don't clobber the power bit.
+ char registerContents = oneByteRead(ADXL345_BW_RATE_REG);
+
+ registerContents &= 0x10;
+ registerContents |= rate;
+
+ oneByteWrite(ADXL345_BW_RATE_REG, registerContents);
+
+}
+
+void ADXL345::getOutput(int* readings){
+
+ char buffer[6];
+
+ multiByteRead(ADXL345_DATAX0_REG, buffer, 6);
+
+ readings[0] = (int)buffer[1] << 8 | (int)buffer[0];
+ readings[1] = (int)buffer[3] << 8 | (int)buffer[2];
+ readings[2] = (int)buffer[5] << 8 | (int)buffer[4];
+
+}
+
+int ADXL345::getFifoControl(void){
+
+ return oneByteRead(ADXL345_FIFO_CTL);
+
+}
+
+void ADXL345::setFifoControl(int settings){
+
+ oneByteWrite(ADXL345_FIFO_STATUS, settings);
+
+}
+
+int ADXL345::getFifoStatus(void){
+
+ return oneByteRead(ADXL345_FIFO_STATUS);
+
+}
+
+int ADXL345::oneByteRead(int address) {
+
+ int tx = (ADXL345_SPI_READ | (address & 0x3F));
+ int rx = 0;
+
+ nCS_ = 0;
+ //Send address to read from.
+ spi_.write(tx);
+ //Read back contents of address.
+ rx = spi_.write(0x00);
+ nCS_ = 1;
+
+ return rx;
+
+}
+
+void ADXL345::oneByteWrite(int address, char data) {
+
+ int tx = (ADXL345_SPI_WRITE | (address & 0x3F));
+
+ nCS_ = 0;
+ //Send address to write to.
+ spi_.write(tx);
+ //Send data to be written.
+ spi_.write(data);
+ nCS_ = 1;
+
+}
+
+void ADXL345::multiByteRead(int startAddress, char* buffer, int size) {
+
+ int tx = (ADXL345_SPI_READ | ADXL345_MULTI_BYTE | (startAddress & 0x3F));
+
+ nCS_ = 0;
+ //Send address to start reading from.
+ spi_.write(tx);
+
+ for (int i = 0; i < size; i++) {
+ buffer[i] = spi_.write(0x00);
+ }
+
+ nCS_ = 1;
+
+}
+
+void ADXL345::multiByteWrite(int startAddress, char* buffer, int size) {
+
+ int tx = (ADXL345_SPI_WRITE | ADXL345_MULTI_BYTE | (startAddress & 0x3F));
+
+ nCS_ = 0;
+ //Send address to start reading from.
+ spi_.write(tx);
+
+ for (int i = 0; i < size; i++) {
+ buffer[i] = spi_.write(0x00);
+ }
+
+ nCS_ = 1;
+
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/ADXL345/ADXL345.h b/tool/mbed/mbed-sdk/libraries/tests/peripherals/ADXL345/ADXL345.h
new file mode 100644
index 0000000000..af17c5f3e7
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/ADXL345/ADXL345.h
@@ -0,0 +1,537 @@
+/**
+ * @author Aaron Berk
+ *
+ * @section LICENSE
+ *
+ * Copyright (c) 2010 ARM Limited
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @section DESCRIPTION
+ *
+ * ADXL345, triple axis, digital interface, accelerometer.
+ *
+ * Datasheet:
+ *
+ * http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf
+ */
+
+#ifndef ADXL345_H
+#define ADXL345_H
+
+/**
+ * Includes
+ */
+#include "mbed.h"
+
+/**
+ * Defines
+ */
+//Registers.
+#define ADXL345_DEVID_REG 0x00
+#define ADXL345_THRESH_TAP_REG 0x1D
+#define ADXL345_OFSX_REG 0x1E
+#define ADXL345_OFSY_REG 0x1F
+#define ADXL345_OFSZ_REG 0x20
+#define ADXL345_DUR_REG 0x21
+#define ADXL345_LATENT_REG 0x22
+#define ADXL345_WINDOW_REG 0x23
+#define ADXL345_THRESH_ACT_REG 0x24
+#define ADXL345_THRESH_INACT_REG 0x25
+#define ADXL345_TIME_INACT_REG 0x26
+#define ADXL345_ACT_INACT_CTL_REG 0x27
+#define ADXL345_THRESH_FF_REG 0x28
+#define ADXL345_TIME_FF_REG 0x29
+#define ADXL345_TAP_AXES_REG 0x2A
+#define ADXL345_ACT_TAP_STATUS_REG 0x2B
+#define ADXL345_BW_RATE_REG 0x2C
+#define ADXL345_POWER_CTL_REG 0x2D
+#define ADXL345_INT_ENABLE_REG 0x2E
+#define ADXL345_INT_MAP_REG 0x2F
+#define ADXL345_INT_SOURCE_REG 0x30
+#define ADXL345_DATA_FORMAT_REG 0x31
+#define ADXL345_DATAX0_REG 0x32
+#define ADXL345_DATAX1_REG 0x33
+#define ADXL345_DATAY0_REG 0x34
+#define ADXL345_DATAY1_REG 0x35
+#define ADXL345_DATAZ0_REG 0x36
+#define ADXL345_DATAZ1_REG 0x37
+#define ADXL345_FIFO_CTL 0x38
+#define ADXL345_FIFO_STATUS 0x39
+
+//Data rate codes.
+#define ADXL345_3200HZ 0x0F
+#define ADXL345_1600HZ 0x0E
+#define ADXL345_800HZ 0x0D
+#define ADXL345_400HZ 0x0C
+#define ADXL345_200HZ 0x0B
+#define ADXL345_100HZ 0x0A
+#define ADXL345_50HZ 0x09
+#define ADXL345_25HZ 0x08
+#define ADXL345_12HZ5 0x07
+#define ADXL345_6HZ25 0x06
+
+#define ADXL345_SPI_READ 0x80
+#define ADXL345_SPI_WRITE 0x00
+#define ADXL345_MULTI_BYTE 0x60
+
+#define ADXL345_X 0x00
+#define ADXL345_Y 0x01
+#define ADXL345_Z 0x02
+
+/**
+ * ADXL345 triple axis, digital interface, accelerometer.
+ */
+class ADXL345 {
+
+public:
+
+ /**
+ * Constructor.
+ *
+ * @param mosi mbed pin to use for MOSI line of SPI interface.
+ * @param miso mbed pin to use for MISO line of SPI interface.
+ * @param sck mbed pin to use for SCK line of SPI interface.
+ * @param cs mbed pin to use for not chip select line of SPI interface.
+ */
+ ADXL345(PinName mosi, PinName miso, PinName sck, PinName cs);
+
+ /**
+ * Read the device ID register on the device.
+ *
+ * @return The device ID code [0xE5]
+ */
+ int getDevId(void);
+
+ /**
+ * Read the tap threshold on the device.
+ *
+ * @return The tap threshold as an 8-bit number with a scale factor of
+ * 62.5mg/LSB.
+ */
+ int getTapThreshold(void);
+
+ /**
+ * Set the tap threshold.
+ *
+ * @param The tap threshold as an 8-bit number with a scale factor of
+ * 62.5mg/LSB.
+ */
+ void setTapThreshold(int threshold);
+
+ /**
+ * Get the current offset for a particular axis.
+ *
+ * @param axis 0x00 -> X-axis
+ * 0x01 -> Y-axis
+ * 0x02 -> Z-axis
+ * @return The current offset as an 8-bit 2's complement number with scale
+ * factor 15.6mg/LSB.
+ */
+ int getOffset(int axis);
+
+ /**
+ * Set the offset for a particular axis.
+ *
+ * @param axis 0x00 -> X-axis
+ * 0x01 -> Y-axis
+ * 0x02 -> Z-axis
+ * @param offset The offset as an 8-bit 2's complement number with scale
+ * factor 15.6mg/LSB.
+ */
+ void setOffset(int axis, char offset);
+
+ /**
+ * Get the tap duration required to trigger an event.
+ *
+ * @return The max time that an event must be above the tap threshold to
+ * qualify as a tap event, in microseconds.
+ */
+ int getTapDuration(void);
+
+ /**
+ * Set the tap duration required to trigger an event.
+ *
+ * @param duration_us The max time that an event must be above the tap
+ * threshold to qualify as a tap event, in microseconds.
+ * Time will be normalized by the scale factor which is
+ * 625us/LSB. A value of 0 disables the single/double
+ * tap functions.
+ */
+ void setTapDuration(int duration_us);
+
+ /**
+ * Get the tap latency between the detection of a tap and the time window.
+ *
+ * @return The wait time from the detection of a tap event to the start of
+ * the time window during which a possible second tap event can be
+ * detected in milliseconds.
+ */
+ float getTapLatency(void);
+
+ /**
+ * Set the tap latency between the detection of a tap and the time window.
+ *
+ * @param latency_ms The wait time from the detection of a tap event to the
+ * start of the time window during which a possible
+ * second tap event can be detected in milliseconds.
+ * A value of 0 disables the double tap function.
+ */
+ void setTapLatency(int latency_ms);
+
+ /**
+ * Get the time of window between tap latency and a double tap.
+ *
+ * @return The amount of time after the expiration of the latency time
+ * during which a second valid tap can begin, in milliseconds.
+ */
+ float getWindowTime(void);
+
+ /**
+ * Set the time of the window between tap latency and a double tap.
+ *
+ * @param window_ms The amount of time after the expiration of the latency
+ * time during which a second valid tap can begin,
+ * in milliseconds.
+ */
+ void setWindowTime(int window_ms);
+
+ /**
+ * Get the threshold value for detecting activity.
+ *
+ * @return The threshold value for detecting activity as an 8-bit number.
+ * Scale factor is 62.5mg/LSB.
+ */
+ int getActivityThreshold(void);
+
+ /**
+ * Set the threshold value for detecting activity.
+ *
+ * @param threshold The threshold value for detecting activity as an 8-bit
+ * number. Scale factor is 62.5mg/LSB. A value of 0 may
+ * result in undesirable behavior if the activity
+ * interrupt is enabled.
+ */
+ void setActivityThreshold(int threshold);
+
+ /**
+ * Get the threshold value for detecting inactivity.
+ *
+ * @return The threshold value for detecting inactivity as an 8-bit number.
+ * Scale factor is 62.5mg/LSB.
+ */
+ int getInactivityThreshold(void);
+
+ /**
+ * Set the threshold value for detecting inactivity.
+ *
+ * @param threshold The threshold value for detecting inactivity as an
+ * 8-bit number. Scale factor is 62.5mg/LSB.
+ */
+ void setInactivityThreshold(int threshold);
+
+ /**
+ * Get the time required for inactivity to be declared.
+ *
+ * @return The amount of time that acceleration must be less than the
+ * inactivity threshold for inactivity to be declared, in
+ * seconds.
+ */
+ int getTimeInactivity(void);
+
+ /**
+ * Set the time required for inactivity to be declared.
+ *
+ * @param inactivity The amount of time that acceleration must be less than
+ * the inactivity threshold for inactivity to be
+ * declared, in seconds. A value of 0 results in an
+ * interrupt when the output data is less than the
+ * threshold inactivity.
+ */
+ void setTimeInactivity(int timeInactivity);
+
+ /**
+ * Get the activity/inactivity control settings.
+ *
+ * D7 D6 D5 D4
+ * +-----------+--------------+--------------+--------------+
+ * | ACT ac/dc | ACT_X enable | ACT_Y enable | ACT_Z enable |
+ * +-----------+--------------+--------------+--------------+
+ *
+ * D3 D2 D1 D0
+ * +-------------+----------------+----------------+----------------+
+ * | INACT ac/dc | INACT_X enable | INACT_Y enable | INACT_Z enable |
+ * +-------------+----------------+----------------+----------------+
+ *
+ * See datasheet for details.
+ *
+ * @return The contents of the ACT_INACT_CTL register.
+ */
+ int getActivityInactivityControl(void);
+
+ /**
+ * Set the activity/inactivity control settings.
+ *
+ * D7 D6 D5 D4
+ * +-----------+--------------+--------------+--------------+
+ * | ACT ac/dc | ACT_X enable | ACT_Y enable | ACT_Z enable |
+ * +-----------+--------------+--------------+--------------+
+ *
+ * D3 D2 D1 D0
+ * +-------------+----------------+----------------+----------------+
+ * | INACT ac/dc | INACT_X enable | INACT_Y enable | INACT_Z enable |
+ * +-------------+----------------+----------------+----------------+
+ *
+ * See datasheet for details.
+ *
+ * @param settings The control byte to write to the ACT_INACT_CTL register.
+ */
+ void setActivityInactivityControl(int settings);
+
+ /**
+ * Get the threshold for free fall detection.
+ *
+ * @return The threshold value for free-fall detection, as an 8-bit number,
+ * with scale factor 62.5mg/LSB.
+ */
+ int getFreefallThreshold(void);
+
+ /**
+ * Set the threshold for free fall detection.
+ *
+ * @return The threshold value for free-fall detection, as an 8-bit number,
+ * with scale factor 62.5mg/LSB. A value of 0 may result in
+ * undesirable behavior if the free-fall interrupt is enabled.
+ * Values between 300 mg and 600 mg (0x05 to 0x09) are recommended.
+ */
+ void setFreefallThreshold(int threshold);
+
+ /**
+ * Get the time required to generate a free fall interrupt.
+ *
+ * @return The minimum time that the value of all axes must be less than
+ * the freefall threshold to generate a free-fall interrupt, in
+ * milliseconds.
+ */
+ int getFreefallTime(void);
+
+ /**
+ * Set the time required to generate a free fall interrupt.
+ *
+ * @return The minimum time that the value of all axes must be less than
+ * the freefall threshold to generate a free-fall interrupt, in
+ * milliseconds. A value of 0 may result in undesirable behavior
+ * if the free-fall interrupt is enabled. Values between 100 ms
+ * and 350 ms (0x14 to 0x46) are recommended.
+ */
+ void setFreefallTime(int freefallTime_ms);
+
+ /**
+ * Get the axis tap settings.
+ *
+ * D3 D2 D1 D0
+ * +----------+--------------+--------------+--------------+
+ * | Suppress | TAP_X enable | TAP_Y enable | TAP_Z enable |
+ * +----------+--------------+--------------+--------------+
+ *
+ * (D7-D4 are 0s).
+ *
+ * See datasheet for more details.
+ *
+ * @return The contents of the TAP_AXES register.
+ */
+ int getTapAxisControl(void);
+
+ /**
+ * Set the axis tap settings.
+ *
+ * D3 D2 D1 D0
+ * +----------+--------------+--------------+--------------+
+ * | Suppress | TAP_X enable | TAP_Y enable | TAP_Z enable |
+ * +----------+--------------+--------------+--------------+
+ *
+ * (D7-D4 are 0s).
+ *
+ * See datasheet for more details.
+ *
+ * @param The control byte to write to the TAP_AXES register.
+ */
+ void setTapAxisControl(int settings);
+
+ /**
+ * Get the source of a tap.
+ *
+ * @return The contents of the ACT_TAP_STATUS register.
+ */
+ int getTapSource(void);
+
+ /**
+ * Set the power mode.
+ *
+ * @param mode 0 -> Normal operation.
+ * 1 -> Reduced power operation.
+ */
+ void setPowerMode(char mode);
+
+ /**
+ * Set the data rate.
+ *
+ * @param rate The rate code (see #defines or datasheet).
+ */
+ void setDataRate(int rate);
+
+ /**
+ * Get the power control settings.
+ *
+ * See datasheet for details.
+ *
+ * @return The contents of the POWER_CTL register.
+ */
+ int getPowerControl(void);
+
+ /**
+ * Set the power control settings.
+ *
+ * See datasheet for details.
+ *
+ * @param The control byte to write to the POWER_CTL register.
+ */
+ void setPowerControl(int settings);
+
+ /**
+ * Get the interrupt enable settings.
+ *
+ * @return The contents of the INT_ENABLE register.
+ */
+ int getInterruptEnableControl(void);
+
+ /**
+ * Set the interrupt enable settings.
+ *
+ * @param settings The control byte to write to the INT_ENABLE register.
+ */
+ void setInterruptEnableControl(int settings);
+
+ /**
+ * Get the interrupt mapping settings.
+ *
+ * @return The contents of the INT_MAP register.
+ */
+ int getInterruptMappingControl(void);
+
+ /**
+ * Set the interrupt mapping settings.
+ *
+ * @param settings The control byte to write to the INT_MAP register.
+ */
+ void setInterruptMappingControl(int settings);
+
+ /**
+ * Get the interrupt source.
+ *
+ * @return The contents of the INT_SOURCE register.
+ */
+ int getInterruptSource(void);
+
+ /**
+ * Get the data format settings.
+ *
+ * @return The contents of the DATA_FORMAT register.
+ */
+ int getDataFormatControl(void);
+
+ /**
+ * Set the data format settings.
+ *
+ * @param settings The control byte to write to the DATA_FORMAT register.
+ */
+ void setDataFormatControl(int settings);
+
+ /**
+ * Get the output of all three axes.
+ *
+ * @param Pointer to a buffer to hold the accelerometer value for the
+ * x-axis, y-axis and z-axis [in that order].
+ */
+ void getOutput(int* readings);
+
+ /**
+ * Get the FIFO control settings.
+ *
+ * @return The contents of the FIFO_CTL register.
+ */
+ int getFifoControl(void);
+
+ /**
+ * Set the FIFO control settings.
+ *
+ * @param The control byte to write to the FIFO_CTL register.
+ */
+ void setFifoControl(int settings);
+
+ /**
+ * Get FIFO status.
+ *
+ * @return The contents of the FIFO_STATUS register.
+ */
+ int getFifoStatus(void);
+
+private:
+
+ SPI spi_;
+ DigitalOut nCS_;
+
+ /**
+ * Read one byte from a register on the device.
+ *
+ * @param address Address of the register to read.
+ *
+ * @return The contents of the register address.
+ */
+ int oneByteRead(int address);
+
+ /**
+ * Write one byte to a register on the device.
+ *
+ * @param address Address of the register to write to.
+ * @param data The data to write into the register.
+ */
+ void oneByteWrite(int address, char data);
+
+ /**
+ * Read several consecutive bytes on the device.
+ *
+ * @param startAddress The address of the first register to read from.
+ * @param buffer Pointer to a buffer to store data read from the device.
+ * @param size The number of bytes to read.
+ */
+ void multiByteRead(int startAddress, char* buffer, int size);
+
+ /**
+ * Write several consecutive bytes on the device.
+ *
+ * @param startAddress The address of the first register to write to.
+ * @param buffer Pointer to a buffer which contains the data to write.
+ * @param size The number of bytes to write.
+ */
+ void multiByteWrite(int startAddress, char* buffer, int size);
+
+};
+
+#endif /* ADXL345_H */
diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/AX12/AX12.cpp b/tool/mbed/mbed-sdk/libraries/tests/peripherals/AX12/AX12.cpp
new file mode 100644
index 0000000000..ff578ec907
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/AX12/AX12.cpp
@@ -0,0 +1,534 @@
+/* mbed AX-12+ Servo Library
+ *
+ * Copyright (c) 2010, cstyles (http://mbed.org)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#include "AX12.h"
+#include "mbed.h"
+
+AX12::AX12(PinName tx, PinName rx, int ID, int baud)
+ : _ax12(tx,rx) {
+ _baud = baud;
+ _ID = ID;
+ _ax12.baud(_baud);
+
+}
+
+// Set the mode of the servo
+// 0 = Positional (0-300 degrees)
+// 1 = Rotational -1 to 1 speed
+int AX12::SetMode(int mode) {
+
+ if (mode == 1) { // set CR
+ SetCWLimit(0);
+ SetCCWLimit(0);
+ SetCRSpeed(0.0);
+ } else {
+ SetCWLimit(0);
+ SetCCWLimit(300);
+ SetCRSpeed(0.0);
+ }
+ return(0);
+}
+
+
+// if flag[0] is set, were blocking
+// if flag[1] is set, we're registering
+// they are mutually exclusive operations
+int AX12::SetGoal(int degrees, int flags) {
+
+ char reg_flag = 0;
+ char data[2];
+
+ // set the flag is only the register bit is set in the flag
+ if (flags == 0x2) {
+ reg_flag = 1;
+ }
+
+ // 1023 / 300 * degrees
+ short goal = (1023 * degrees) / 300;
+#ifdef AX12_DEBUG
+ printf("SetGoal to 0x%x\n",goal);
+#endif
+
+ data[0] = goal & 0xff; // bottom 8 bits
+ data[1] = goal >> 8; // top 8 bits
+
+ // write the packet, return the error code
+ int rVal = write(_ID, AX12_REG_GOAL_POSITION, 2, data, reg_flag);
+
+ if (flags == 1) {
+ // block until it comes to a halt
+ while (isMoving()) {}
+ }
+ return(rVal);
+}
+
+
+// Set continuous rotation speed from -1 to 1
+int AX12::SetCRSpeed(float speed) {
+
+ // bit 10 = direction, 0 = CCW, 1=CW
+ // bits 9-0 = Speed
+ char data[2];
+
+ int goal = (0x3ff * abs(speed));
+
+ // Set direction CW if we have a negative speed
+ if (speed < 0) {
+ goal |= (0x1 << 10);
+ }
+
+ data[0] = goal & 0xff; // bottom 8 bits
+ data[1] = goal >> 8; // top 8 bits
+
+ // write the packet, return the error code
+ int rVal = write(_ID, 0x20, 2, data);
+
+ return(rVal);
+}
+
+
+int AX12::SetCWLimit (int degrees) {
+
+ char data[2];
+
+ // 1023 / 300 * degrees
+ short limit = (1023 * degrees) / 300;
+
+#ifdef AX12_DEBUG
+ printf("SetCWLimit to 0x%x\n",limit);
+#endif
+
+ data[0] = limit & 0xff; // bottom 8 bits
+ data[1] = limit >> 8; // top 8 bits
+
+ // write the packet, return the error code
+ return (write(_ID, AX12_REG_CW_LIMIT, 2, data));
+
+}
+
+int AX12::SetCCWLimit (int degrees) {
+
+ char data[2];
+
+ // 1023 / 300 * degrees
+ short limit = (1023 * degrees) / 300;
+
+#ifdef AX12_DEBUG
+ printf("SetCCWLimit to 0x%x\n",limit);
+#endif
+
+ data[0] = limit & 0xff; // bottom 8 bits
+ data[1] = limit >> 8; // top 8 bits
+
+ // write the packet, return the error code
+ return (write(_ID, AX12_REG_CCW_LIMIT, 2, data));
+}
+
+
+int AX12::SetID (int CurrentID, int NewID) {
+
+ char data[1];
+ data[0] = NewID;
+
+#ifdef AX12_DEBUG
+ printf("Setting ID from 0x%x to 0x%x\n",CurrentID,NewID);
+#endif
+
+ return (write(CurrentID, AX12_REG_ID, 1, data));
+
+}
+
+
+int AX12::SetBaud (int baud) {
+
+ char data[1];
+ data[0] = baud;
+
+#ifdef AX12_DEBUG
+ printf("Setting Baud rate to %d\n",baud);
+#endif
+
+ return (write(0xFE, AX12_REG_BAUD, 1, data));
+
+}
+
+
+
+// return 1 is the servo is still in flight
+int AX12::isMoving(void) {
+
+ char data[1];
+ read(_ID,AX12_REG_MOVING,1,data);
+ return(data[0]);
+}
+
+
+void AX12::trigger(void) {
+
+ char TxBuf[16];
+ char sum = 0;
+
+#ifdef AX12_TRIGGER_DEBUG
+ // Build the TxPacket first in RAM, then we'll send in one go
+ printf("\nTriggered\n");
+ printf("\nTrigger Packet\n Header : 0xFF, 0xFF\n");
+#endif
+
+ TxBuf[0] = 0xFF;
+ TxBuf[1] = 0xFF;
+
+ // ID - Broadcast
+ TxBuf[2] = 0xFE;
+ sum += TxBuf[2];
+
+#ifdef AX12_TRIGGER_DEBUG
+ printf(" ID : %d\n",TxBuf[2]);
+#endif
+
+ // Length
+ TxBuf[3] = 0x02;
+ sum += TxBuf[3];
+
+#ifdef AX12_TRIGGER_DEBUG
+ printf(" Length %d\n",TxBuf[3]);
+#endif
+
+ // Instruction - ACTION
+ TxBuf[4] = 0x04;
+ sum += TxBuf[4];
+
+#ifdef AX12_TRIGGER_DEBUG
+ printf(" Instruction 0x%X\n",TxBuf[5]);
+#endif
+
+ // Checksum
+ TxBuf[5] = 0xFF - sum;
+#ifdef AX12_TRIGGER_DEBUG
+ printf(" Checksum 0x%X\n",TxBuf[5]);
+#endif
+
+ // Transmit the packet in one burst with no pausing
+ for (int i = 0; i < 6 ; i++) {
+ _ax12.putc(TxBuf[i]);
+ }
+
+ // This is a broadcast packet, so there will be no reply
+ return;
+}
+
+
+float AX12::GetPosition(void) {
+
+#ifdef AX12_DEBUG
+ printf("\nGetPosition(%d)",_ID);
+#endif
+
+ char data[2];
+
+ int ErrorCode = read(_ID, AX12_REG_POSITION, 2, data);
+ short position = data[0] + (data[1] << 8);
+ float angle = (position * 300)/1024;
+
+ return (angle);
+}
+
+
+float AX12::GetTemp (void) {
+
+#ifdef AX12_DEBUG
+ printf("\nGetTemp(%d)",_ID);
+#endif
+
+ char data[1];
+ int ErrorCode = read(_ID, AX12_REG_TEMP, 1, data);
+ float temp = data[0];
+ return(temp);
+}
+
+
+float AX12::GetVolts (void) {
+
+#ifdef AX12_DEBUG
+ printf("\nGetVolts(%d)",_ID);
+#endif
+
+ char data[1];
+ int ErrorCode = read(_ID, AX12_REG_VOLTS, 1, data);
+ float volts = data[0]/10.0;
+ return(volts);
+}
+
+
+int AX12::read(int ID, int start, int bytes, char* data) {
+
+ char PacketLength = 0x4;
+ char TxBuf[16];
+ char sum = 0;
+ char Status[16];
+
+ Status[4] = 0xFE; // return code
+
+#ifdef AX12_READ_DEBUG
+ printf("\nread(%d,0x%x,%d,data)\n",ID,start,bytes);
+#endif
+
+ // Build the TxPacket first in RAM, then we'll send in one go
+#ifdef AX12_READ_DEBUG
+ printf("\nInstruction Packet\n Header : 0xFF, 0xFF\n");
+#endif
+
+ TxBuf[0] = 0xff;
+ TxBuf[1] = 0xff;
+
+ // ID
+ TxBuf[2] = ID;
+ sum += TxBuf[2];
+
+#ifdef AX12_READ_DEBUG
+ printf(" ID : %d\n",TxBuf[2]);
+#endif
+
+ // Packet Length
+ TxBuf[3] = PacketLength; // Length = 4 ; 2 + 1 (start) = 1 (bytes)
+ sum += TxBuf[3]; // Accululate the packet sum
+
+#ifdef AX12_READ_DEBUG
+ printf(" Length : 0x%x\n",TxBuf[3]);
+#endif
+
+ // Instruction - Read
+ TxBuf[4] = 0x2;
+ sum += TxBuf[4];
+
+#ifdef AX12_READ_DEBUG
+ printf(" Instruction : 0x%x\n",TxBuf[4]);
+#endif
+
+ // Start Address
+ TxBuf[5] = start;
+ sum += TxBuf[5];
+
+#ifdef AX12_READ_DEBUG
+ printf(" Start Address : 0x%x\n",TxBuf[5]);
+#endif
+
+ // Bytes to read
+ TxBuf[6] = bytes;
+ sum += TxBuf[6];
+
+#ifdef AX12_READ_DEBUG
+ printf(" No bytes : 0x%x\n",TxBuf[6]);
+#endif
+
+ // Checksum
+ TxBuf[7] = 0xFF - sum;
+#ifdef AX12_READ_DEBUG
+ printf(" Checksum : 0x%x\n",TxBuf[7]);
+#endif
+
+ // Transmit the packet in one burst with no pausing
+ for (int i = 0; i<8 ; i++) {
+ _ax12.putc(TxBuf[i]);
+ }
+
+ // Wait for the bytes to be transmitted
+ wait (0.00002);
+
+ // Skip if the read was to the broadcast address
+ if (_ID != 0xFE) {
+
+
+
+ // response packet is always 6 + bytes
+ // 0xFF, 0xFF, ID, Length Error, Param(s) Checksum
+ // timeout is a little more than the time to transmit
+ // the packet back, i.e. (6+bytes)*10 bit periods
+
+ int timeout = 0;
+ int plen = 0;
+ while ((timeout < ((6+bytes)*10)) && (plen<(6+bytes))) {
+
+ if (_ax12.readable()) {
+ Status[plen] = _ax12.getc();
+ plen++;
+ timeout = 0;
+ }
+
+ // wait for the bit period
+ wait (1.0/_baud);
+ timeout++;
+ }
+
+ if (timeout == ((6+bytes)*10) ) {
+ return(-1);
+ }
+
+ // Copy the data from Status into data for return
+ for (int i=0; i < Status[3]-2 ; i++) {
+ data[i] = Status[5+i];
+ }
+
+#ifdef AX12_READ_DEBUG
+ printf("\nStatus Packet\n");
+ printf(" Header : 0x%x\n",Status[0]);
+ printf(" Header : 0x%x\n",Status[1]);
+ printf(" ID : 0x%x\n",Status[2]);
+ printf(" Length : 0x%x\n",Status[3]);
+ printf(" Error Code : 0x%x\n",Status[4]);
+
+ for (int i=0; i < Status[3]-2 ; i++) {
+ printf(" Data : 0x%x\n",Status[5+i]);
+ }
+
+ printf(" Checksum : 0x%x\n",Status[5+(Status[3]-2)]);
+#endif
+
+ } // if (ID!=0xFE)
+
+ return(Status[4]);
+}
+
+
+int AX12::write(int ID, int start, int bytes, char* data, int flag) {
+// 0xff, 0xff, ID, Length, Intruction(write), Address, Param(s), Checksum
+
+ char TxBuf[16];
+ char sum = 0;
+ char Status[6];
+
+#ifdef AX12_WRITE_DEBUG
+ printf("\nwrite(%d,0x%x,%d,data,%d)\n",ID,start,bytes,flag);
+#endif
+
+ // Build the TxPacket first in RAM, then we'll send in one go
+#ifdef AX12_WRITE_DEBUG
+ printf("\nInstruction Packet\n Header : 0xFF, 0xFF\n");
+#endif
+
+ TxBuf[0] = 0xff;
+ TxBuf[1] = 0xff;
+
+ // ID
+ TxBuf[2] = ID;
+ sum += TxBuf[2];
+
+#ifdef AX12_WRITE_DEBUG
+ printf(" ID : %d\n",TxBuf[2]);
+#endif
+
+ // packet Length
+ TxBuf[3] = 3+bytes;
+ sum += TxBuf[3];
+
+#ifdef AX12_WRITE_DEBUG
+ printf(" Length : %d\n",TxBuf[3]);
+#endif
+
+ // Instruction
+ if (flag == 1) {
+ TxBuf[4]=0x04;
+ sum += TxBuf[4];
+ } else {
+ TxBuf[4]=0x03;
+ sum += TxBuf[4];
+ }
+
+#ifdef AX12_WRITE_DEBUG
+ printf(" Instruction : 0x%x\n",TxBuf[4]);
+#endif
+
+ // Start Address
+ TxBuf[5] = start;
+ sum += TxBuf[5];
+
+#ifdef AX12_WRITE_DEBUG
+ printf(" Start : 0x%x\n",TxBuf[5]);
+#endif
+
+ // data
+ for (char i=0; i<bytes ; i++) {
+ TxBuf[6+i] = data[i];
+ sum += TxBuf[6+i];
+
+#ifdef AX12_WRITE_DEBUG
+ printf(" Data : 0x%x\n",TxBuf[6+i]);
+#endif
+
+ }
+
+ // checksum
+ TxBuf[6+bytes] = 0xFF - sum;
+
+#ifdef AX12_WRITE_DEBUG
+ printf(" Checksum : 0x%x\n",TxBuf[6+bytes]);
+#endif
+
+ // Transmit the packet in one burst with no pausing
+ for (int i = 0; i < (7 + bytes) ; i++) {
+ _ax12.putc(TxBuf[i]);
+ }
+
+ // Wait for data to transmit
+ wait (0.00002);
+
+ // make sure we have a valid return
+ Status[4]=0x00;
+
+ // we'll only get a reply if it was not broadcast
+ if (_ID!=0xFE) {
+
+
+ // response packet is always 6 bytes
+ // 0xFF, 0xFF, ID, Length Error, Param(s) Checksum
+ // timeout is a little more than the time to transmit
+ // the packet back, i.e. 60 bit periods, round up to 100
+ int timeout = 0;
+ int plen = 0;
+ while ((timeout < 100) && (plen<6)) {
+
+ if (_ax12.readable()) {
+ Status[plen] = _ax12.getc();
+ plen++;
+ timeout = 0;
+ }
+
+ // wait for the bit period
+ wait (1.0/_baud);
+ timeout++;
+ }
+
+
+ // Build the TxPacket first in RAM, then we'll send in one go
+#ifdef AX12_WRITE_DEBUG
+ printf("\nStatus Packet\n Header : 0x%X, 0x%X\n",Status[0],Status[1]);
+ printf(" ID : %d\n",Status[2]);
+ printf(" Length : %d\n",Status[3]);
+ printf(" Error : 0x%x\n",Status[4]);
+ printf(" Checksum : 0x%x\n",Status[5]);
+#endif
+
+
+ }
+
+ return(Status[4]); // return error code
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/AX12/AX12.h b/tool/mbed/mbed-sdk/libraries/tests/peripherals/AX12/AX12.h
new file mode 100644
index 0000000000..d1b3b42aef
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/AX12/AX12.h
@@ -0,0 +1,190 @@
+/* mbed AX-12+ Servo Library
+ *
+ * Copyright (c) 2010, cstyles (http://mbed.org)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef MBED_AX12_H
+#define MBED_AX12_H
+
+#include "mbed.h"
+
+#define AX12_WRITE_DEBUG 1
+#define AX12_READ_DEBUG 1
+#define AX12_TRIGGER_DEBUG 1
+#define AX12_DEBUG 1
+
+#define AX12_REG_ID 0x3
+#define AX12_REG_BAUD 0x4
+#define AX12_REG_CW_LIMIT 0x06
+#define AX12_REG_CCW_LIMIT 0x08
+#define AX12_REG_GOAL_POSITION 0x1E
+#define AX12_REG_MOVING_SPEED 0x20
+#define AX12_REG_VOLTS 0x2A
+#define AX12_REG_TEMP 0x2B
+#define AX12_REG_MOVING 0x2E
+#define AX12_REG_POSITION 0x24
+
+#define AX12_MODE_POSITION 0
+#define AX12_MODE_ROTATION 1
+
+#define AX12_CW 1
+#define AX12_CCW 0
+
+/** Servo control class, based on a PwmOut
+ *
+ * Example:
+ * @code
+ * #include "mbed.h"
+ * #include "AX12.h"
+ *
+ * int main() {
+ *
+ * AX12 myax12 (p9, p10, 1);
+ *
+ * while (1) {
+ * myax12.SetGoal(0); // go to 0 degrees
+ * wait (2.0);
+ * myax12.SetGoal(300); // go to 300 degrees
+ * wait (2.0);
+ * }
+ * }
+ * @endcode
+ */
+class AX12 {
+
+public:
+
+ /** Create an AX12 servo object connected to the specified serial port, with the specified ID
+ *
+ * @param pin tx pin
+ * @param pin rx pin
+ * @param int ID, the Bus ID of the servo 1-255
+ */
+ AX12(PinName tx, PinName rx, int ID, int baud=1000000);
+
+ /** Set the mode of the servo
+ * @param mode
+ * 0 = Positional, default
+ * 1 = Continuous rotation
+ */
+ int SetMode(int mode);
+
+ /** Set baud rate of all attached servos
+ * @param mode
+ * 0x01 = 1,000,000 bps
+ * 0x03 = 500,000 bps
+ * 0x04 = 400,000 bps
+ * 0x07 = 250,000 bps
+ * 0x09 = 200,000 bps
+ * 0x10 = 115,200 bps
+ * 0x22 = 57,600 bps
+ * 0x67 = 19,200 bps
+ * 0xCF = 9,600 bp
+ */
+ int SetBaud(int baud);
+
+
+ /** Set goal angle in integer degrees, in positional mode
+ *
+ * @param degrees 0-300
+ * @param flags, defaults to 0
+ * flags[0] = blocking, return when goal position reached
+ * flags[1] = register, activate with a broadcast trigger
+ *
+ */
+ int SetGoal(int degrees, int flags = 0);
+
+
+ /** Set the speed of the servo in continuous rotation mode
+ *
+ * @param speed, -1.0 to 1.0
+ * -1.0 = full speed counter clock wise
+ * 1.0 = full speed clock wise
+ */
+ int SetCRSpeed(float speed);
+
+
+ /** Set the clockwise limit of the servo
+ *
+ * @param degrees, 0-300
+ */
+ int SetCWLimit(int degrees);
+
+ /** Set the counter-clockwise limit of the servo
+ *
+ * @param degrees, 0-300
+ */
+ int SetCCWLimit(int degrees);
+
+ // Change the ID
+
+ /** Change the ID of a servo
+ *
+ * @param CurentID 1-255
+ * @param NewID 1-255
+ *
+ * If a servo ID is not know, the broadcast address of 0 can be used for CurrentID.
+ * In this situation, only one servo should be connected to the bus
+ */
+ int SetID(int CurrentID, int NewID);
+
+
+ /** Poll to see if the servo is moving
+ *
+ * @returns true is the servo is moving
+ */
+ int isMoving(void);
+
+ /** Send the broadcast "trigger" command, to activate any outstanding registered commands
+ */
+ void trigger(void);
+
+ /** Read the current angle of the servo
+ *
+ * @returns float in the range 0.0-300.0
+ */
+ float GetPosition();
+
+ /** Read the temperature of the servo
+ *
+ * @returns float temperature
+ */
+ float GetTemp(void);
+
+ /** Read the supply voltage of the servo
+ *
+ * @returns float voltage
+ */
+ float GetVolts(void);
+
+ int read(int ID, int start, int length, char* data);
+ int write(int ID, int start, int length, char* data, int flag=0);
+
+private :
+
+ SerialHalfDuplex _ax12;
+ int _ID;
+ int _baud;
+
+
+};
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA7660/MMA7660.cpp b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA7660/MMA7660.cpp
new file mode 100644
index 0000000000..ff2bcd876d
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA7660/MMA7660.cpp
@@ -0,0 +1,193 @@
+#include "MMA7660.h"
+
+MMA7660::MMA7660(PinName sda, PinName scl, bool active) : _i2c(sda, scl)
+{
+ setActive(active);
+ samplerate = 64;
+
+}
+
+//Since the MMA lacks a WHO_AM_I register, we can only check if there is a device that answers to the I2C address
+bool MMA7660::testConnection( void )
+{
+ if (_i2c.write(MMA7660_ADDRESS, NULL, 0) == 0 )
+ return true;
+ else
+ return false;
+}
+
+void MMA7660::setActive(bool state)
+{
+ char modereg = read(MMA7660_MODE_R);
+ modereg &= ~(1<<0);
+
+ //If it somehow was in testmode, disable that
+ if (modereg && (1<<2)) {
+ modereg &= ~(1<<2);
+ write(MMA7660_MODE_R, modereg);
+ }
+
+ modereg += state;
+ write(MMA7660_MODE_R, modereg);
+}
+
+void MMA7660::readData(int *data)
+{
+ if (!active) {
+ setActive(true);
+ active = true;
+ wait(0.012 + 1/samplerate); //Wait until new sample is ready, my experience is that 1/samplerate isnt needed, but datasheet says so
+ }
+
+ char temp[3];
+ bool alert;
+
+ do {
+ alert = false;
+ read(MMA7660_XOUT_R, temp, 3);
+ for (int i = 0; i<3; i++) {
+ if (temp[i] > 63)
+ alert = true;
+ if (temp[i] > 31)
+ temp[i] += 128+64;
+ data[i] = (signed char)temp[i];
+ }
+ } while (alert);
+
+ if (!active)
+ setActive(false);
+}
+
+
+void MMA7660::readData(float *data)
+{
+ int intdata[3];
+ readData(intdata);
+ for (int i = 0; i<3; i++)
+ data[i] = intdata[i]/MMA7660_SENSITIVITY;
+}
+
+float MMA7660::x( void )
+{
+ return getSingle(0);
+}
+
+float MMA7660::y( void )
+{
+ return getSingle(1);
+}
+
+float MMA7660::z( void )
+{
+ return getSingle(2);
+}
+
+
+void MMA7660::setSampleRate(int samplerate)
+{
+ setActive(false); //Not allowed to be active to change anything
+ int rates[] = {120, 64, 32, 16, 8, 4, 2, 1}; //Alowed samplerates (and their number in array is also number required for MMA)
+ int sampleLoc = 0, sampleError = 10000, temp;
+ for (int i = 0; i<8; i++) {
+ temp = abs( rates[i] - samplerate );
+ if (temp<sampleError) {
+ sampleLoc = i;
+ sampleError=temp;
+ }
+ }
+
+ //Update the samplerate reg
+ temp = read(MMA7660_SR_R);
+ temp &= ~0x07; //Awake sample rate are lowest 3 bit
+ temp |= sampleLoc;
+ write(MMA7660_SR_R, temp);
+ this->samplerate = rates[sampleLoc];
+ setActive(active); //Restore previous active state
+}
+
+
+MMA7660::Orientation MMA7660::getSide( void )
+{
+ char tiltreg = read(MMA7660_TILT_R);
+
+ //We care about 2 LSBs
+ tiltreg &= 0x03;
+ if (tiltreg == 0x01)
+ return MMA7660::Front;
+ if (tiltreg == 0x02)
+ return MMA7660::Back;
+ return MMA7660::Unknown;
+}
+
+MMA7660::Orientation MMA7660::getOrientation( void )
+{
+ char tiltreg = read(MMA7660_TILT_R);
+
+ //We care about bit 2, 3 and 4 (counting from zero)
+ tiltreg &= 0x07<<2;
+ tiltreg >>= 2;
+ if (tiltreg == 0x01)
+ return MMA7660::Left;
+ if (tiltreg == 0x02)
+ return MMA7660::Right;
+ if (tiltreg == 0x05)
+ return MMA7660::Down;
+ if (tiltreg == 0x06)
+ return MMA7660::Up;
+ return MMA7660::Unknown;
+}
+
+
+
+//////////////////////////////////////////////
+///////////////PRIVATE////////////////////////
+//////////////////////////////////////////////
+
+
+void MMA7660::write(char address, char data)
+{
+ char temp[2];
+ temp[0]=address;
+ temp[1]=data;
+
+ _i2c.write(MMA7660_ADDRESS, temp, 2);
+}
+
+char MMA7660::read(char address)
+{
+ char retval;
+ _i2c.write(MMA7660_ADDRESS, &address, 1, true);
+ _i2c.read(MMA7660_ADDRESS, &retval, 1);
+ return retval;
+}
+
+void MMA7660::read(char address, char *data, int length)
+{
+ _i2c.write(MMA7660_ADDRESS, &address, 1, true);
+ _i2c.read(MMA7660_ADDRESS, data, length);
+}
+
+float MMA7660::getSingle( int number )
+{
+ if (!active) {
+ setActive(true);
+ wait(0.012 + 1/samplerate); //Wait until new sample is ready
+ }
+
+ signed char temp;
+ bool alert;
+
+ do {
+ alert = false;
+ temp = read(MMA7660_XOUT_R + number);
+ if (temp > 63)
+ alert = true;
+ if (temp > 31)
+ temp += 128+64;
+ } while (alert);
+
+ if (!active)
+ setActive(false);
+
+ return temp / MMA7660_SENSITIVITY;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA7660/MMA7660.h b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA7660/MMA7660.h
new file mode 100644
index 0000000000..80c7ee0c54
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA7660/MMA7660.h
@@ -0,0 +1,207 @@
+/* Copyright (c) <year> <copyright holders>, MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "mbed.h"
+
+
+#ifndef MMA7660_H
+#define MMA7660_H
+
+#define MMA7660_ADDRESS 0x98
+#define MMA7660_SENSITIVITY 21.33
+
+#define MMA7660_XOUT_R 0x00
+#define MMA7660_YOUT_R 0x01
+#define MMA7660_ZOUT_R 0x02
+#define MMA7660_TILT_R 0x03
+#define MMA7660_INT_R 0x06
+#define MMA7660_MODE_R 0x07
+#define MMA7660_SR_R 0x08
+
+
+/** An interface for the MMA7660 triple axis accelerometer
+ *
+ * @code
+ * //Uses the measured z-acceleration to drive leds 2 and 3 of the mbed
+ *
+ * #include "mbed.h"
+ * #include "MMA7660.h"
+ *
+ * MMA7660 MMA(p28, p27);
+ *
+ * DigitalOut connectionLed(LED1);
+ * PwmOut Zaxis_p(LED2);
+ * PwmOut Zaxis_n(LED3);
+ *
+ * int main() {
+ * if (MMA.testConnection())
+ * connectionLed = 1;
+ *
+ * while(1) {
+ * Zaxis_p = MMA.z();
+ * Zaxis_n = -MMA.z();
+ * }
+ *
+ * }
+ * @endcode
+ */
+class MMA7660
+{
+public:
+ /**
+ * The 6 different orientations and unknown
+ *
+ * Up & Down = X-axis
+ * Right & Left = Y-axis
+ * Back & Front = Z-axis
+ *
+ */
+ enum Orientation {Up, Down,
+ Right, Left,
+ Back, Front,
+ Unknown
+ };
+
+ /**
+ * Creates a new MMA7660 object
+ *
+ * @param sda - I2C data pin
+ * @param scl - I2C clock pin
+ * @param active - true (default) to enable the device, false to keep it standby
+ */
+ MMA7660(PinName sda, PinName scl, bool active = true);
+
+ /**
+ * Tests if communication is possible with the MMA7660
+ *
+ * Because the MMA7660 lacks a WHO_AM_I register, this function can only check
+ * if there is an I2C device that responds to the MMA7660 address
+ *
+ * @param return - true for successfull connection, false for no connection
+ */
+ bool testConnection( void );
+
+ /**
+ * Sets the active state of the MMA7660
+ *
+ * Note: This is unrelated to awake/sleep mode
+ *
+ * @param state - true for active, false for standby
+ */
+ void setActive( bool state);
+
+ /**
+ * Reads acceleration data from the sensor
+ *
+ * When the parameter is a pointer to an integer array it will be the raw data.
+ * When it is a pointer to a float array it will be the acceleration in g's
+ *
+ * @param data - pointer to array with length 3 where the acceleration data will be stored, X-Y-Z
+ */
+ void readData( int *data);
+ void readData( float *data);
+
+ /**
+ * Get X-data
+ *
+ * @param return - X-acceleration in g's
+ */
+ float x( void );
+
+ /**
+ * Get Y-data
+ *
+ * @param return - Y-acceleration in g's
+ */
+ float y( void );
+
+ /**
+ * Get Z-data
+ *
+ * @param return - Z-acceleration in g's
+ */
+ float z( void );
+
+ /**
+ * Sets the active samplerate
+ *
+ * The entered samplerate will be rounded to nearest supported samplerate.
+ * Supported samplerates are: 120 - 64 - 32 - 16 - 8 - 4 - 2 - 1 samples/second.
+ *
+ * @param samplerate - the samplerate that will be set
+ */
+ void setSampleRate(int samplerate);
+
+ /**
+ * Returns if it is on its front, back, or unknown side
+ *
+ * This is read from MMA7760s registers, page 12 of datasheet
+ *
+ * @param return - Front, Back or Unknown orientation
+ */
+ Orientation getSide( void );
+
+ /**
+ * Returns if it is on it left, right, down or up side
+ *
+ * This is read from MMA7760s registers, page 12 of datasheet
+ *
+ * @param return - Left, Right, Down, Up or Unknown orientation
+ */
+ Orientation getOrientation ( void );
+
+
+private:
+
+ /**
+ * Writes data to the device
+ *
+ * @param adress - register address to write to
+ * @param data - data to write
+ */
+ void write( char address, char data);
+
+ /**
+ * Read data from the device
+ *
+ * @param adress - register address to write to
+ * @return - data from the register specified by RA
+ */
+ char read( char adress);
+
+ /**
+ * Read multiple regigsters from the device, more efficient than using multiple normal reads.
+ *
+ * @param adress - register address to write to
+ * @param length - number of bytes to read
+ * @param data - pointer where the data needs to be written to
+ */
+ void read( char adress, char *data, int length);
+
+ /**
+ * Reads single axis
+ */
+ float getSingle(int number);
+
+ I2C _i2c;
+ bool active;
+ float samplerate;
+};
+
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA8451Q/MMA8451Q.cpp b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA8451Q/MMA8451Q.cpp
new file mode 100644
index 0000000000..9bdf87af51
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA8451Q/MMA8451Q.cpp
@@ -0,0 +1,81 @@
+/* Copyright (c) 2010-2011 mbed.org, MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+* and associated documentation files (the "Software"), to deal in the Software without
+* restriction, including without limitation the rights to use, copy, modify, merge, publish,
+* distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
+* Software is furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in all copies or
+* substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+* BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "MMA8451Q.h"
+
+#define REG_WHO_AM_I 0x0D
+#define REG_CTRL_REG_1 0x2A
+#define REG_OUT_X_MSB 0x01
+#define REG_OUT_Y_MSB 0x03
+#define REG_OUT_Z_MSB 0x05
+
+#define UINT14_MAX 16383
+
+MMA8451Q::MMA8451Q(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr) {
+ // activate the peripheral
+ uint8_t data[2] = {REG_CTRL_REG_1, 0x01};
+ writeRegs(data, 2);
+}
+
+MMA8451Q::~MMA8451Q() { }
+
+uint8_t MMA8451Q::getWhoAmI() {
+ uint8_t who_am_i = 0;
+ readRegs(REG_WHO_AM_I, &who_am_i, 1);
+ return who_am_i;
+}
+
+int16_t MMA8451Q::getAccX() {
+ return getAccAxis(REG_OUT_X_MSB);
+}
+
+int16_t MMA8451Q::getAccY() {
+ return getAccAxis(REG_OUT_Y_MSB);
+}
+
+int16_t MMA8451Q::getAccZ() {
+ return getAccAxis(REG_OUT_Z_MSB);
+}
+
+void MMA8451Q::getAccAllAxis(int16_t * res) {
+ res[0] = getAccX();
+ res[1] = getAccY();
+ res[2] = getAccZ();
+}
+
+int16_t MMA8451Q::getAccAxis(uint8_t addr) {
+ int16_t acc;
+ uint8_t res[2];
+ readRegs(addr, res, 2);
+
+ acc = (res[0] << 6) | (res[1] >> 2);
+ if (acc > UINT14_MAX/2)
+ acc -= UINT14_MAX;
+
+ return acc;
+}
+
+void MMA8451Q::readRegs(int addr, uint8_t * data, int len) {
+ char t[1] = {addr};
+ m_i2c.write(m_addr, t, 1, true);
+ m_i2c.read(m_addr, (char *)data, len);
+}
+
+void MMA8451Q::writeRegs(uint8_t * data, int len) {
+ m_i2c.write(m_addr, (char *)data, len);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA8451Q/MMA8451Q.h b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA8451Q/MMA8451Q.h
new file mode 100644
index 0000000000..1b222685d9
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/MMA8451Q/MMA8451Q.h
@@ -0,0 +1,108 @@
+/* Copyright (c) 2010-2011 mbed.org, MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+* and associated documentation files (the "Software"), to deal in the Software without
+* restriction, including without limitation the rights to use, copy, modify, merge, publish,
+* distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
+* Software is furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in all copies or
+* substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+* BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#ifndef MMA8451Q_H
+#define MMA8451Q_H
+
+#include "mbed.h"
+
+/**
+* MMA8451Q accelerometer example
+* #include "mbed.h"
+* #include "MMA8451Q.h"
+*
+* #define MMA8451_I2C_ADDRESS (0x1d<<1)
+*
+* int main(void) {
+* DigitalOut led(LED_GREEN);
+* MMA8451Q acc(P_E25, P_E24, MMA8451_I2C_ADDRESS);
+* printf("WHO AM I: 0x%2X\r\n", acc.getWhoAmI());
+*
+* while (true) {
+* printf("-----------\r\n");
+* printf("acc_x: %d\r\n", acc.getAccX());
+* printf("acc_y: %d\r\n", acc.getAccY());
+* printf("acc_z: %d\r\n", acc.getAccZ());
+*
+* wait(1);
+* led = !led;
+* }
+* }
+*/
+class MMA8451Q
+{
+public:
+ /**
+ * MMA8451Q constructor
+ *
+ * @param sda SDA pin
+ * @param sdl SCL pin
+ * @param addr addr of the I2C peripheral
+ */
+ MMA8451Q(PinName sda, PinName scl, int addr);
+
+ /**
+ * MMA8451Q destructor
+ */
+ ~MMA8451Q();
+
+ /**
+ * Get the value of the WHO_AM_I register
+ *
+ * @returns WHO_AM_I value
+ */
+ uint8_t getWhoAmI();
+
+ /**
+ * Get X axis acceleration
+ *
+ * @returns X axis acceleration
+ */
+ int16_t getAccX();
+
+ /**
+ * Get Y axis acceleration
+ *
+ * @returns Y axis acceleration
+ */
+ int16_t getAccY();
+
+ /**
+ * Get Z axis acceleration
+ *
+ * @returns Z axis acceleration
+ */
+ int16_t getAccZ();
+
+ /**
+ * Get XYZ axis acceleration
+ *
+ * @param res array where acceleration data will be stored
+ */
+ void getAccAllAxis(int16_t * res);
+
+private:
+ I2C m_i2c;
+ int m_addr;
+ void readRegs(int addr, uint8_t * data, int len);
+ void writeRegs(uint8_t * data, int len);
+ int16_t getAccAxis(uint8_t addr);
+
+};
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/SRF08/SRF08.cpp b/tool/mbed/mbed-sdk/libraries/tests/peripherals/SRF08/SRF08.cpp
new file mode 100644
index 0000000000..8e44a3ee23
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/SRF08/SRF08.cpp
@@ -0,0 +1,67 @@
+
+/*
+Copyright (c) 2010 Chris Styles ( chris dot styles at mbed dot org )
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+#include "SRF08.h"
+
+
+SRF08::SRF08(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr) {
+ char cmd[2];
+
+// Set up SRF08 max range and receiver sensitivity over I2C bus
+ cmd[0] = 0x02; // Range register
+ cmd[1] = 0x1C; // Set max range about 100cm
+ m_i2c.write(m_addr, cmd, 2);
+ cmd[0] = 0x01; // Receiver gain register
+ cmd[1] = 0x1B; // Set max receiver gain
+ m_i2c.write(m_addr, cmd, 2);
+
+}
+
+SRF08::~SRF08() {
+
+}
+
+float SRF08::read() {
+
+ char cmd[2];
+ char echo[2];
+
+
+// Get range data from SRF08
+// Send Tx burst command over I2C bus
+ cmd[0] = 0x00; // Command register
+ cmd[1] = 0x51; // Ranging results in cm
+ m_i2c.write(m_addr, cmd, 2); // Send ranging burst
+
+ wait(0.07); // Wait for return echo
+
+// Read back range over I2C bus
+ cmd[0] = 0x02; // Address of first echo
+ m_i2c.write(m_addr, cmd, 1, 1); // Send address of first echo
+ m_i2c.read(m_addr, echo, 2); // Read two-byte echo result
+
+// Generate PWM mark/space ratio from range data
+ float range = (echo[0]<<8)+echo[1];
+
+ return range;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/SRF08/SRF08.h b/tool/mbed/mbed-sdk/libraries/tests/peripherals/SRF08/SRF08.h
new file mode 100644
index 0000000000..a3606338b8
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/SRF08/SRF08.h
@@ -0,0 +1,60 @@
+
+/*
+Copyright (c) 2010 Chris Styles (chris dot styles at mbed dot org)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+#ifndef SRF08_H
+#define SRF08_H
+
+#include "mbed.h"
+
+//!Library for the SRF08 Ultrasonic Ranger
+/*!
+The SRF08 is an Ultrasonic range finder, with an I2C interface that allows the measurement to be read directly in centimetres
+*/
+class SRF08
+{
+public:
+ //!Creates an instance of the class.
+ /*!
+ Connect module at I2C address addr using I2C port pins sda and scl.
+ SRF08
+ */
+ SRF08(PinName sda, PinName scl, int addr);
+
+ /*!
+ Destroys instance.
+ */
+ ~SRF08();
+
+ //!Reads the current temperature.
+ /*!
+ Reads the temperature register of the TMP102 and converts it to a useable value.
+ */
+ float read();
+
+private:
+ I2C m_i2c;
+ int m_addr;
+
+};
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/TMP102/TMP102.cpp b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TMP102/TMP102.cpp
new file mode 100644
index 0000000000..934c690ed3
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TMP102/TMP102.cpp
@@ -0,0 +1,23 @@
+#include "TMP102.h"
+
+#define TEMP_REG_ADDR 0x00
+
+TMP102::TMP102(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr) {
+ m_i2c.frequency(400000);
+}
+TMP102::~TMP102() { }
+
+float TMP102::read() {
+ const char tempRegAddr = TEMP_REG_ADDR;
+
+ m_i2c.write(m_addr, &tempRegAddr, 1);
+
+ char reg[2] = {0,0};
+ m_i2c.read(m_addr, reg, 2);
+
+ unsigned short res = (reg[0] << 4) | (reg[1] >> 4);
+
+ float temp = (float) ((float)res * 0.0625);
+
+ return temp;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/TMP102/TMP102.h b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TMP102/TMP102.h
new file mode 100644
index 0000000000..ce7de83849
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TMP102/TMP102.h
@@ -0,0 +1,39 @@
+#ifndef TMP102_H
+#define TMP102_H
+
+#include "mbed.h"
+
+//!Library for the TI TMP102 temperature sensor.
+/*!
+The TMP102 is an I2C digital temperature sensor in a small SOT563 package, with a 0.0625C resolution and 0.5C accuracy.
+*/
+class TMP102
+{
+public:
+ //!Creates an instance of the class.
+ /*!
+ Connect module at I2C address addr using I2C port pins sda and scl.
+ TMP102
+ \param addr <table><tr><th>A0 pin connection</th><th>Address</th></tr><tr><td>GND</td><td>0x90</td></tr><tr><td>V+</td><td>0x92</td></tr><tr><td>SDA</td><td>0x94</td></tr><tr><td>SCL</td><td>0x96</td></tr></table>
+ */
+ TMP102(PinName sda, PinName scl, int addr);
+
+ /*!
+ Destroys instance.
+ */
+ ~TMP102();
+
+ //!Reads the current temperature.
+ /*!
+ Reads the temperature register of the TMP102 and converts it to a useable value.
+ */
+ float read();
+
+ I2C m_i2c;
+
+private:
+ int m_addr;
+
+};
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/TSI/TSISensor.cpp b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TSI/TSISensor.cpp
new file mode 100644
index 0000000000..b1d2c9413b
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TSI/TSISensor.cpp
@@ -0,0 +1,231 @@
+/* Freescale Semiconductor Inc.
+ * (c) Copyright 2004-2005 Freescale Semiconductor, Inc.
+ * (c) Copyright 2001-2004 Motorola, Inc.
+ *
+ * mbed Microcontroller Library
+ * (c) Copyright 2009-2012 ARM Limited.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "mbed.h"
+#include "TSISensor.h"
+
+#define NO_TOUCH 0
+#define SLIDER_LENGTH 40 //LENGTH in mm
+#define TOTAL_ELECTRODE 2
+
+#define TSI0a 0
+#define TSI1 1
+#define TSI2 2
+#define TSI3 3
+#define TSI4 4
+#define TSI5 5
+#define TSI6 6
+#define TSI7 7
+#define TSI8 8
+#define TSI9 9
+#define TSI10 10
+#define TSI11 11
+#define TSI12 12
+#define TSI13 13
+#define TSI14 14
+#define TSI15 15
+
+/*Chose the correct TSI channel for the electrode number*/
+#define ELECTRODE0 TSI9
+#define ELECTRODE1 TSI10
+#define ELECTRODE2 TSI0a
+#define ELECTRODE3 TSI1
+#define ELECTRODE4 TSI2
+#define ELECTRODE5 TSI3
+#define ELECTRODE6 TSI4
+#define ELECTRODE7 TSI5
+#define ELECTRODE8 TSI6
+#define ELECTRODE9 TSI7
+#define ELECTRODE10 TSI8
+#define ELECTRODE11 TSI11
+#define ELECTRODE12 TSI12
+#define ELECTRODE13 TSI13
+#define ELECTRODE14 TSI14
+#define ELECTRODE15 TSI15
+
+#define THRESHOLD0 100
+#define THRESHOLD1 100
+#define THRESHOLD2 100
+#define THRESHOLD3 100
+#define THRESHOLD4 100
+#define THRESHOLD5 100
+#define THRESHOLD6 100
+#define THRESHOLD7 100
+#define THRESHOLD8 100
+#define THRESHOLD9 100
+#define THRESHOLD10 100
+#define THRESHOLD11 100
+#define THRESHOLD12 100
+#define THRESHOLD13 100
+#define THRESHOLD14 100
+#define THRESHOLD15 100
+
+static uint8_t total_electrode = TOTAL_ELECTRODE;
+static uint8_t elec_array[16]={ELECTRODE0,ELECTRODE1,ELECTRODE2,ELECTRODE3,ELECTRODE4,ELECTRODE5,
+ ELECTRODE6,ELECTRODE7,ELECTRODE8,ELECTRODE9,ELECTRODE10,ELECTRODE11,
+ ELECTRODE12,ELECTRODE13,ELECTRODE14,ELECTRODE15};
+static uint16_t gu16TSICount[16];
+static uint16_t gu16Baseline[16];
+static uint16_t gu16Threshold[16]={THRESHOLD0,THRESHOLD1,THRESHOLD2,THRESHOLD3,THRESHOLD4,THRESHOLD5,
+ THRESHOLD6,THRESHOLD7,THRESHOLD8,THRESHOLD9,THRESHOLD10,THRESHOLD11,
+ THRESHOLD12,THRESHOLD13,THRESHOLD14,THRESHOLD15};
+static uint16_t gu16Delta[16];
+static uint8_t ongoing_elec;
+static uint8_t end_flag = 1;
+
+static uint8_t SliderPercentegePosition[2] = {NO_TOUCH,NO_TOUCH};
+static uint8_t SliderDistancePosition[2] = {NO_TOUCH,NO_TOUCH};
+static uint32_t AbsolutePercentegePosition = NO_TOUCH;
+static uint32_t AbsoluteDistancePosition = NO_TOUCH;
+
+static void tsi_irq();
+
+TSISensor::TSISensor() {
+ SIM->SCGC5 |= SIM_SCGC5_PORTB_MASK;
+ SIM->SCGC5 |= SIM_SCGC5_TSI_MASK;
+
+ TSI0->GENCS |= (TSI_GENCS_ESOR_MASK
+ | TSI_GENCS_MODE(0)
+ | TSI_GENCS_REFCHRG(4)
+ | TSI_GENCS_DVOLT(0)
+ | TSI_GENCS_EXTCHRG(7)
+ | TSI_GENCS_PS(4)
+ | TSI_GENCS_NSCN(11)
+ | TSI_GENCS_TSIIEN_MASK
+ | TSI_GENCS_STPE_MASK
+ );
+
+ TSI0->GENCS |= TSI_GENCS_TSIEN_MASK;
+
+ NVIC_SetVector(TSI0_IRQn, (uint32_t)&tsi_irq);
+ NVIC_EnableIRQ(TSI0_IRQn);
+
+ selfCalibration();
+}
+
+
+void TSISensor::selfCalibration(void)
+{
+ unsigned char cnt;
+ unsigned char trigger_backup;
+
+ TSI0->GENCS |= TSI_GENCS_EOSF_MASK; // Clear End of Scan Flag
+ TSI0->GENCS &= ~TSI_GENCS_TSIEN_MASK; // Disable TSI module
+
+ if(TSI0->GENCS & TSI_GENCS_STM_MASK) // Back-up TSI Trigger mode from Application
+ trigger_backup = 1;
+ else
+ trigger_backup = 0;
+
+ TSI0->GENCS &= ~TSI_GENCS_STM_MASK; // Use SW trigger
+ TSI0->GENCS &= ~TSI_GENCS_TSIIEN_MASK; // Enable TSI interrupts
+
+ TSI0->GENCS |= TSI_GENCS_TSIEN_MASK; // Enable TSI module
+
+ for(cnt=0; cnt < total_electrode; cnt++) // Get Counts when Electrode not pressed
+ {
+ TSI0->DATA = ((elec_array[cnt] << TSI_DATA_TSICH_SHIFT) );
+ TSI0->DATA |= TSI_DATA_SWTS_MASK;
+ while(!(TSI0->GENCS & TSI_GENCS_EOSF_MASK));
+ TSI0->GENCS |= TSI_GENCS_EOSF_MASK;
+ gu16Baseline[cnt] = (TSI0->DATA & TSI_DATA_TSICNT_MASK);
+ }
+
+ TSI0->GENCS &= ~TSI_GENCS_TSIEN_MASK; // Disable TSI module
+ TSI0->GENCS |= TSI_GENCS_TSIIEN_MASK; // Enale TSI interrupt
+ if(trigger_backup) // Restore trigger mode
+ TSI0->GENCS |= TSI_GENCS_STM_MASK;
+ else
+ TSI0->GENCS &= ~TSI_GENCS_STM_MASK;
+
+ TSI0->GENCS |= TSI_GENCS_TSIEN_MASK; // Enable TSI module
+
+ TSI0->DATA = ((elec_array[0]<<TSI_DATA_TSICH_SHIFT) );
+ TSI0->DATA |= TSI_DATA_SWTS_MASK;
+}
+
+
+void TSISensor::sliderRead(void ) {
+ if(end_flag) {
+ end_flag = 0;
+ if((gu16Delta[0] > gu16Threshold[0])||(gu16Delta[1] > gu16Threshold[1])) {
+ SliderPercentegePosition[0] = (gu16Delta[0]*100)/(gu16Delta[0]+gu16Delta[1]);
+ SliderPercentegePosition[1] = (gu16Delta[1]*100)/(gu16Delta[0]+gu16Delta[1]);
+ SliderDistancePosition[0] = (SliderPercentegePosition[0]* SLIDER_LENGTH)/100;
+ SliderDistancePosition[1] = (SliderPercentegePosition[1]* SLIDER_LENGTH)/100;
+ AbsolutePercentegePosition = ((100 - SliderPercentegePosition[0]) + SliderPercentegePosition[1])/2;
+ AbsoluteDistancePosition = ((SLIDER_LENGTH - SliderDistancePosition[0]) + SliderDistancePosition[1])/2;
+ } else {
+ SliderPercentegePosition[0] = NO_TOUCH;
+ SliderPercentegePosition[1] = NO_TOUCH;
+ SliderDistancePosition[0] = NO_TOUCH;
+ SliderDistancePosition[1] = NO_TOUCH;
+ AbsolutePercentegePosition = NO_TOUCH;
+ AbsoluteDistancePosition = NO_TOUCH;
+ }
+ }
+}
+
+float TSISensor::readPercentage() {
+ sliderRead();
+ return (float)AbsolutePercentegePosition/100.0;
+}
+
+uint8_t TSISensor::readDistance() {
+ sliderRead();
+ return AbsoluteDistancePosition;
+}
+
+
+static void changeElectrode(void)
+{
+ int16_t u16temp_delta;
+
+ gu16TSICount[ongoing_elec] = (TSI0->DATA & TSI_DATA_TSICNT_MASK); // Save Counts for current electrode
+ u16temp_delta = gu16TSICount[ongoing_elec] - gu16Baseline[ongoing_elec]; // Obtains Counts Delta from callibration reference
+ if(u16temp_delta < 0)
+ gu16Delta[ongoing_elec] = 0;
+ else
+ gu16Delta[ongoing_elec] = u16temp_delta;
+
+ //Change Electrode to Scan
+ if(total_electrode > 1)
+ {
+ if((total_electrode-1) > ongoing_elec)
+ ongoing_elec++;
+ else
+ ongoing_elec = 0;
+
+ TSI0->DATA = ((elec_array[ongoing_elec]<<TSI_DATA_TSICH_SHIFT) );
+ TSI0->DATA |= TSI_DATA_SWTS_MASK;
+ }
+}
+
+
+void tsi_irq(void)
+{
+ end_flag = 1;
+ TSI0->GENCS |= TSI_GENCS_EOSF_MASK; // Clear End of Scan Flag
+ changeElectrode();
+}
+
diff --git a/tool/mbed/mbed-sdk/libraries/tests/peripherals/TSI/TSISensor.h b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TSI/TSISensor.h
new file mode 100644
index 0000000000..1ac547b4a5
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/peripherals/TSI/TSISensor.h
@@ -0,0 +1,73 @@
+/* Freescale Semiconductor Inc.
+ * (c) Copyright 2004-2005 Freescale Semiconductor, Inc.
+ * (c) Copyright 2001-2004 Motorola, Inc.
+ *
+ * mbed Microcontroller Library
+ * (c) Copyright 2009-2012 ARM Limited.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ * and associated documentation files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all copies or
+ * substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef TSISENSOR_H
+#define TSISENSOR_H
+
+/**
+* TSISensor example
+*
+* @code
+* #include "mbed.h"
+* #include "TSISensor.h"
+*
+* int main(void) {
+* DigitalOut led(LED_GREEN);
+* TSISensor tsi;
+*
+* while (true) {
+* printf("slider percentage: %f%\r\n", tsi.readPercentage());
+* printf("slider distance: %dmm\r\n", tsi.readDistance());
+* wait(1);
+* led = !led;
+* }
+* }
+* @endcode
+*/
+class TSISensor {
+public:
+ /**
+ * Initialize the TSI Touch Sensor
+ */
+ TSISensor();
+
+ /**
+ * Read Touch Sensor percentage value
+ *
+ * @returns percentage value between [0 ... 1]
+ */
+ float readPercentage();
+
+ /**
+ * Read Touch Sensor distance
+ *
+ * @returns distance in mm. The value is between [0 ... 40]
+ */
+ uint8_t readDistance();
+
+private:
+ void sliderRead(void);
+ void selfCalibration(void);
+};
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/basic/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/basic/main.cpp
new file mode 100644
index 0000000000..d78a49fcf6
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/basic/main.cpp
@@ -0,0 +1,22 @@
+#include "mbed.h"
+#include "cmsis_os.h"
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+
+void led2_thread(void const *argument) {
+ while (true) {
+ led2 = !led2;
+ osDelay(1000);
+ }
+}
+osThreadDef(led2_thread, osPriorityNormal, DEFAULT_STACK_SIZE);
+
+int main() {
+ osThreadCreate(osThread(led2_thread), NULL);
+
+ while (true) {
+ led1 = !led1;
+ osDelay(500);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/isr/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/isr/main.cpp
new file mode 100644
index 0000000000..52c7da3d8c
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/isr/main.cpp
@@ -0,0 +1,34 @@
+#include "mbed.h"
+#include "rtos.h"
+
+Queue<uint32_t, 5> queue;
+
+DigitalOut myled(LED1);
+
+void queue_isr() {
+ queue.put((uint32_t*)2);
+ myled = !myled;
+}
+
+void queue_thread(void const *argument) {
+ while (true) {
+ queue.put((uint32_t*)1);
+ Thread::wait(1000);
+ }
+}
+
+int main (void) {
+ Thread thread(queue_thread);
+
+ Ticker ticker;
+ ticker.attach(queue_isr, 1.0);
+
+ while (true) {
+ osEvent evt = queue.get();
+ if (evt.status != osEventMessage) {
+ printf("queue->get() returned %02x status\n\r", evt.status);
+ } else {
+ printf("queue->get() returned %d\n\r", evt.value.v);
+ }
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mail/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mail/main.cpp
new file mode 100644
index 0000000000..545fca34c7
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mail/main.cpp
@@ -0,0 +1,43 @@
+#include "mbed.h"
+#include "cmsis_os.h"
+
+typedef struct {
+ float voltage; /* AD result of measured voltage */
+ float current; /* AD result of measured current */
+ uint32_t counter; /* A counter value */
+} mail_t;
+
+osMailQDef(mail_box, 16, mail_t);
+osMailQId mail_box;
+
+void send_thread (void const *argument) {
+ uint32_t i = 0;
+ while (true) {
+ i++; // fake data update
+ mail_t *mail = (mail_t*)osMailAlloc(mail_box, osWaitForever);
+ mail->voltage = (i * 0.1) * 33;
+ mail->current = (i * 0.1) * 11;
+ mail->counter = i;
+ osMailPut(mail_box, mail);
+ osDelay(1000);
+ }
+}
+
+osThreadDef(send_thread, osPriorityNormal, DEFAULT_STACK_SIZE);
+
+int main (void) {
+ mail_box = osMailCreate(osMailQ(mail_box), NULL);
+ osThreadCreate(osThread(send_thread), NULL);
+
+ while (true) {
+ osEvent evt = osMailGet(mail_box, osWaitForever);
+ if (evt.status == osEventMail) {
+ mail_t *mail = (mail_t*)evt.value.p;
+ printf("\nVoltage: %.2f V\n\r" , mail->voltage);
+ printf("Current: %.2f A\n\r" , mail->current);
+ printf("Number of cycles: %u\n\r", mail->counter);
+
+ osMailFree(mail_box, mail);
+ }
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mutex/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mutex/main.cpp
new file mode 100644
index 0000000000..ccd1a603ca
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mutex/main.cpp
@@ -0,0 +1,33 @@
+#include "mbed.h"
+#include "cmsis_os.h"
+
+osMutexId stdio_mutex;
+osMutexDef(stdio_mutex);
+
+void notify(const char* name, int state) {
+ osMutexWait(stdio_mutex, osWaitForever);
+ printf("%s: %d\n\r", name, state);
+ osMutexRelease(stdio_mutex);
+}
+
+void test_thread(void const *args) {
+ while (true) {
+ notify((const char*)args, 0); osDelay(1000);
+ notify((const char*)args, 1); osDelay(1000);
+ }
+}
+
+void t2(void const *argument) {test_thread("Th 2");}
+osThreadDef(t2, osPriorityNormal, DEFAULT_STACK_SIZE);
+
+void t3(void const *argument) {test_thread("Th 3");}
+osThreadDef(t3, osPriorityNormal, DEFAULT_STACK_SIZE);
+
+int main() {
+ stdio_mutex = osMutexCreate(osMutex(stdio_mutex));
+
+ osThreadCreate(osThread(t2), NULL);
+ osThreadCreate(osThread(t3), NULL);
+
+ test_thread((void *)"Th 1");
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/queue/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/queue/main.cpp
new file mode 100644
index 0000000000..1c6eab2f39
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/queue/main.cpp
@@ -0,0 +1,48 @@
+#include "mbed.h"
+#include "cmsis_os.h"
+
+typedef struct {
+ float voltage; /* AD result of measured voltage */
+ float current; /* AD result of measured current */
+ uint32_t counter; /* A counter value */
+} message_t;
+
+osPoolDef(mpool, 16, message_t);
+osPoolId mpool;
+
+osMessageQDef(queue, 16, message_t);
+osMessageQId queue;
+
+void send_thread (void const *argument) {
+ uint32_t i = 0;
+ while (true) {
+ i++; // fake data update
+ message_t *message = (message_t*)osPoolAlloc(mpool);
+ message->voltage = (i * 0.1) * 33;
+ message->current = (i * 0.1) * 11;
+ message->counter = i;
+ osMessagePut(queue, (uint32_t)message, osWaitForever);
+ osDelay(1000);
+ }
+}
+
+osThreadDef(send_thread, osPriorityNormal, DEFAULT_STACK_SIZE);
+
+int main (void) {
+ mpool = osPoolCreate(osPool(mpool));
+ queue = osMessageCreate(osMessageQ(queue), NULL);
+
+ osThreadCreate(osThread(send_thread), NULL);
+
+ while (true) {
+ osEvent evt = osMessageGet(queue, osWaitForever);
+ if (evt.status == osEventMessage) {
+ message_t *message = (message_t*)evt.value.p;
+ printf("\nVoltage: %.2f V\n\r" , message->voltage);
+ printf("Current: %.2f A\n\r" , message->current);
+ printf("Number of cycles: %u\n\r", message->counter);
+
+ osPoolFree(mpool, message);
+ }
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/semaphore/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/semaphore/main.cpp
new file mode 100644
index 0000000000..d4b473c187
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/semaphore/main.cpp
@@ -0,0 +1,29 @@
+#include "mbed.h"
+#include "cmsis_os.h"
+
+osSemaphoreId two_slots;
+osSemaphoreDef(two_slots);
+
+void test_thread(void const *name) {
+ while (true) {
+ osSemaphoreWait(two_slots, osWaitForever);
+ printf("%s\n\r", (const char*)name);
+ osDelay(1000);
+ osSemaphoreRelease(two_slots);
+ }
+}
+
+void t2(void const *argument) {test_thread("Th 2");}
+osThreadDef(t2, osPriorityNormal, DEFAULT_STACK_SIZE);
+
+void t3(void const *argument) {test_thread("Th 3");}
+osThreadDef(t3, osPriorityNormal, DEFAULT_STACK_SIZE);
+
+int main (void) {
+ two_slots = osSemaphoreCreate(osSemaphore(two_slots), 2);
+
+ osThreadCreate(osThread(t2), NULL);
+ osThreadCreate(osThread(t3), NULL);
+
+ test_thread((void *)"Th 1");
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/signals/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/signals/main.cpp
new file mode 100644
index 0000000000..14ce05dadb
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/signals/main.cpp
@@ -0,0 +1,23 @@
+#include "mbed.h"
+#include "cmsis_os.h"
+
+DigitalOut led(LED1);
+
+void led_thread(void const *argument) {
+ while (true) {
+ // Signal flags that are reported as event are automatically cleared.
+ osSignalWait(0x1, osWaitForever);
+ led = !led;
+ }
+}
+
+osThreadDef(led_thread, osPriorityNormal, DEFAULT_STACK_SIZE);
+
+int main (void) {
+ osThreadId tid = osThreadCreate(osThread(led_thread), NULL);
+
+ while (true) {
+ osDelay(1000);
+ osSignalSet(tid, 0x1);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/timer/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/timer/main.cpp
new file mode 100644
index 0000000000..a0b093f946
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/timer/main.cpp
@@ -0,0 +1,29 @@
+#include "mbed.h"
+#include "cmsis_os.h"
+
+DigitalOut LEDs[4] = {
+ DigitalOut(LED1), DigitalOut(LED2), DigitalOut(LED3), DigitalOut(LED4)
+};
+
+void blink(void const *n) {
+ LEDs[(int)n] = !LEDs[(int)n];
+}
+
+osTimerDef(blink_0, blink);
+osTimerDef(blink_1, blink);
+osTimerDef(blink_2, blink);
+osTimerDef(blink_3, blink);
+
+int main(void) {
+ osTimerId timer_0 = osTimerCreate(osTimer(blink_0), osTimerPeriodic, (void *)0);
+ osTimerId timer_1 = osTimerCreate(osTimer(blink_1), osTimerPeriodic, (void *)1);
+ osTimerId timer_2 = osTimerCreate(osTimer(blink_2), osTimerPeriodic, (void *)2);
+ osTimerId timer_3 = osTimerCreate(osTimer(blink_3), osTimerPeriodic, (void *)3);
+
+ osTimerStart(timer_0, 2000);
+ osTimerStart(timer_1, 1000);
+ osTimerStart(timer_2, 500);
+ osTimerStart(timer_3, 250);
+
+ osDelay(osWaitForever);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/basic/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/basic/main.cpp
new file mode 100644
index 0000000000..541436786c
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/basic/main.cpp
@@ -0,0 +1,44 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "rtos.h"
+
+/*
+ * The stack size is defined in cmsis_os.h mainly dependent on the underlying toolchain and
+ * the C standard library. For GCC, ARM_STD and IAR it is defined with a size of 2048 bytes
+ * and for ARM_MICRO 512. Because of reduce RAM size some targets need a reduced stacksize.
+ */
+#if defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8)
+#define STACK_SIZE DEFAULT_STACK_SIZE/4
+#else
+#define STACK_SIZE DEFAULT_STACK_SIZE
+#endif
+
+void print_char(char c = '*') {
+ printf("%c", c);
+ fflush(stdout);
+}
+
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+
+void led2_thread(void const *argument) {
+ while (true) {
+ led2 = !led2;
+ Thread::wait(1000);
+ print_char();
+ }
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(wait_us_auto);
+ MBED_HOSTTEST_DESCRIPTION(Basic thread);
+ MBED_HOSTTEST_START("RTOS_1");
+
+ Thread thread(led2_thread, NULL, osPriorityNormal, STACK_SIZE);
+
+ while (true) {
+ led1 = !led1;
+ Thread::wait(500);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/file/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/file/main.cpp
new file mode 100644
index 0000000000..af32f668d6
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/file/main.cpp
@@ -0,0 +1,100 @@
+#include "mbed.h"
+#include "SDFileSystem.h"
+#include "test_env.h"
+#include "rtos.h"
+
+DigitalOut led2(LED2);
+
+#define SIZE 100
+
+namespace {
+// Allocate data buffers
+uint8_t data_written[SIZE] = { 0 };
+uint8_t data_read[SIZE] = { 0 };
+}
+
+void sd_thread(void const *argument)
+{
+ const char *FILE_NAME = "/sd/rtos9_test.txt";
+
+#if defined(TARGET_KL25Z)
+ SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd");
+
+#elif defined(TARGET_KL46Z)
+ SDFileSystem sd(PTD6, PTD7, PTD5, PTD4, "sd");
+
+#elif defined(TARGET_K64F)
+ SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd");
+
+#elif defined(TARGET_RZ_A1H)
+ SDFileSystem sd(P8_5, P8_6, P8_3, P8_4, "sd");
+
+#else
+ SDFileSystem sd(p11, p12, p13, p14, "sd");
+#endif
+
+ {
+ // fill data_written buffer with random data
+ FILE *f = fopen(FILE_NAME, "w+");
+ if (f) {
+ // write these data into the file
+ printf("Writing %d bytes to file:" NL, SIZE);
+ for (int i = 0; i < SIZE; i++) {
+ data_written[i] = rand() % 0xff;
+ fprintf(f, "%c", data_written[i]);
+ printf("%02X ", data_written[i]);
+ if (i && ((i % 20) == 19))
+ printf(NL);
+ }
+ fclose(f);
+ printf("MBED: Done" NL);
+ } else {
+ printf("MBED: Can't open '%s'" NL, FILE_NAME);
+ MBED_HOSTTEST_RESULT(false);
+ }
+ }
+
+ printf(NL);
+
+ {
+ // read back the data from the file and store them in data_read
+ FILE *f = fopen(FILE_NAME, "r");
+ if (f) {
+ printf("MBED: Reading %d bytes from file:" NL, SIZE);
+ for (int i = 0; i < SIZE; i++) {
+ data_read[i] = fgetc(f);
+ printf("%02X ", data_read[i]);
+ if (i && ((i % 20) == 19))
+ printf(NL);
+ }
+ fclose(f);
+ printf("MBED: Done\r\n");
+ } else {
+ printf("MBED: Can't open '%s'" NL, FILE_NAME);
+ MBED_HOSTTEST_RESULT(false);
+ }
+ }
+
+ // check that the data written == data read
+ for (int i = 0; i < SIZE; i++) {
+ if (data_written[i] != data_read[i]) {
+ printf("MBED: Data index=%d: w[0x%02X] != r[0x%02X]" NL, i, data_written[i], data_read[i]);
+ MBED_HOSTTEST_RESULT(false);
+ }
+ }
+ MBED_HOSTTEST_RESULT(true);
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(SD File write read);
+ MBED_HOSTTEST_START("RTOS_9");
+
+ Thread t(sd_thread, NULL, osPriorityNormal, (DEFAULT_STACK_SIZE * 2.25));
+
+ while (true) {
+ led2 = !led2;
+ Thread::wait(1000);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/isr/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/isr/main.cpp
new file mode 100644
index 0000000000..7168564fa9
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/isr/main.cpp
@@ -0,0 +1,69 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "rtos.h"
+
+#define QUEUE_SIZE 5
+#define THREAD_DELAY 250
+#define QUEUE_PUT_ISR_VALUE 128
+#define QUEUE_PUT_THREAD_VALUE 127
+
+/*
+ * The stack size is defined in cmsis_os.h mainly dependent on the underlying toolchain and
+ * the C standard library. For GCC, ARM_STD and IAR it is defined with a size of 2048 bytes
+ * and for ARM_MICRO 512. Because of reduce RAM size some targets need a reduced stacksize.
+ */
+#if defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8)
+ #define STACK_SIZE DEFAULT_STACK_SIZE/4
+#else
+ #define STACK_SIZE DEFAULT_STACK_SIZE
+#endif
+
+Queue<uint32_t, QUEUE_SIZE> queue;
+
+DigitalOut myled(LED1);
+
+void queue_isr() {
+
+ queue.put((uint32_t*)QUEUE_PUT_ISR_VALUE);
+ myled = !myled;
+}
+
+void queue_thread(void const *argument) {
+ while (true) {
+ queue.put((uint32_t*)QUEUE_PUT_THREAD_VALUE);
+ Thread::wait(THREAD_DELAY);
+ }
+}
+
+int main (void) {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(ISR (Queue));
+ MBED_HOSTTEST_START("RTOS_8");
+
+ Thread thread(queue_thread, NULL, osPriorityNormal, STACK_SIZE);
+ Ticker ticker;
+ ticker.attach(queue_isr, 1.0);
+ int isr_puts_counter = 0;
+ bool result = true;
+
+ while (true) {
+ osEvent evt = queue.get();
+ if (evt.status != osEventMessage) {
+ printf("QUEUE_GET: Status(0x%02X) ... [FAIL]\r\n", evt.status);
+ result = false;
+ break;
+ } else {
+ printf("QUEUE_GET: Value(%u) ... [OK]\r\n", evt.value.v);
+ if (evt.value.v == QUEUE_PUT_ISR_VALUE) {
+ isr_puts_counter++;
+ }
+ if (isr_puts_counter >= QUEUE_SIZE) {
+ break;
+ }
+ }
+ }
+
+ MBED_HOSTTEST_RESULT(result);
+ return 0;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/mail/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/mail/main.cpp
new file mode 100644
index 0000000000..105d3eafbf
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/mail/main.cpp
@@ -0,0 +1,75 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "rtos.h"
+
+typedef struct {
+ float voltage; /* AD result of measured voltage */
+ float current; /* AD result of measured current */
+ uint32_t counter; /* A counter value */
+} mail_t;
+
+#define CREATE_VOLTAGE(COUNTER) (COUNTER * 0.1) * 33
+#define CREATE_CURRENT(COUNTER) (COUNTER * 0.1) * 11
+#define QUEUE_SIZE 16
+#define QUEUE_PUT_DELAY 100
+
+/*
+ * The stack size is defined in cmsis_os.h mainly dependent on the underlying toolchain and
+ * the C standard library. For GCC, ARM_STD and IAR it is defined with a size of 2048 bytes
+ * and for ARM_MICRO 512. Because of reduce RAM size some targets need a reduced stacksize.
+ */
+#if defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8)
+ #define STACK_SIZE DEFAULT_STACK_SIZE/4
+#else
+ #define STACK_SIZE DEFAULT_STACK_SIZE
+#endif
+
+Mail<mail_t, QUEUE_SIZE> mail_box;
+
+void send_thread (void const *argument) {
+ static uint32_t i = 10;
+ while (true) {
+ i++; // fake data update
+ mail_t *mail = mail_box.alloc();
+ mail->voltage = CREATE_VOLTAGE(i);
+ mail->current = CREATE_CURRENT(i);
+ mail->counter = i;
+ mail_box.put(mail);
+ Thread::wait(QUEUE_PUT_DELAY);
+ }
+}
+
+int main (void) {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(Mail messaging);
+ MBED_HOSTTEST_START("RTOS_6");
+
+ Thread thread(send_thread, NULL, osPriorityNormal, STACK_SIZE);
+ bool result = true;
+ int result_counter = 0;
+
+ while (true) {
+ osEvent evt = mail_box.get();
+ if (evt.status == osEventMail) {
+ mail_t *mail = (mail_t*)evt.value.p;
+ const float expected_voltage = CREATE_VOLTAGE(mail->counter);
+ const float expected_current = CREATE_CURRENT(mail->counter);
+ // Check using macros if received values correspond to values sent via queue
+ bool expected_values = (expected_voltage == mail->voltage) &&
+ (expected_current == mail->current);
+ result = result && expected_values;
+ const char *result_msg = expected_values ? "OK" : "FAIL";
+ printf("%3d %.2fV %.2fA ... [%s]\r\n", mail->counter,
+ mail->voltage,
+ mail->current,
+ result_msg);
+ mail_box.free(mail);
+ if (result == false || ++result_counter == QUEUE_SIZE) {
+ break;
+ }
+ }
+ }
+ MBED_HOSTTEST_RESULT(result);
+ return 0;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/mutex/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/mutex/main.cpp
new file mode 100644
index 0000000000..80d49a189c
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/mutex/main.cpp
@@ -0,0 +1,87 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "rtos.h"
+
+#define THREAD_DELAY 50
+#define SIGNALS_TO_EMIT 100
+
+/*
+ * The stack size is defined in cmsis_os.h mainly dependent on the underlying toolchain and
+ * the C standard library. For GCC, ARM_STD and IAR it is defined with a size of 2048 bytes
+ * and for ARM_MICRO 512. Because of reduce RAM size some targets need a reduced stacksize.
+ */
+#if defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8)
+ #define STACK_SIZE DEFAULT_STACK_SIZE/4
+#else
+ #define STACK_SIZE DEFAULT_STACK_SIZE
+#endif
+
+void print_char(char c = '*') {
+ printf("%c", c);
+ fflush(stdout);
+}
+
+Mutex stdio_mutex;
+DigitalOut led(LED1);
+
+volatile int change_counter = 0;
+volatile bool changing_counter = false;
+volatile bool mutex_defect = false;
+
+bool manipulate_protected_zone(const int thread_delay) {
+ bool result = true;
+
+ stdio_mutex.lock(); // LOCK
+ if (changing_counter == true) {
+ // 'e' stands for error. If changing_counter is true access is not exclusively
+ print_char('e');
+ result = false;
+ mutex_defect = true;
+ }
+ changing_counter = true;
+
+ // Some action on protected
+ led = !led;
+ change_counter++;
+ print_char('.');
+ Thread::wait(thread_delay);
+
+ changing_counter = false;
+ stdio_mutex.unlock(); // UNLOCK
+ return result;
+}
+
+void test_thread(void const *args) {
+ const int thread_delay = int(args);
+ while (true) {
+ manipulate_protected_zone(thread_delay);
+ }
+}
+
+int main() {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default);
+ MBED_HOSTTEST_DESCRIPTION(Mutex resource lock);
+ MBED_HOSTTEST_START("RTOS_2");
+
+ const int t1_delay = THREAD_DELAY * 1;
+ const int t2_delay = THREAD_DELAY * 2;
+ const int t3_delay = THREAD_DELAY * 3;
+ Thread t2(test_thread, (void *)t2_delay, osPriorityNormal, STACK_SIZE);
+ Thread t3(test_thread, (void *)t3_delay, osPriorityNormal, STACK_SIZE);
+
+ while (true) {
+ // Thread 1 action
+ Thread::wait(t1_delay);
+ manipulate_protected_zone(t1_delay);
+ if (change_counter >= SIGNALS_TO_EMIT or mutex_defect == true) {
+ t2.terminate();
+ t3.terminate();
+ break;
+ }
+ }
+
+ fflush(stdout);
+ MBED_HOSTTEST_RESULT(!mutex_defect);
+ return 0;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/queue/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/queue/main.cpp
new file mode 100644
index 0000000000..4f794bc4b8
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/queue/main.cpp
@@ -0,0 +1,77 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "rtos.h"
+
+typedef struct {
+ float voltage; /* AD result of measured voltage */
+ float current; /* AD result of measured current */
+ uint32_t counter; /* A counter value */
+} message_t;
+
+#define CREATE_VOLTAGE(COUNTER) (COUNTER * 0.1) * 33
+#define CREATE_CURRENT(COUNTER) (COUNTER * 0.1) * 11
+#define QUEUE_SIZE 16
+#define QUEUE_PUT_DELAY 100
+
+/*
+ * The stack size is defined in cmsis_os.h mainly dependent on the underlying toolchain and
+ * the C standard library. For GCC, ARM_STD and IAR it is defined with a size of 2048 bytes
+ * and for ARM_MICRO 512. Because of reduce RAM size some targets need a reduced stacksize.
+ */
+#if defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8)
+ #define STACK_SIZE DEFAULT_STACK_SIZE/4
+#else
+ #define STACK_SIZE DEFAULT_STACK_SIZE
+#endif
+
+MemoryPool<message_t, QUEUE_SIZE> mpool;
+Queue<message_t, QUEUE_SIZE> queue;
+
+/* Send Thread */
+void send_thread (void const *argument) {
+ static uint32_t i = 10;
+ while (true) {
+ i++; // Fake data update
+ message_t *message = mpool.alloc();
+ message->voltage = CREATE_VOLTAGE(i);
+ message->current = CREATE_CURRENT(i);
+ message->counter = i;
+ queue.put(message);
+ Thread::wait(QUEUE_PUT_DELAY);
+ }
+}
+
+int main (void) {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(Queue messaging);
+ MBED_HOSTTEST_START("RTOS_5");
+
+ Thread thread(send_thread, NULL, osPriorityNormal, STACK_SIZE);
+ bool result = true;
+ int result_counter = 0;
+
+ while (true) {
+ osEvent evt = queue.get();
+ if (evt.status == osEventMessage) {
+ message_t *message = (message_t*)evt.value.p;
+ const float expected_voltage = CREATE_VOLTAGE(message->counter);
+ const float expected_current = CREATE_CURRENT(message->counter);
+ // Check using macros if received values correspond to values sent via queue
+ bool expected_values = (expected_voltage == message->voltage) &&
+ (expected_current == message->current);
+ result = result && expected_values;
+ const char *result_msg = expected_values ? "OK" : "FAIL";
+ printf("%3d %.2fV %.2fA ... [%s]\r\n", message->counter,
+ message->voltage,
+ message->current,
+ result_msg);
+ mpool.free(message);
+ if (result == false || ++result_counter == QUEUE_SIZE) {
+ break;
+ }
+ }
+ }
+ MBED_HOSTTEST_RESULT(result);
+ return 0;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/semaphore/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/semaphore/main.cpp
new file mode 100644
index 0000000000..1f35e9f473
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/semaphore/main.cpp
@@ -0,0 +1,75 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "rtos.h"
+
+#define THREAD_DELAY 75
+#define SEMAPHORE_SLOTS 2
+#define SEM_CHANGES 100
+
+/*
+ * The stack size is defined in cmsis_os.h mainly dependent on the underlying toolchain and
+ * the C standard library. For GCC, ARM_STD and IAR it is defined with a size of 2048 bytes
+ * and for ARM_MICRO 512. Because of reduce RAM size some targets need a reduced stacksize.
+ */
+#if defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8)
+ #define STACK_SIZE DEFAULT_STACK_SIZE/4
+#else
+ #define STACK_SIZE DEFAULT_STACK_SIZE
+#endif
+
+void print_char(char c = '*') {
+ printf("%c", c);
+ fflush(stdout);
+}
+
+Semaphore two_slots(SEMAPHORE_SLOTS);
+
+volatile int change_counter = 0;
+volatile int sem_counter = 0;
+volatile bool sem_defect = false;
+
+void test_thread(void const *delay) {
+ const int thread_delay = int(delay);
+ while (true) {
+ two_slots.wait();
+ sem_counter++;
+ const bool sem_lock_failed = sem_counter > SEMAPHORE_SLOTS;
+ const char msg = sem_lock_failed ? 'e' : sem_counter + '0';
+ print_char(msg);
+ if (sem_lock_failed) {
+ sem_defect = true;
+ }
+ Thread::wait(thread_delay);
+ print_char('.');
+ sem_counter--;
+ change_counter++;
+ two_slots.release();
+ }
+}
+
+int main (void) {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(Semaphore resource lock);
+ MBED_HOSTTEST_START("RTOS_3");
+
+ const int t1_delay = THREAD_DELAY * 1;
+ const int t2_delay = THREAD_DELAY * 2;
+ const int t3_delay = THREAD_DELAY * 3;
+ Thread t1(test_thread, (void *)t1_delay, osPriorityNormal, STACK_SIZE);
+ Thread t2(test_thread, (void *)t2_delay, osPriorityNormal, STACK_SIZE);
+ Thread t3(test_thread, (void *)t3_delay, osPriorityNormal, STACK_SIZE);
+
+ while (true) {
+ if (change_counter >= SEM_CHANGES or sem_defect == true) {
+ t1.terminate();
+ t2.terminate();
+ t3.terminate();
+ break;
+ }
+ }
+
+ fflush(stdout);
+ MBED_HOSTTEST_RESULT(!sem_defect);
+ return 0;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/signals/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/signals/main.cpp
new file mode 100644
index 0000000000..aefe72f93d
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/signals/main.cpp
@@ -0,0 +1,51 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "rtos.h"
+
+#define SIGNALS_TO_EMIT 100
+#define SIGNAL_HANDLE_DELEY 25
+#define SIGNAL_SET_VALUE 0x01
+
+/*
+ * The stack size is defined in cmsis_os.h mainly dependent on the underlying toolchain and
+ * the C standard library. For GCC, ARM_STD and IAR it is defined with a size of 2048 bytes
+ * and for ARM_MICRO 512. Because of reduce RAM size some targets need a reduced stacksize.
+ */
+#if defined(TARGET_STM32L053R8) || defined(TARGET_STM32L053C8)
+ #define STACK_SIZE DEFAULT_STACK_SIZE/4
+#else
+ #define STACK_SIZE DEFAULT_STACK_SIZE
+#endif
+
+DigitalOut led(LED1);
+volatile int signal_counter = 0;
+
+void led_thread(void const *argument) {
+ while (true) {
+ // Signal flags that are reported as event are automatically cleared.
+ Thread::signal_wait(SIGNAL_SET_VALUE);
+ led = !led;
+ signal_counter++;
+ }
+}
+
+int main (void) {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(Signals messaging);
+ MBED_HOSTTEST_START("RTOS_4");
+
+ Thread thread(led_thread, NULL, osPriorityNormal, STACK_SIZE);
+ bool result = true;
+
+ while (true) {
+ Thread::wait(2 * SIGNAL_HANDLE_DELEY);
+ thread.signal_set(SIGNAL_SET_VALUE);
+ if (signal_counter == SIGNALS_TO_EMIT) {
+ printf("Handled %d signals\r\n", signal_counter);
+ break;
+ }
+ }
+ MBED_HOSTTEST_RESULT(result);
+ return 0;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/timer/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/timer/main.cpp
new file mode 100644
index 0000000000..3c33551b0a
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/mbed/timer/main.cpp
@@ -0,0 +1,42 @@
+#include "mbed.h"
+#include "test_env.h"
+#include "rtos.h"
+
+DigitalOut LEDs[4] = {
+ DigitalOut(LED1), DigitalOut(LED2), DigitalOut(LED3), DigitalOut(LED4)
+};
+
+void print_char(char c = '*')
+{
+ printf("%c", c);
+ fflush(stdout);
+}
+
+void blink(void const *n) {
+ static int counter = 0;
+ const int led_id = int(n);
+ LEDs[led_id] = !LEDs[led_id];
+ if (++counter == 75) {
+ print_char();
+ counter = 0;
+ }
+}
+
+int main(void) {
+ MBED_HOSTTEST_TIMEOUT(15);
+ MBED_HOSTTEST_SELECT(wait_us_auto);
+ MBED_HOSTTEST_DESCRIPTION(Timer);
+ MBED_HOSTTEST_START("RTOS_7");
+
+ RtosTimer led_1_timer(blink, osTimerPeriodic, (void *)0);
+ RtosTimer led_2_timer(blink, osTimerPeriodic, (void *)1);
+ RtosTimer led_3_timer(blink, osTimerPeriodic, (void *)2);
+ RtosTimer led_4_timer(blink, osTimerPeriodic, (void *)3);
+
+ led_1_timer.start(200);
+ led_2_timer.start(100);
+ led_3_timer.start(50);
+ led_4_timer.start(25);
+
+ Thread::wait(osWaitForever);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/usb/device/audio/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/usb/device/audio/main.cpp
new file mode 100644
index 0000000000..e18891032a
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/usb/device/audio/main.cpp
@@ -0,0 +1,40 @@
+// Playback example with the USBAUDIO library
+
+#include "mbed.h"
+#include "USBAudio.h"
+
+// frequency: 48 kHz
+#define FREQ_SPK 48000
+#define FREQ_MIC 48000
+
+// 2channels: stereo
+#define NB_CHA_SPK 2
+#define NB_CHA_MIC 2
+
+// length computed: each ms, we receive 48 * 16bits ->48 * 2 bytes. as there are two channels, the length will be 48 * 2 * 2
+#define LENGTH_AUDIO_PACKET_SPK (FREQ_SPK / 500) * NB_CHA_SPK
+#define LENGTH_AUDIO_PACKET_MIC (FREQ_MIC / 500) * NB_CHA_MIC
+
+// USBAudio object
+USBAudio audio(FREQ_SPK, NB_CHA_SPK, FREQ_MIC, NB_CHA_MIC, 0xab45, 0x0378);
+
+int main() {
+ // buffer of int
+ int buf_in[LENGTH_AUDIO_PACKET_SPK/sizeof(int)];
+ int buf_out[LENGTH_AUDIO_PACKET_MIC/sizeof(int)];
+ int * stream_out = buf_in;
+ int * stream_in = buf_out;
+ int * tmp = NULL;
+
+ while (1) {
+ // read and write one audio packet each frame
+ audio.readWrite((uint8_t *)stream_in, (uint8_t *)stream_out);
+
+ // swap the buffers
+ tmp = stream_in;
+ stream_in = stream_out;
+ stream_out = tmp;
+ }
+}
+
+
diff --git a/tool/mbed/mbed-sdk/libraries/tests/usb/device/basic/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/usb/device/basic/main.cpp
new file mode 100644
index 0000000000..9f786559fc
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/usb/device/basic/main.cpp
@@ -0,0 +1,28 @@
+#include <math.h>
+
+#include "mbed.h"
+#include "USBMouse.h"
+
+USBMouse mouse(ABS_MOUSE);
+
+int main(void) {
+ int x_center = (X_MAX_ABS - X_MIN_ABS)/2;
+ int y_center = (Y_MAX_ABS - Y_MIN_ABS)/2;
+ int16_t x_screen = 0;
+ int16_t y_screen = 0;
+
+ int32_t x_origin = x_center;
+ int32_t y_origin = y_center;
+ int32_t radius = 5000;
+ int32_t angle = 0;
+
+ while (1) {
+ x_screen = x_origin + cos((double)angle*3.14/180.0)*radius;
+ y_screen = y_origin + sin((double)angle*3.14/180.0)*radius;
+ printf("cos: %f, sin: %f\r\n", cos((double)angle*3.14/180.0)*radius, sin((double)angle)*radius);
+
+ mouse.move(x_screen, y_screen);
+ angle += 3;
+ wait(0.01);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/usb/device/keyboard/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/usb/device/keyboard/main.cpp
new file mode 100644
index 0000000000..3c4cbf15a1
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/usb/device/keyboard/main.cpp
@@ -0,0 +1,21 @@
+#include "mbed.h"
+#include "USBKeyboard.h"
+
+//LED1: NUM_LOCK
+//LED2: CAPS_LOCK
+//LED3: SCROLL_LOCK
+BusOut leds(LED1, LED2, LED3);
+
+//USBKeyboard
+USBKeyboard keyboard;
+
+int main(void) {
+ while (1) {
+ keyboard.mediaControl(KEY_VOLUME_DOWN);
+ keyboard.printf("Hello World from Mbed\r\n");
+ keyboard.keyCode('s', KEY_CTRL);
+ keyboard.keyCode(KEY_CAPS_LOCK);
+ leds = keyboard.lockStatus();
+ wait(1);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/usb/device/midi/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/usb/device/midi/main.cpp
new file mode 100644
index 0000000000..b0a6cd381e
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/usb/device/midi/main.cpp
@@ -0,0 +1,73 @@
+#include "mbed.h"
+#include "USBMIDI.h"
+
+USBMIDI midi;
+Serial pc(USBTX, USBRX);
+
+// MIDI IN
+void transmitMessage(MIDIMessage msg) {
+ switch (msg.type()) {
+ case MIDIMessage::NoteOnType:
+ wait(0.1);
+ midi.write(MIDIMessage::NoteOn(msg.key()));
+ break;
+ case MIDIMessage::NoteOffType:
+ wait(0.1);
+ midi.write(MIDIMessage::NoteOff(msg.key()));
+ break;
+ case MIDIMessage::ProgramChangeType:
+ wait(0.1);
+ midi.write(MIDIMessage::ProgramChange(msg.program()));
+ break;
+ case MIDIMessage::SysExType:
+ wait(0.1);
+ unsigned char tmp[64];
+ for(int i=0;i<msg.length-1;i++) {
+ tmp[i]=msg.data[i+1];
+ }
+ midi.write(MIDIMessage::SysEx(tmp,msg.length-1));
+ break;
+ default:
+ break;
+ }
+}
+
+int main(void)
+{
+ wait(5);
+ // MIDI OUT
+
+ // set piano
+ midi.write(MIDIMessage::ProgramChange(1));
+ wait(0.1);
+
+ // play A
+ midi.write(MIDIMessage::NoteOn(21));
+ wait(0.1);
+ midi.write(MIDIMessage::NoteOff(21));
+ wait(0.1);
+
+ // GM reset
+ unsigned char gm_reset[]={0xF0,0x7E,0x7F,0x09,0x01,0xF7};
+ midi.write(MIDIMessage::SysEx(gm_reset,6));
+ wait(0.1);
+
+ // GM Master volume max
+ unsigned char gm_master_vol_max[]={0xF0,0x7F,0x7F,0x04,0x01,0x7F,0x7F,0xF7};
+ midi.write(MIDIMessage::SysEx(gm_master_vol_max,8));
+ wait(0.1);
+
+ // GS reset
+ unsigned char gs_reset[]={0xF0,0x41,0x10,0x42,0x12,0x40,0x00,0x7F,0x00,0x41,0xF7};
+ midi.write(MIDIMessage::SysEx(gs_reset,11));
+ wait(0.1);
+
+ // GS Master volume max
+ unsigned char gs_master_vol_max[]={0xF0,0x41,0x10,0x42,0x12,0x40,0x00,0x04,0x7F,0x3D,0xF7};
+ midi.write(MIDIMessage::SysEx(gs_master_vol_max,11));
+ wait(0.1);
+
+ midi.attach(transmitMessage);
+
+ while(1);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/usb/device/mouse_keyboard/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/usb/device/mouse_keyboard/main.cpp
new file mode 100644
index 0000000000..1daae66deb
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/usb/device/mouse_keyboard/main.cpp
@@ -0,0 +1,22 @@
+#include "mbed.h"
+#include "USBMouseKeyboard.h"
+
+//LED1: NUM_LOCK
+//LED2: CAPS_LOCK
+//LED3: SCROLL_LOCK
+BusOut leds(LED1, LED2, LED3);
+
+//USBMouseKeyboard
+USBMouseKeyboard key_mouse;
+
+int main(void) {
+ while (1) {
+ key_mouse.mediaControl(KEY_VOLUME_DOWN);
+ key_mouse.printf("Hello World from Mbed\r\n");
+ key_mouse.keyCode('s', KEY_CTRL);
+ key_mouse.move(20, 0);
+ key_mouse.keyCode(KEY_SCROLL_LOCK);
+ leds = key_mouse.lockStatus();
+ wait(1);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/usb/device/raw_hid/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/usb/device/raw_hid/main.cpp
new file mode 100644
index 0000000000..0a5d69cfee
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/usb/device/raw_hid/main.cpp
@@ -0,0 +1,26 @@
+#include "mbed.h"
+#include "USBHID.h"
+
+//We declare a USBHID device
+USBHID hid;
+
+//This report will contain data to be sent
+HID_REPORT send_report;
+
+Ticker tic;
+
+void tic_handler();
+void tic_handler() {
+ hid.send(&send_report);
+}
+
+int main(void) {
+ //Fill the report
+ for(int i = 0; i < 64; i++)
+ send_report.data[i] = i;
+ send_report.length = 64;
+
+ tic.attach(tic_handler, 1);
+
+ while (1);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/usb/device/serial/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/usb/device/serial/main.cpp
new file mode 100644
index 0000000000..73e52bbfae
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/usb/device/serial/main.cpp
@@ -0,0 +1,18 @@
+#include "mbed.h"
+#include "USBSerial.h"
+
+//Virtual serial port over USB
+USBSerial serial;
+DigitalOut l1(LED1);
+
+int main(void) {
+ int i = 0;
+
+ while(1)
+ {
+ l1 = !l1;
+ printf("Hello\r\n");
+ serial.printf("I am a virtual serial port: %d\r\n", i++);
+ wait(0.1);
+ }
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/basic/basic.cpp b/tool/mbed/mbed-sdk/libraries/tests/utest/basic/basic.cpp
new file mode 100644
index 0000000000..92d77cbc07
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/utest/basic/basic.cpp
@@ -0,0 +1,13 @@
+#include "TestHarness.h"
+
+TEST_GROUP(FirstTestGroup)
+{
+};
+
+TEST(FirstTestGroup, FirstTest)
+{
+ /* These checks are here to make sure assertions outside test runs don't crash */
+ CHECK(true);
+ LONGS_EQUAL(1, 1);
+ STRCMP_EQUAL("mbed SDK!", "mbed SDK!");
+} \ No newline at end of file
diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/bus/busout_ut.cpp b/tool/mbed/mbed-sdk/libraries/tests/utest/bus/busout_ut.cpp
new file mode 100644
index 0000000000..d7f2a408df
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/utest/bus/busout_ut.cpp
@@ -0,0 +1,87 @@
+#include "TestHarness.h"
+#include <utility>
+#include "mbed.h"
+
+TEST_GROUP(BusOut_mask)
+{
+};
+
+TEST(BusOut_mask, led_1_2_3)
+{
+ BusOut bus_data(LED1, LED2, LED3);
+ CHECK_EQUAL(0x07, bus_data.mask());
+}
+
+TEST(BusOut_mask, led_nc_nc_nc_nc)
+{
+ BusOut bus_data(NC, NC, NC, NC);
+ CHECK_EQUAL(0x00, bus_data.mask());
+}
+
+TEST(BusOut_mask, led_1_2_3_nc_nc)
+{
+ BusOut bus_data(LED1, LED2, LED3, NC, NC);
+ CHECK_EQUAL(0x07, bus_data.mask());
+}
+
+TEST(BusOut_mask, led_1_nc_2_nc_nc_3)
+{
+ BusOut bus_data(LED1, NC, LED2, NC, NC, LED3);
+ CHECK_EQUAL(0x25, bus_data.mask());
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+TEST_GROUP(BusOut_dummy)
+{
+};
+
+TEST(BusOut_dummy, dummy)
+{
+}
+
+#ifdef MBED_OPERATORS
+TEST_GROUP(BusOut_digitalout_write)
+{
+};
+
+TEST(BusOut_digitalout_write, led_nc)
+{
+ BusOut bus_data(NC);
+ CHECK_EQUAL(false, bus_data[0].is_connected())
+}
+
+
+TEST(BusOut_digitalout_write, led_1_2_3)
+{
+ BusOut bus_data(LED1, LED2, LED3);
+ bus_data[0].write(1);
+ bus_data[1].write(1);
+ bus_data[2].write(1);
+ CHECK(bus_data[0].read());
+ CHECK(bus_data[1].read());
+ CHECK(bus_data[2].read());
+}
+
+TEST(BusOut_digitalout_write, led_1_2_3_nc_nc)
+{
+ BusOut bus_data(LED1, LED2, LED3, NC, NC);
+ bus_data[0].write(0);
+ bus_data[1].write(0);
+ bus_data[2].write(0);
+ CHECK(bus_data[0].read() == 0);
+ CHECK(bus_data[1].read() == 0);
+ CHECK(bus_data[2].read() == 0);
+}
+
+TEST(BusOut_digitalout_write, led_1_nc_2_nc_nc_3)
+{
+ BusOut bus_data(LED1, NC, LED2, NC, NC, LED3);
+ bus_data[0].write(1);
+ bus_data[2].write(0);
+ bus_data[5].write(0);
+ CHECK(bus_data[0].read());
+ CHECK(bus_data[2].read() == 0);
+ CHECK(bus_data[5].read() == 0);
+}
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/general/general.cpp b/tool/mbed/mbed-sdk/libraries/tests/utest/general/general.cpp
new file mode 100644
index 0000000000..ba56a0f181
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/utest/general/general.cpp
@@ -0,0 +1,90 @@
+#include "TestHarness.h"
+#include <utility>
+#include "mbed.h"
+
+TEST_GROUP(Integer_Constant_Division)
+{
+ uint32_t test_64(uint64_t ticks) {
+ ticks >>= 3; // divide by 8
+ if (ticks > 0xFFFFFFFF) {
+ ticks /= 3;
+ } else {
+ ticks = (ticks * 0x55555556) >> 32; // divide by 3
+ }
+ return (uint32_t)(0xFFFFFFFF & ticks);
+ }
+};
+
+// 0xFFFFFFFF * 8 = 0x7fffffff8
+TEST(Integer_Constant_Division, Divide_By_8)
+{
+ std::pair<uint32_t, uint64_t> values = std::make_pair(0x55555555, 0x7FFFFFFF8);
+ uint32_t test_ret = test_64(values.second);
+ CHECK_EQUAL(values.first, test_ret);
+}
+
+// 0xFFFFFFFF * 24 = 0x17ffffffe8
+TEST(Integer_Constant_Division, Divide_By_24)
+{
+ std::pair<uint32_t, uint64_t> values = std::make_pair(0xFFFFFFFF, 0x17FFFFFFE8);
+ uint32_t test_ret = test_64(values.second);
+ CHECK_EQUAL(values.first, test_ret);
+}
+
+TEST_GROUP(RTC_Test)
+{
+ char buffer[32];
+ const int CUSTOM_TIME = 1256729737;
+};
+
+TEST(RTC_Test, Check_Set_Time)
+{
+ set_time(CUSTOM_TIME); // Set RTC time to Wed, 28 Oct 2009 11:35:37
+ time_t seconds = time(NULL);
+ strftime(buffer, 32, "%Y-%m-%d %H:%M:%S %p", localtime(&seconds));
+ STRCMP_EQUAL(buffer, "2009-10-28 11:35:37 AM");
+}
+
+TEST_GROUP(C_String_Format)
+{
+ char buffer[256];
+};
+
+#define POSITIVE_INTEGERS 32768,3214,999,100,1,0,1,4231,999,4123,32760,99999
+TEST(C_String_Format, Sprintf_Positive_Integers)
+{
+ sprintf(buffer, "%u %d %u %d %u %d %u %d %u %d %u %d", POSITIVE_INTEGERS);
+ STRCMP_EQUAL(buffer, "32768 3214 999 100 1 0 1 4231 999 4123 32760 99999");
+}
+
+#define NEGATIVE_INTEGERS -32768,-3214,-999,-100,-1,0,-1,-4231,-999,-4123,-32760,-99999
+TEST(C_String_Format, Sprintf_Negative_Integers)
+{
+ sprintf(buffer, "%i %d %i %d %i %d %i %d %i %d %i %i", NEGATIVE_INTEGERS);
+ STRCMP_EQUAL(buffer, "-32768 -3214 -999 -100 -1 0 -1 -4231 -999 -4123 -32760 -99999");
+}
+
+#ifdef DEVICE_SEMIHOST
+#include "semihost_api.h"
+
+TEST_GROUP(Device_Semihost)
+{
+ char uid[48];
+};
+
+TEST(Device_Semihost, semihost_connected)
+{
+ CHECK(semihost_connected());
+}
+
+TEST(Device_Semihost, mbed_interface_connected)
+{
+ CHECK(mbed_interface_connected());
+}
+
+TEST(Device_Semihost, mbed_interface_uid)
+{
+ CHECK_EQUAL(mbed_interface_uid(uid), 0);
+}
+
+#endif
diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/semihost_fs/semihost_fs.cpp b/tool/mbed/mbed-sdk/libraries/tests/utest/semihost_fs/semihost_fs.cpp
new file mode 100644
index 0000000000..adb49025fb
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/utest/semihost_fs/semihost_fs.cpp
@@ -0,0 +1,63 @@
+#include "TestHarness.h"
+#include "mbed.h"
+#include "semihost_api.h"
+#include <stdio.h>
+
+#define FILENAME "/local/out.txt"
+#define TEST_STRING "Hello World!"
+
+TEST_GROUP(FirstTestGroup)
+{
+
+ FILE *test_open(const char *mode) {
+ FILE *f = fopen(FILENAME, mode);
+ return f;
+ }
+
+ bool test_write(FILE *f, char *str, int str_len) {
+ int n = fprintf(f, str);
+ return (n == str_len) ? true : false;
+ }
+
+ bool test_read(FILE *f, char *str, int str_len) {
+ int n = fread(str, sizeof(unsigned char), str_len, f);
+ return (n == str_len) ? true : false;
+ }
+
+ bool test_close(FILE *f) {
+ int rc = fclose(f);
+ return rc ? true : false;
+ }
+
+};
+
+TEST(FirstTestGroup, FirstTest)
+{
+ CHECK_TEXT(semihost_connected(), "Semihost not connected")
+
+ LocalFileSystem local("local");
+
+ char *str = TEST_STRING;
+ char *buffer = (char *)malloc(sizeof(unsigned char) * strlen(TEST_STRING));
+ int str_len = strlen(TEST_STRING);
+
+ CHECK_TEXT(buffer != NULL, "Buffer allocation failed");
+ CHECK_TEXT(str_len > 0, "Test string is empty (len <= 0)");
+
+ {
+ // Perform write / read tests
+ FILE *f = NULL;
+ // Write
+ f = test_open("w");
+ CHECK_TEXT(f != NULL, "Error opening file for writing")
+ CHECK_TEXT(test_write(f, str, str_len), "Error writing file");
+ CHECK_TEXT(test_close(f) != EOF, "Error closing file after write");
+
+ // Read
+ f = test_open("r");
+ CHECK_TEXT(f != NULL, "Error opening file for reading")
+ CHECK_TEXT(test_read(f, buffer, str_len), "Error reading file");
+ CHECK_TEXT(test_close(f) != EOF, "Error closing file after read");
+ }
+ CHECK(strncmp(buffer, str, str_len) == 0);
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.cpp b/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.cpp
new file mode 100644
index 0000000000..2c1969ce07
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.cpp
@@ -0,0 +1,29 @@
+#include "CommandLineTestRunner.h"
+#include <stdio.h>
+#include "mbed.h"
+#include "testrunner.h"
+#include "test_env.h"
+
+/**
+Object 'mbed_cpputest_console' is used to show prints on console.
+It is declared in \cpputest\src\Platforms\armcc\UtestPlatform.cpp
+*/
+Serial mbed_cpputest_console(STDIO_UART_TX, STDIO_UART_RX);
+
+int main(int ac, char** av) {
+ MBED_HOSTTEST_TIMEOUT(20);
+ MBED_HOSTTEST_SELECT(default_auto);
+ MBED_HOSTTEST_DESCRIPTION(Unit test);
+ MBED_HOSTTEST_START("UT");
+
+ unsigned failureCount = 0;
+ {
+ // Some compilers may not pass ac, av so we need to supply them ourselves
+ int ac = 2;
+ char* av[] = {__FILE__, "-v"};
+ failureCount = CommandLineTestRunner::RunAllTests(ac, av);
+ }
+
+ MBED_HOSTTEST_RESULT(failureCount == 0);
+ return failureCount;
+}
diff --git a/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.h b/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.h
new file mode 100644
index 0000000000..b36c1bfc9e
--- /dev/null
+++ b/tool/mbed/mbed-sdk/libraries/tests/utest/testrunner/testrunner.h
@@ -0,0 +1,4 @@
+#ifndef TEST_RUNNER_H_
+#define TEST_RUNNER_H_
+
+#endif