diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/modbus_tcp_client.cpp b/MATLAB/MODBUS_TCP_TESTING/modbus_tcp_client.cpp similarity index 69% rename from MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/modbus_tcp_client.cpp rename to MATLAB/MODBUS_TCP_TESTING/modbus_tcp_client.cpp index 68f86e6..d52884e 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/modbus_tcp_client.cpp +++ b/MATLAB/MODBUS_TCP_TESTING/modbus_tcp_client.cpp @@ -1,5 +1,4 @@ #include "modbus_tcp_client.h" -#include // --- Helper: Compute maximum read response size based on configured counts. int ModbusTCPClient::computeMaxReadResponseSize() const { @@ -33,12 +32,13 @@ ModbusTCPClient::ModbusTCPClient(const char* ip, int port, int numCoils, int num startCoils(startCoils), startDiscreteInputs(startDI), startInputRegisters(startIR), startHoldingRegisters(startHR) { // Allocate internal storage for automatic readAll()/writeAll() mode. - coilsRead = new bool[numCoils](); - coilsWrite = new bool[numCoils](); - discreteInputs = new bool[numDI](); - inputRegisters = new uint16_t[numIR](); - holdingRegistersRead = new uint16_t[numHR](); - holdingRegistersWrite = new uint16_t[numHR](); + coilsRead = (numCoils > 0) ? new bool[numCoils]() : nullptr; + coilsWrite = (numCoils > 0) ? new bool[numCoils]() : nullptr; + discreteInputs = (numDI > 0) ? new bool[numDI]() : nullptr; + inputRegisters = (numIR > 0) ? new uint16_t[numIR]() : nullptr; + holdingRegistersRead = (numHR > 0) ? new uint16_t[numHR]() : nullptr; + holdingRegistersWrite = (numHR > 0) ? new uint16_t[numHR]() : nullptr; + // Allocate shared communication buffers. commRequestBufferSize = computeMaxWriteRequestSize(); // Worst-case request size. @@ -46,8 +46,12 @@ ModbusTCPClient::ModbusTCPClient(const char* ip, int port, int numCoils, int num commRequestBuffer = new uint8_t[commRequestBufferSize]; commResponseBuffer = new uint8_t[commResponseBufferSize]; - // Initialize the socket mutex. - pthread_mutex_init(&socketMutex, NULL); + // Initialize the socket mutex with a recursive attribute. + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&socketMutex, &attr); + pthread_mutexattr_destroy(&attr); } ModbusTCPClient::ModbusTCPClient(const char* ip, int port) @@ -66,8 +70,12 @@ ModbusTCPClient::ModbusTCPClient(const char* ip, int port) commRequestBuffer = new uint8_t[commRequestBufferSize]; commResponseBuffer = new uint8_t[commResponseBufferSize]; - // Initialize the socket mutex. - pthread_mutex_init(&socketMutex, NULL); + // Initialize the socket mutex with a recursive attribute. + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&socketMutex, &attr); + pthread_mutexattr_destroy(&attr); } ModbusTCPClient::~ModbusTCPClient() { @@ -93,46 +101,134 @@ void ModbusTCPClient::setStartAddresses(int startCoils, int startDI, int startIR } // --- Connection Functions --- +// bool ModbusTCPClient::connectServer() { +// //pthread_mutex_lock(&socketMutex); +// if (socketFD != -1) { +// //pthread_mutex_unlock(&socketMutex); +// return true; +// } +// for (int attempts = 0; attempts < 5; attempts++) { +// socketFD = socket(AF_INET, SOCK_STREAM, 0); +// if (socketFD < 0) { +// printf("MODBUS_TCP_CLIENT: Could not create socket\n"); +// //pthread_mutex_unlock(&socketMutex); +// return false; +// } +// struct sockaddr_in serverAddr; +// serverAddr.sin_family = AF_INET; +// serverAddr.sin_port = htons(serverPort); +// inet_pton(AF_INET, serverIP, &serverAddr.sin_addr); +// printf("MODBUS_TCP_CLIENT: Attempting to connect (Try %d)...\n", attempts + 1); +// if (connect(socketFD, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == 0) { +// printf("MODBUS_TCP_CLIENT: Connected to %s:%d\n", serverIP, serverPort); +// //pthread_mutex_unlock(&socketMutex); +// return true; +// } +// printf("MODBUS_TCP_CLIENT: Connection failed, retrying...\n"); +// disconnectServer(); +// usleep(timeoutMilliseconds*1000); +// } +// //pthread_mutex_unlock(&socketMutex); +// return false; +// } + bool ModbusTCPClient::connectServer() { - pthread_mutex_lock(&socketMutex); + // If already connected, return true. if (socketFD != -1) { - pthread_mutex_unlock(&socketMutex); return true; } + for (int attempts = 0; attempts < 5; attempts++) { + // Create a new socket. socketFD = socket(AF_INET, SOCK_STREAM, 0); if (socketFD < 0) { printf("MODBUS_TCP_CLIENT: Could not create socket\n"); - pthread_mutex_unlock(&socketMutex); return false; } + + // Set the socket to non-blocking mode. + int flags = fcntl(socketFD, F_GETFL, 0); + if (flags < 0) { + printf("MODBUS_TCP_CLIENT: fcntl F_GETFL"); + disconnectServer(); + return false; + } + if (fcntl(socketFD, F_SETFL, flags | O_NONBLOCK) < 0) { + printf("MODBUS_TCP_CLIENT: fcntl F_SETFL O_NONBLOCK"); + disconnectServer(); + return false; + } + + // Prepare the server address. struct sockaddr_in serverAddr; serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(serverPort); inet_pton(AF_INET, serverIP, &serverAddr.sin_addr); + printf("MODBUS_TCP_CLIENT: Attempting to connect (Try %d)...\n", attempts + 1); - if (connect(socketFD, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == 0) { - printf("MODBUS_TCP_CLIENT: Connected to %s:%d\n", serverIP, serverPort); - pthread_mutex_unlock(&socketMutex); + int res = connect(socketFD, (struct sockaddr*)&serverAddr, sizeof(serverAddr)); + if (res < 0) { + if (errno == EINPROGRESS) { + // Connection is in progress, use select() to wait. + fd_set wfds; + FD_ZERO(&wfds); + FD_SET(socketFD, &wfds); + + struct timeval tv; + tv.tv_sec = timeoutMilliseconds / 1000; + tv.tv_usec = (timeoutMilliseconds % 1000) * 1000; + + int sel = select(socketFD + 1, NULL, &wfds, NULL, &tv); + if (sel > 0) { + int so_error = 0; + socklen_t len = sizeof(so_error); + if (getsockopt(socketFD, SOL_SOCKET, SO_ERROR, &so_error, &len) < 0) { + printf("MODBUS_TCP_CLIENT: getsockopt failed\n"); + disconnectServer(); + continue; + } + if (so_error == 0) { + // Connected successfully. Restore blocking mode. + flags = fcntl(socketFD, F_GETFL, 0); + fcntl(socketFD, F_SETFL, flags & ~O_NONBLOCK); + printf("MODBUS_TCP_CLIENT: Connected to %s:%d\n", serverIP, serverPort); + return true; + } else { + printf("MODBUS_TCP_CLIENT: Connect failed with error %d\n", so_error); + } + } else if (sel == 0) { + printf("MODBUS_TCP_CLIENT: Connect select timeout\n"); + } else { + printf("MODBUS_TCP_CLIENT: Select during connect failed\n"); + } + } else { + printf("MODBUS_TCP_CLIENT: Connect error\n"); + } + } else { + // Unexpected immediate success in non-blocking mode. + flags = fcntl(socketFD, F_GETFL, 0); + fcntl(socketFD, F_SETFL, flags & ~O_NONBLOCK); + printf("MODBUS_TCP_CLIENT: Connected immediately to %s:%d\n", serverIP, serverPort); return true; } + + // If connection failed, disconnect and wait before retrying. printf("MODBUS_TCP_CLIENT: Connection failed, retrying...\n"); - pthread_mutex_unlock(&socketMutex); disconnectServer(); - usleep(100000); + usleep(timeoutMilliseconds * 1000); } - pthread_mutex_unlock(&socketMutex); return false; } void ModbusTCPClient::disconnectServer() { - pthread_mutex_lock(&socketMutex); + ////pthread_mutex_lock(&socketMutex); if (socketFD != -1) { + shutdown(socketFD, SHUT_RDWR); close(socketFD); socketFD = -1; printf("MODBUS_TCP_CLIENT: Disconnected from server\n"); } - pthread_mutex_unlock(&socketMutex); + //thread_mutex_unlock(&socketMutex); } bool ModbusTCPClient::isConnected() const { @@ -150,7 +246,7 @@ void ModbusTCPClient::setTimeout(int milliseconds) { } bool ModbusTCPClient::sendRequest(uint8_t* request, int requestSize) { - if (socketFD == -1) { + if (!isConnected()) { printf("MODBUS_TCP_CLIENT: Not connected. Cannot send request.\n"); return false; } @@ -182,6 +278,11 @@ bool ModbusTCPClient::receiveResponse(uint8_t* response, int expectedSize) { disconnectServer(); return false; } + // Make sure we are still connected before we do a read to prevent a hardfault + if (!isConnected()) { + printf("MODBUS_TCP_CLIENT: Connection lost while reading. Disconnecting...\n"); + return false; + } int bytesReceived = read(socketFD, response + totalBytesReceived, expectedSize - totalBytesReceived); if (bytesReceived <= 0) { printf("MODBUS_TCP_CLIENT: Connection lost while reading. Disconnecting...\n"); @@ -262,33 +363,33 @@ void ModbusTCPClient::buildWriteMultipleRequest(uint8_t* buffer, ModbusFunction // --- High-Level Read/Write Functions --- ModbusError ModbusTCPClient::readCoil(int address, bool &coilState) { - pthread_mutex_lock(&socketMutex); + //pthread_mutex_lock(&socketMutex); buildReadRequest(commRequestBuffer, ModbusFunction::READ_COIL, address, 1); if (!sendRequest(commRequestBuffer, 12)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // Expect 10 bytes: header (9 bytes) + 1 byte data int expectedSize = 9 + 1; if (!receiveResponse(commResponseBuffer, expectedSize)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // Handle MODBUS exception responses (0x80 + function code) if (commResponseBuffer[7] & 0x80) { printf("MODBUS_TCP_CLIENT: Exception Code %02X\n", commResponseBuffer[8]); - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::EXCEPTION_RESPONSE; } // Ensure the function code in the response matches the request. if (commResponseBuffer[7] != static_cast(ModbusFunction::READ_COIL)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::INVALID_RESPONSE; } // Set the internal coil state from the response coilState = (commResponseBuffer[9] & 0x01) != 0; - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::NONE; } @@ -297,28 +398,28 @@ ModbusError ModbusTCPClient::readMultipleCoils(int address, int count, bool coil printf("MODBUS_TCP_CLIENT: Invalid coil count (1-2000 allowed)\n"); return ModbusError::INVALID_RESPONSE; } - pthread_mutex_lock(&socketMutex); + //pthread_mutex_lock(&socketMutex); buildReadRequest(commRequestBuffer, ModbusFunction::READ_COIL, address, count); if (!sendRequest(commRequestBuffer, 12)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // Expected response size: fixed header (9 bytes) + variable byte count. int byteCount = (count + 7) / 8; // 1 byte per 8 coils int expectedSize = 9 + byteCount; if (!receiveResponse(commResponseBuffer, expectedSize)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // Handle MODBUS exception responses (0x80 + function code) if (commResponseBuffer[7] & 0x80) { printf("MODBUS_TCP_CLIENT: MODBUS Exception Code %02X\n", commResponseBuffer[8]); - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::EXCEPTION_RESPONSE; } // Ensure the function code in the response matches the request. if (commResponseBuffer[7] != static_cast(ModbusFunction::READ_COIL)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::INVALID_RESPONSE; } // Extract coil values: data starts at index 9. @@ -327,38 +428,38 @@ ModbusError ModbusTCPClient::readMultipleCoils(int address, int count, bool coil int bitIndex = i % 8; coilStates[i] = (commResponseBuffer[byteIndex] >> bitIndex) & 0x01; } - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::NONE; } ModbusError ModbusTCPClient::readDiscreteInput(int address, bool &discreteInput) { - pthread_mutex_lock(&socketMutex); + //pthread_mutex_lock(&socketMutex); // Build a request for one discrete input (quantity = 1) buildReadRequest(commRequestBuffer, ModbusFunction::READ_DISCRETE_INPUT, address, 1); if (!sendRequest(commRequestBuffer, 12)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // Expect 10 bytes: header (9 bytes) + 1 byte data int expectedSize = 9 + 1; if (!receiveResponse(commResponseBuffer, expectedSize)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // Check for MODBUS exception response if (commResponseBuffer[7] & 0x80) { printf("MODBUS_TCP_CLIENT: Exception Code %02X\n", commResponseBuffer[8]); - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::EXCEPTION_RESPONSE; } // Validate function code if (commResponseBuffer[7] != static_cast(ModbusFunction::READ_DISCRETE_INPUT)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::INVALID_RESPONSE; } // Extract the discrete input state (first bit of the data byte at index 9) discreteInput = (commResponseBuffer[9] & 0x01) != 0; - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::NONE; } @@ -367,26 +468,26 @@ ModbusError ModbusTCPClient::readMultipleDiscreteInputs(int address, int count, printf("MODBUS_TCP_CLIENT: Invalid discrete input count (1- allowed)\n"); return ModbusError::INVALID_RESPONSE; } - pthread_mutex_lock(&socketMutex); + //pthread_mutex_lock(&socketMutex); buildReadRequest(commRequestBuffer, ModbusFunction::READ_DISCRETE_INPUT, address, count); if (!sendRequest(commRequestBuffer, 12)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // Expected response: 9-byte header + ceil(count/8) bytes of data int byteCount = (count + 7) / 8; int expectedSize = 9 + byteCount; if (!receiveResponse(commResponseBuffer, expectedSize)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } if (commResponseBuffer[7] & 0x80) { printf("MODBUS_TCP_CLIENT: Exception Code %02X\n", commResponseBuffer[8]); - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::EXCEPTION_RESPONSE; } if (commResponseBuffer[7] != static_cast(ModbusFunction::READ_DISCRETE_INPUT)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::INVALID_RESPONSE; } // Extract each discrete input bit from the data starting at index 9 @@ -395,35 +496,35 @@ ModbusError ModbusTCPClient::readMultipleDiscreteInputs(int address, int count, int bitIndex = i % 8; discreteInputsArray[i] = (commResponseBuffer[byteIndex] >> bitIndex) & 0x01; } - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::NONE; } ModbusError ModbusTCPClient::readHoldingRegister(int address, uint16_t &holdingRegister) { - pthread_mutex_lock(&socketMutex); + //pthread_mutex_lock(&socketMutex); buildReadRequest(commRequestBuffer, ModbusFunction::READ_HOLDING_REGISTER, address, 1); if (!sendRequest(commRequestBuffer, 12)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // For one register, expect 9-byte header + 2 bytes data = 11 bytes total int expectedSize = 9 + 2; if (!receiveResponse(commResponseBuffer, expectedSize)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } if (commResponseBuffer[7] & 0x80) { printf("MODBUS_TCP_CLIENT: Exception Code %02X\n", commResponseBuffer[8]); - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::EXCEPTION_RESPONSE; } if (commResponseBuffer[7] != static_cast(ModbusFunction::READ_HOLDING_REGISTER)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::INVALID_RESPONSE; } // Extract the register value (big-endian: data at indices 9 and 10) holdingRegister = (commResponseBuffer[9] << 8) | commResponseBuffer[10]; - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::NONE; } @@ -432,59 +533,59 @@ ModbusError ModbusTCPClient::readMultipleHoldingRegisters(int address, int count printf("MODBUS_TCP_CLIENT: Invalid holding register count (1-125 allowed)\n"); return ModbusError::INVALID_RESPONSE; } - pthread_mutex_lock(&socketMutex); + //pthread_mutex_lock(&socketMutex); buildReadRequest(commRequestBuffer, ModbusFunction::READ_HOLDING_REGISTER, address, count); if (!sendRequest(commRequestBuffer, 12)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // For multiple registers: expected size = 9 + (count * 2) int expectedSize = 9 + (count * 2); if (!receiveResponse(commResponseBuffer, expectedSize)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } if (commResponseBuffer[7] & 0x80) { printf("MODBUS_TCP_CLIENT: Exception Code %02X\n", commResponseBuffer[8]); - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::EXCEPTION_RESPONSE; } if (commResponseBuffer[7] != static_cast(ModbusFunction::READ_HOLDING_REGISTER)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::INVALID_RESPONSE; } // Extract each register value (each register is 2 bytes, big-endian) for (int i = 0; i < count; i++) { holdingRegistersArray[i] = (commResponseBuffer[9 + (i * 2)] << 8) | commResponseBuffer[10 + (i * 2)]; } - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::NONE; } ModbusError ModbusTCPClient::readInputRegister(int address, uint16_t &inputRegister) { - pthread_mutex_lock(&socketMutex); + //pthread_mutex_lock(&socketMutex); buildReadRequest(commRequestBuffer, ModbusFunction::READ_INPUT_REGISTER, address, 1); if (!sendRequest(commRequestBuffer, 12)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // For one input register: expected size = 9 + 2 = 11 bytes int expectedSize = 9 + 2; if (!receiveResponse(commResponseBuffer, expectedSize)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } if (commResponseBuffer[7] & 0x80) { printf("MODBUS_TCP_CLIENT: Exception Code %02X\n", commResponseBuffer[8]); - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::EXCEPTION_RESPONSE; } if (commResponseBuffer[7] != static_cast(ModbusFunction::READ_INPUT_REGISTER)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::INVALID_RESPONSE; } inputRegister = (commResponseBuffer[9] << 8) | commResponseBuffer[10]; - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::NONE; } @@ -493,63 +594,63 @@ ModbusError ModbusTCPClient::readMultipleInputRegisters(int address, int count, printf("MODBUS_TCP_CLIENT: Invalid input register count (1-125 allowed)\n"); return ModbusError::INVALID_RESPONSE; } - pthread_mutex_lock(&socketMutex); + //pthread_mutex_lock(&socketMutex); buildReadRequest(commRequestBuffer, ModbusFunction::READ_INPUT_REGISTER, address, count); if (!sendRequest(commRequestBuffer, 12)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // For multiple registers: expected size = 9 + (count * 2) int expectedSize = 9 + (count * 2); if (!receiveResponse(commResponseBuffer, expectedSize)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } if (commResponseBuffer[7] & 0x80) { printf("MODBUS_TCP_CLIENT: Exception Code %02X\n", commResponseBuffer[8]); - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::EXCEPTION_RESPONSE; } if (commResponseBuffer[7] != static_cast(ModbusFunction::READ_INPUT_REGISTER)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::INVALID_RESPONSE; } // Extract each register value (each register is 2 bytes, big-endian) for (int i = 0; i < count; i++) { inputRegistersArray[i] = (commResponseBuffer[9 + (i * 2)] << 8) | commResponseBuffer[10 + (i * 2)]; } - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::NONE; } ModbusError ModbusTCPClient::writeCoil(int address, bool value) { - pthread_mutex_lock(&socketMutex); + //pthread_mutex_lock(&socketMutex); buildWriteSingleRequest(commRequestBuffer, ModbusFunction::WRITE_SINGLE_COIL, address, value ? 0xFF00 : 0x0000); if (!sendRequest(commRequestBuffer, 12)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } if (!receiveResponse(commResponseBuffer, 12)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } for (int i = 0; i < 12; i++) { if (commRequestBuffer[i] != commResponseBuffer[i]) { printf("MODBUS_TCP_CLIENT: Response does not match request!\n"); - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::INVALID_RESPONSE; } } - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::NONE; } ModbusError ModbusTCPClient::writeMultipleCoils(int address, int count, const bool values[]) { - pthread_mutex_lock(&socketMutex); + //pthread_mutex_lock(&socketMutex); if (count < 1 || count > numCoils) { printf("MODBUS_TCP_CLIENT: Invalid coil count (1-%d allowed)\n", numCoils); - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::INVALID_RESPONSE; } @@ -572,14 +673,14 @@ ModbusError ModbusTCPClient::writeMultipleCoils(int address, int count, const bo buildWriteMultipleRequest(commRequestBuffer, ModbusFunction::WRITE_MULTIPLE_COILS, address, count, coilData, byteCount); // Send the request. if (!sendRequest(commRequestBuffer, requestSize)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // The expected response size for a write multiple coils request is always 12 bytes. int expectedResponseSize = 12; if (!receiveResponse(commResponseBuffer, expectedResponseSize)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } @@ -589,45 +690,45 @@ ModbusError ModbusTCPClient::writeMultipleCoils(int address, int count, const bo if (i == 5) continue; // Skip the length field. if (commRequestBuffer[i] != commResponseBuffer[i]) { printf("MODBUS_TCP_CLIENT: Response does not match request at byte %d!\n", i); - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::INVALID_RESPONSE; } } - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::NONE; } ModbusError ModbusTCPClient::writeHoldingRegister(int address, uint16_t value) { - pthread_mutex_lock(&socketMutex); + //pthread_mutex_lock(&socketMutex); // Build the write single holding register request. buildWriteSingleRequest(commRequestBuffer, ModbusFunction::WRITE_SINGLE_HOLDING_REGISTER, address, value); // Send the 12-byte request. if (!sendRequest(commRequestBuffer, 12)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // Expect a full 12-byte echo response. if (!receiveResponse(commResponseBuffer, 12)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // Validate that the entire 12-byte response matches the request. for (int i = 0; i < 12; i++) { if (commRequestBuffer[i] != commResponseBuffer[i]) { printf("MODBUS_TCP_CLIENT: Response does not match request at byte %d!\n", i); - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::INVALID_RESPONSE; } } - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::NONE; } ModbusError ModbusTCPClient::writeMultipleHoldingRegisters(int address, int count, const uint16_t values[]) { - pthread_mutex_lock(&socketMutex); + //pthread_mutex_lock(&socketMutex); if (count < 1 || count > numHoldingRegisters) { printf("MODBUS_TCP_CLIENT: Invalid register count (1-%d allowed)\n", numHoldingRegisters); - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::INVALID_RESPONSE; } // Each register is 2 bytes. @@ -644,13 +745,13 @@ ModbusError ModbusTCPClient::writeMultipleHoldingRegisters(int address, int coun buildWriteMultipleRequest(commRequestBuffer, ModbusFunction::WRITE_MULTIPLE_HOLDING_REGISTERS, address, count, registerData, byteCount); // Send the request. if (!sendRequest(commRequestBuffer, requestSize)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // The expected response size for a write multiple holding registers request is 12 bytes. int expectedResponseSize = 12; if (!receiveResponse(commResponseBuffer, expectedResponseSize)) { - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::TIMEOUT; } // Validate the response: Compare the first 10 bytes, skipping byte 5 (length field). @@ -658,16 +759,24 @@ ModbusError ModbusTCPClient::writeMultipleHoldingRegisters(int address, int coun if (i == 5) continue; // Skip the length field. if (commRequestBuffer[i] != commResponseBuffer[i]) { printf("MODBUS_TCP_CLIENT: Response does not match request at byte %d!\n", i); - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::INVALID_RESPONSE; } } - pthread_mutex_unlock(&socketMutex); + //pthread_mutex_unlock(&socketMutex); return ModbusError::NONE; } ModbusError ModbusTCPClient::readAll() { // For brevity, call low-level functions that update internal storage. + printf("readAll()\n"); + if (!isConnected()) { + printf("MODBUS_TCP_CLIENT: Not connected when readAll() called. Connecting..."); + if (connectServer()) { + printf("MODBUS_TCP_CLIENT: Failed to connect to MODBUS server\n"); + } + return ModbusError::CONNECTION_LOST; + } ModbusError error = ModbusError::NONE; if (coilsRead) { error = readMultipleCoils(startCoils, numCoils, coilsRead); @@ -688,6 +797,13 @@ ModbusError ModbusTCPClient::readAll() { } ModbusError ModbusTCPClient::writeAll() { + if (!isConnected()) { + printf("MODBUS_TCP_CLIENT: Not connected when readAll() called. Connecting..."); + if (connectServer()) { + printf("MODBUS_TCP_CLIENT: Failed to connect to MODBUS server\n"); + } + return ModbusError::CONNECTION_LOST; + } ModbusError error = ModbusError::NONE; if (coilsWrite) { error = writeMultipleCoils(startCoils, numCoils, coilsWrite); @@ -735,4 +851,80 @@ uint16_t ModbusTCPClient::getDesiredHoldingRegister(int address) const { uint16_t ModbusTCPClient::getInputRegister(int address) const { return (address >= 0 && address < numInputRegisters) ? inputRegisters[address] : 0; -} \ No newline at end of file +} + +ModbusError ModbusTCPClient::getMultipleDiscreteInputs(int startAddress, int count, bool* destination) const { + // Validate inputs + if (startAddress < 0 || count <= 0 || destination == nullptr) { + return ModbusError::INVALID_REQUEST; + } + + // Check if the range is within bounds + if (startAddress + count > numDiscreteInputs) { + return ModbusError::INVALID_REQUEST; + } + + // Copy the data manually + for (int i = 0; i < count; ++i) { + destination[i] = discreteInputs[startAddress + i]; + } + + return ModbusError::NONE; +} + +ModbusError ModbusTCPClient::getMultipleCoils(int startAddress, int count, bool* destination) const { + // Validate inputs + if (startAddress < 0 || count <= 0 || destination == nullptr) { + return ModbusError::INVALID_REQUEST; + } + + // Check if the range is within bounds + if (startAddress + count > numCoils) { + return ModbusError::INVALID_REQUEST; + } + + // Copy the data manually + for (int i = 0; i < count; ++i) { + destination[i] = coilsRead[startAddress + i]; + } + + return ModbusError::NONE; +} + +ModbusError ModbusTCPClient::getMultipleInputRegisters(int startAddress, int count, uint16_t* destination) const { + // Validate inputs + if (startAddress < 0 || count <= 0 || destination == nullptr) { + return ModbusError::INVALID_REQUEST; + } + + // Check if the range is within bounds + if (startAddress + count > numInputRegisters) { + return ModbusError::INVALID_REQUEST; + } + + // Copy the data manually + for (int i = 0; i < count; ++i) { + destination[i] = inputRegisters[startAddress + i]; + } + + return ModbusError::NONE; +} + +ModbusError ModbusTCPClient::getMultipleHoldingRegisters(int startAddress, int count, uint16_t* destination) const { + // Validate inputs + if (startAddress < 0 || count <= 0 || destination == nullptr) { + return ModbusError::INVALID_REQUEST; + } + + // Check if the range is within bounds + if (startAddress + count > numHoldingRegisters) { + return ModbusError::INVALID_REQUEST; + } + + // Copy the data manually + for (int i = 0; i < count; ++i) { + destination[i] = holdingRegistersRead[startAddress + i]; + } + + return ModbusError::NONE; +} diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/modbus_tcp_client.h b/MATLAB/MODBUS_TCP_TESTING/modbus_tcp_client.h similarity index 92% rename from MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/modbus_tcp_client.h rename to MATLAB/MODBUS_TCP_TESTING/modbus_tcp_client.h index ce03591..c7c091f 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/modbus_tcp_client.h +++ b/MATLAB/MODBUS_TCP_TESTING/modbus_tcp_client.h @@ -4,8 +4,10 @@ #include #include #include +#include #include #include +#include #include // Use mutexes // Enum class for MODBUS function codes @@ -54,12 +56,18 @@ public: // Getters and setters for data values (if using the automatic mode). void setCoil(int address, bool value); void setHoldingRegister(int address, uint16_t value); + + bool getDiscreteInput(int address) const; bool getCoil(int address) const; bool getDesiredCoil(int address) const; - bool getDiscreteInput(int address) const; + uint16_t getInputRegister(int address) const; uint16_t getHoldingRegister(int address) const; uint16_t getDesiredHoldingRegister(int address) const; - uint16_t getInputRegister(int address) const; + + ModbusError getMultipleCoils(int startAddress, int count, bool* destination) const; + ModbusError getMultipleDiscreteInputs(int startAddress, int count, bool* destination) const; + ModbusError getMultipleInputRegisters(int startAddress, int count, uint16_t* destination) const; + ModbusError getMultipleHoldingRegisters(int startAddress, int count, uint16_t* destination) const; // High-level functions: readAll and writeAll update the internal buffers. ModbusError readAll(); diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/modbus_tcp_client_old.cpp b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/modbus_tcp_client_old.cpp deleted file mode 100644 index 101c3a3..0000000 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/modbus_tcp_client_old.cpp +++ /dev/null @@ -1,757 +0,0 @@ -#include "modbus_tcp_client.h" -#include // For select() timeout - -ModbusTCPClient::ModbusTCPClient(const char* ip, int port, int numCoils, int numDI, int numIR, int numHR, - int startCoils, int startDI, int startIR, int startHR) - : serverIP(ip), serverPort(port), socketFD(-1), transactionID(1), - numCoils(numCoils), numDiscreteInputs(numDI), numInputRegisters(numIR), numHoldingRegisters(numHR), - startCoils(startCoils), startDiscreteInputs(startDI), startInputRegisters(startIR), startHoldingRegisters(startHR) { - - // Allocate memory dynamically based on provided sizes - coilsRead = new bool[numCoils](); - coilsWrite = new bool[numCoils](); - discreteInputs = new bool[numDiscreteInputs](); - - inputRegisters = new uint16_t[numInputRegisters](); - holdingRegistersRead = new uint16_t[numHoldingRegisters](); - holdingRegistersWrite = new uint16_t[numHoldingRegisters](); -} - -ModbusTCPClient::ModbusTCPClient(const char* ip, int port) - : serverIP(ip), serverPort(port), socketFD(-1) { - /* - This constructor is if the user manually wants to call MODBUS TCP functions and not - use readAll() and writeAll() and the setters/getters - */ - - // Set everything to nullptr so that readAll() and writeAll() won't work - coilsRead = nullptr; - coilsWrite = nullptr; - discreteInputs = nullptr; - - inputRegisters = nullptr; - holdingRegistersRead = nullptr; - holdingRegistersWrite = nullptr; -} - -ModbusTCPClient::~ModbusTCPClient() { - delete[] coilsRead; - delete[] coilsWrite; - delete[] discreteInputs; - - delete[] inputRegisters; - delete[] holdingRegistersRead; - delete[] holdingRegistersWrite; -} - -void ModbusTCPClient::setStartAddresses(int startCoils, int startDI, int startIR, int startHR) { - this->startCoils = startCoils; - this->startDiscreteInputs = startDI; - this->startInputRegisters = startIR; - this->startHoldingRegisters = startHR; -} - -bool ModbusTCPClient::connectServer() { - // Step 1: If socket is already open, verify it's still connected - if (socketFD != -1) { - struct timeval timeout; - timeout.tv_sec = 0; - timeout.tv_usec = 100000; // 100ms timeout for connection check - - fd_set read_fds; - FD_ZERO(&read_fds); - FD_SET(socketFD, &read_fds); - - int result = select(socketFD + 1, &read_fds, NULL, NULL, &timeout); - - if (result == 0) { - // No error in select, socket is still connected - printf("MODBUS_TCP_CLIENT: Already connected to MODBUS server\n"); - return true; - } else { - // Connection is broken, close and reset - printf("MODBUS_TCP_CLIENT: Warning: Connection lost, reconnecting...\n"); - disconnectServer(); - } - } - - // Step 2: Create a new socket - for (int attempts = 0; attempts < 5; attempts++) { // Retry up to 5 times - socketFD = socket(AF_INET, SOCK_STREAM, 0); - if (socketFD < 0) { - printf("MODBUS_TCP_CLIENT: Could not create socket\n"); - return false; - } - - struct sockaddr_in serverAddr; - serverAddr.sin_family = AF_INET; - serverAddr.sin_port = htons(serverPort); - inet_pton(AF_INET, serverIP, &serverAddr.sin_addr); - - // Step 3: Attempt to connect - printf("MODBUS_TCP_CLIENT: Attempting to connect to MODBUS server (Try %d)...\n", attempts + 1); - if (connect(socketFD, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == 0) { - printf("MODBUS_TCP_CLIENT: Connected to MODBUS server at %s:%d\n", serverIP, serverPort); - return true; - } - - printf("MODBUS_TCP_CLIENT: Connection failed, retrying...\n"); - disconnectServer(); // Close socket before retrying - usleep(100000); // Wait 100ms before retrying - } -} - -void ModbusTCPClient::disconnectServer() { - if (socketFD != -1) { - close(socketFD); - socketFD = -1; - printf("MODBUS_TCP_CLIENT: Disconnected from MODBUS server\n"); - } -} - -void ModbusTCPClient::setTimeout(int milliseconds) { - timeoutMilliseconds = milliseconds; - printf("MODBUS_TCP_CLIENT: Timeout set to %d ms\n", timeoutMilliseconds); -} - -bool ModbusTCPClient::isConnected() const { - return socketFD != -1; -} - -bool ModbusTCPClient::reconnectServer() { - printf("MODBUS_TCP_CLIENT: Attempting manual reconnection...\n"); - disconnectServer(); - return connectServer(); -} - -bool ModbusTCPClient::sendRequest(uint8_t* request, int requestSize) { - // Ensure we're connected before sending - if (socketFD == -1) { - printf("MODBUS_TCP_CLIENT: Connection lost. Attempting to reconnect...\n"); - if (!connectServer()) { - printf("MODBUS_TCP_CLIENT: Reconnection failed. Cannot send request.\n"); - return false; - } - } - - int bytesSent = write(socketFD, request, requestSize); - if (bytesSent <= 0) { // Detect broken connection during write - printf("MODBUS_TCP_CLIENT: Write failed, connection lost. Disconnecting...\n"); - disconnectServer(); - return false; - } - - return bytesSent == requestSize; - return bytesSent == requestSize; -} - -bool ModbusTCPClient::receiveResponse(uint8_t* response, int expectedSize) { - int totalBytesReceived = 0; - - while (totalBytesReceived < expectedSize) { - struct timeval timeout; - timeout.tv_sec = timeoutMilliseconds / 1000; // Convert ms to seconds - timeout.tv_usec = (timeoutMilliseconds % 1000) * 1000; // Convert remaining ms to µs - - fd_set read_fds; - FD_ZERO(&read_fds); - FD_SET(socketFD, &read_fds); - - // Use select() to wait for data before reading - int ready = select(socketFD + 1, &read_fds, NULL, NULL, &timeout); - if (ready == 0) { // Timeout case - printf("MODBUS_TCP_CLIENT: Timeout waiting for MODBUS response. Disconnecting...\n"); - disconnectServer(); // Close socket and reset socketFD - return false; - } else if (ready < 0) { // Select failed - printf("MODBUS_TCP_CLIENT: Select failed. Disconnecting...\n"); - disconnectServer(); // Close socket and reset socketFD - return false; - } - - // Read available data - int bytesReceived = read(socketFD, response + totalBytesReceived, expectedSize - totalBytesReceived); - if (bytesReceived <= 0) { // Connection lost or no data received - printf("MODBUS_TCP_CLIENT: Connection lost. Disconnecting...\n"); - disconnectServer(); // Close socket and reset socketFD - return false; - } - - totalBytesReceived += bytesReceived; - } - - return true; -} - -void ModbusTCPClient::buildReadRequest(uint8_t* buffer, ModbusFunction functionCode, uint16_t startAddr, uint16_t quantity) { - transactionID++; - - // Transaction ID - buffer[0] = transactionID >> 8; - buffer[1] = transactionID & 0xFF; - // Protocol ID, always 00 00 - buffer[2] = 0x00; - buffer[3] = 0x00; - // Length (remaining bytes after Unit ID) - buffer[4] = 0x00; - buffer[5] = 0x06; - // Unit ID (Slave Address) - buffer[6] = 0x01; - // Function code - buffer[7] = static_cast(functionCode); - // Start Address - buffer[8] = startAddr >> 8; - buffer[9] = startAddr & 0xFF; - // Quantity (How many coils to read) - buffer[10] = quantity >> 8; - buffer[11] = quantity & 0xFF; -} - -void ModbusTCPClient::buildWriteSingleRequest(uint8_t* buffer, ModbusFunction functionCode, uint16_t address, uint16_t value) { - transactionID++; - - buffer[0] = transactionID >> 8; - buffer[1] = transactionID & 0xFF; - buffer[2] = 0x00; - buffer[3] = 0x00; - buffer[4] = 0x00; - buffer[5] = 0x06; - buffer[6] = 0x01; - buffer[7] = static_cast(functionCode); - buffer[8] = address >> 8; - buffer[9] = address & 0xFF; - buffer[10] = value >> 8; - buffer[11] = value & 0xFF; -} - -void ModbusTCPClient::buildWriteMultipleRequest(uint8_t* buffer, ModbusFunction functionCode, uint16_t address, uint16_t count, const void* values, uint8_t byteCount) { - transactionID++; - - // MODBUS TCP Header - buffer[0] = transactionID >> 8; - buffer[1] = transactionID & 0xFF; - buffer[2] = 0x00; // Protocol ID (always 0x0000) - buffer[3] = 0x00; - buffer[4] = 0x00; // Length (remaining bytes after Unit ID) - buffer[5] = 7 + byteCount; - buffer[6] = 0x01; // Unit ID - buffer[7] = static_cast(functionCode); // Function Code (0x0F for coils, 0x10 for registers) - buffer[8] = address >> 8; // Start address high byte - buffer[9] = address & 0xFF; // Start address low byte - buffer[10] = count >> 8; // Quantity high byte - buffer[11] = count & 0xFF; // Quantity low byte - buffer[12] = byteCount; // Byte count - - // Copy data payload manually (instead of memcpy) - const uint8_t* data = (const uint8_t*)values; - for (uint8_t i = 0; i < byteCount; i++) { - buffer[13 + i] = data[i]; - } -} - -ModbusError ModbusTCPClient::readCoil(int address, bool &coilState) { - uint8_t request[12]; - buildReadRequest(request, ModbusFunction::READ_COIL, address, 1); - - sendRequest(request, 12); - - uint8_t response[10]; // Expecting 10 bytes - if (!receiveResponse(response, 10)) { - return ModbusError::TIMEOUT; - } - - // Handle MODBUS exception responses (0x80 + function code) - if (response[7] & 0x80) { - printf("MODBUS_TCP_CLIENT: MODBUS Exception Code %02X\n", response[8]); - return ModbusError::EXCEPTION_RESPONSE; - } - - // Ensure function code matches the request (allowing for server behavior) - if (response[7] != static_cast(ModbusFunction::READ_COIL)) { - printf("MODBUS_TCP_CLIENT: Warning: Unexpected function code (Expected: %02X, Got: %02X)\n", - static_cast(ModbusFunction::READ_COIL), response[7]); - return ModbusError::INVALID_RESPONSE; - } - - // Extract coil state (only first bit is used) - coilState = (response[9] & 0x01) != 0; // Adjusted index based on 10-byte response - return ModbusError::NONE; -} - -ModbusError ModbusTCPClient::readMultipleCoils(int address, int count, bool coilStates[]) { - if (count < 1 || count > 2000) { - printf("MODBUS_TCP_CLIENT: Invalid coil count (1-2000 allowed)\n"); - return ModbusError::INVALID_RESPONSE; - } - - uint8_t request[12]; - buildReadRequest(request, ModbusFunction::READ_COIL, address, count); - - sendRequest(request, 12); - - // Expected response size: Fixed header (9) + variable byte count - int byteCount = (count + 7) / 8; // 1 byte per 8 coils - int expectedSize = 9 + byteCount; - - uint8_t response[256]; // Ensure buffer is large enough - if (!receiveResponse(response, expectedSize)) { - return ModbusError::TIMEOUT; - } - - // Handle MODBUS exception responses (0x80 + function code) - if (response[7] & 0x80) { - printf("MODBUS_TCP_CLIENT: MODBUS Exception Code %02X\n", response[8]); - return ModbusError::EXCEPTION_RESPONSE; - } - - // Ensure the function code matches - if (response[7] != static_cast(ModbusFunction::READ_COIL)) { - printf("MODBUS_TCP_CLIENT: Warning: Unexpected function code (Expected: %02X, Got: %02X)\n", - static_cast(ModbusFunction::READ_COIL), response[7]); - return ModbusError::INVALID_RESPONSE; - } - - // Read coil values - for (int i = 0; i < count; i++) { - int byteIndex = 9 + (i / 8); // Data starts at index 9 - int bitIndex = i % 8; - coilStates[i] = (response[byteIndex] >> bitIndex) & 0x01; - } - - return ModbusError::NONE; -} - -ModbusError ModbusTCPClient::readDiscreteInput(int address, bool &discreteInput) { - uint8_t request[12]; - buildReadRequest(request, ModbusFunction::READ_DISCRETE_INPUT, address, 1); - - sendRequest(request, 12); - - uint8_t response[10]; // Expected response size - if (!receiveResponse(response, 10)) { - return ModbusError::TIMEOUT; - } - - // Handle MODBUS exception responses (0x80 + function code) - if (response[7] & 0x80) { - printf("MODBUS_TCP_CLIENT: MODBUS Exception Code %02X\n", response[8]); - return ModbusError::EXCEPTION_RESPONSE; - } - - // Ensure function code matches the request - if (response[7] != static_cast(ModbusFunction::READ_DISCRETE_INPUT)) { - printf("MODBUS_TCP_CLIENT: Warning: Unexpected function code (Expected: %02X, Got: %02X)\n", - static_cast(ModbusFunction::READ_DISCRETE_INPUT), response[7]); - return ModbusError::INVALID_RESPONSE; - } - - // Extract single discrete input state - discreteInput = (response[9] & 0x01) != 0; - return ModbusError::NONE; // Success -} - -ModbusError ModbusTCPClient::readMultipleDiscreteInputs(int address, int count, bool discreteInputs[]) { - if (count < 1 || count > 2000) { - printf("MODBUS_TCP_CLIENT: Invalid discrete input count (1-2000 allowed)\n"); - return ModbusError::INVALID_RESPONSE; - } - - uint8_t request[12]; - buildReadRequest(request, ModbusFunction::READ_DISCRETE_INPUT, address, count); - - sendRequest(request, 12); - - // Expected response size: Fixed header (9) + variable byte count - int byteCount = (count + 7) / 8; // 1 byte per 8 inputs - int expectedSize = 9 + byteCount; - - uint8_t response[256]; // Ensure buffer is large enough - if (!receiveResponse(response, expectedSize)) { - return ModbusError::TIMEOUT; - } - - // Handle MODBUS exception responses (0x80 + function code) - if (response[7] & 0x80) { - printf("MODBUS_TCP_CLIENT: MODBUS Exception Code %02X\n", response[8]); - return ModbusError::EXCEPTION_RESPONSE; - } - - // Ensure the function code matches - if (response[7] != static_cast(ModbusFunction::READ_DISCRETE_INPUT)) { - printf("MODBUS_TCP_CLIENT: Warning: Unexpected function code (Expected: %02X, Got: %02X)\n", - static_cast(ModbusFunction::READ_DISCRETE_INPUT), response[7]); - return ModbusError::INVALID_RESPONSE; - } - - // Read discrete input values - for (int i = 0; i < count; i++) { - int byteIndex = 9 + (i / 8); // Data starts at index 9 - int bitIndex = i % 8; - discreteInputs[i] = (response[byteIndex] >> bitIndex) & 0x01; - } - - return ModbusError::NONE; -} - -ModbusError ModbusTCPClient::readHoldingRegister(int address, uint16_t &holdingRegister) { - uint8_t request[12]; - buildReadRequest(request, ModbusFunction::READ_HOLDING_REGISTER, address, 1); - - sendRequest(request, 12); - - uint8_t response[11]; // Expected response size for reading 1 register - if (!receiveResponse(response, 11)) { - return ModbusError::TIMEOUT; - } - - // Handle MODBUS exception responses (0x80 + function code) - if (response[7] & 0x80) { - printf("MODBUS_TCP_CLIENT: MODBUS Exception Code %02X\n", response[8]); - return ModbusError::EXCEPTION_RESPONSE; - } - - // Ensure function code matches the request - if (response[7] != static_cast(ModbusFunction::READ_HOLDING_REGISTER)) { - printf("MODBUS_TCP_CLIENT: Warning: Unexpected function code (Expected: %02X, Got: %02X)\n", - static_cast(ModbusFunction::READ_HOLDING_REGISTER), response[7]); - return ModbusError::INVALID_RESPONSE; - } - - // Extract holding register value (Big-endian format) - holdingRegister = (response[9] << 8) | response[10]; - return ModbusError::NONE; // Success -} - -ModbusError ModbusTCPClient::readMultipleHoldingRegisters(int address, int count, uint16_t holdingRegisters[]) { - if (count < 1 || count > 125) { // MODBUS limits reading up to 125 registers per request - printf("MODBUS_TCP_CLIENT: Invalid holding register count (1-125 allowed)\n"); - return ModbusError::INVALID_RESPONSE; - } - - uint8_t request[12]; - buildReadRequest(request, ModbusFunction::READ_HOLDING_REGISTER, address, count); - - sendRequest(request, 12); - - // Expected response size: 9-byte header + 2 * count registers - int expectedSize = 9 + (count * 2); - uint8_t response[256]; // Ensure buffer is large enough - - if (!receiveResponse(response, expectedSize)) { - return ModbusError::TIMEOUT; - } - - // Handle MODBUS exception responses (0x80 + function code) - if (response[7] & 0x80) { - printf("MODBUS_TCP_CLIENT: MODBUS Exception Code %02X\n", response[8]); - return ModbusError::EXCEPTION_RESPONSE; - } - - // Ensure function code matches the request - if (response[7] != static_cast(ModbusFunction::READ_HOLDING_REGISTER)) { - printf("MODBUS_TCP_CLIENT: Warning: Unexpected function code (Expected: %02X, Got: %02X)\n", - static_cast(ModbusFunction::READ_HOLDING_REGISTER), response[7]); - return ModbusError::INVALID_RESPONSE; - } - - // Extract register values (each register is 2 bytes, big-endian) - for (int i = 0; i < count; i++) { - holdingRegisters[i] = (response[9 + (i * 2)] << 8) | response[10 + (i * 2)]; - } - - return ModbusError::NONE; -} - -ModbusError ModbusTCPClient::readInputRegister(int address, uint16_t &inputRegister) { - uint8_t request[12]; - buildReadRequest(request, ModbusFunction::READ_INPUT_REGISTER, address, 1); - - sendRequest(request, 12); - - uint8_t response[11]; // Expected response size for reading 1 register - if (!receiveResponse(response, 11)) { - return ModbusError::TIMEOUT; - } - - // Handle MODBUS exception responses (0x80 + function code) - if (response[7] & 0x80) { - printf("MODBUS_TCP_CLIENT: MODBUS Exception Code %02X\n", response[8]); - return ModbusError::EXCEPTION_RESPONSE; - } - - // Ensure function code matches the request - if (response[7] != static_cast(ModbusFunction::READ_INPUT_REGISTER)) { - printf("MODBUS_TCP_CLIENT: Warning: Unexpected function code (Expected: %02X, Got: %02X)\n", - static_cast(ModbusFunction::READ_INPUT_REGISTER), response[7]); - return ModbusError::INVALID_RESPONSE; - } - - // Extract input register value (Big-endian format) - inputRegister = (response[9] << 8) | response[10]; - return ModbusError::NONE; // Success -} - -ModbusError ModbusTCPClient::readMultipleInputRegisters(int address, int count, uint16_t inputRegisters[]) { - if (count < 1 || count > 125) { // MODBUS limits reading up to 125 registers per request - printf("MODBUS_TCP_CLIENT: Invalid input register count (1-125 allowed)\n"); - return ModbusError::INVALID_RESPONSE; - } - - uint8_t request[12]; - buildReadRequest(request, ModbusFunction::READ_INPUT_REGISTER, address, count); - - sendRequest(request, 12); - - // Expected response size: 9-byte header + 2 * count registers - int expectedSize = 9 + (count * 2); - uint8_t response[256]; // Ensure buffer is large enough - - if (!receiveResponse(response, expectedSize)) { - return ModbusError::TIMEOUT; - } - - // Handle MODBUS exception responses (0x80 + function code) - if (response[7] & 0x80) { - printf("MODBUS_TCP_CLIENT: MODBUS Exception Code %02X\n", response[8]); - return ModbusError::EXCEPTION_RESPONSE; - } - - // Ensure function code matches the request - if (response[7] != static_cast(ModbusFunction::READ_INPUT_REGISTER)) { - printf("MODBUS_TCP_CLIENT: Warning: Unexpected function code (Expected: %02X, Got: %02X)\n", - static_cast(ModbusFunction::READ_INPUT_REGISTER), response[7]); - return ModbusError::INVALID_RESPONSE; - } - - // Extract register values (each register is 2 bytes, big-endian) - for (int i = 0; i < count; i++) { - inputRegisters[i] = (response[9 + (i * 2)] << 8) | response[10 + (i * 2)]; - } - - return ModbusError::NONE; -} - -ModbusError ModbusTCPClient::writeCoil(int address, bool value) { - uint8_t request[12]; - buildWriteSingleRequest(request, ModbusFunction::WRITE_SINGLE_COIL, address, value ? 0xFF00 : 0x0000); - sendRequest(request, 12); - - // Receive response - uint8_t response[12]; - if (!receiveResponse(response, 12)) { - return ModbusError::TIMEOUT; // No response received - } - - // Check if response matches request (MODBUS TCP should echo back the same request) - for (int i = 0; i < 12; i++) { - if (request[i] != response[i]) { - printf("MODBUS_TCP_CLIENT: Response does not match request!\n"); - return ModbusError::INVALID_RESPONSE; - } - } - - return ModbusError::NONE; // Success -} - -ModbusError ModbusTCPClient::writeMultipleCoils(int address, int count, const bool values[]) { - if (count < 1 || count > 1968) { // MODBUS limit: max 1968 coils per request - printf("MODBUS_TCP_CLIENT: Invalid coil count (1-1968 allowed)\n"); - return ModbusError::INVALID_RESPONSE; - } - - int byteCount = (count + 7) / 8; // Each byte holds 8 coils - uint8_t coilData[byteCount]; - - // Initialize to 0 (since we may not use all bits) - for (int i = 0; i < byteCount; i++) { - coilData[i] = 0; - } - - // Pack coil data into bytes - for (int i = 0; i < count; i++) { - if (values[i]) { - coilData[i / 8] |= (1 << (i % 8)); - } - } - - uint8_t request[13 + byteCount]; - buildWriteMultipleRequest(request, ModbusFunction::WRITE_MULTIPLE_COILS, address, count, coilData, byteCount); - - sendRequest(request, 13 + byteCount); - - // The expected response is always **12 bytes** - uint8_t response[12]; - if (!receiveResponse(response, 12)) { - return ModbusError::TIMEOUT; - } - - // Ensure the response matches the **first 10 bytes**, except for byte 5 (message length byte) - for (int i = 0; i < 10; i++) { - if (i == 5) continue; // Skip byte 5 (message length field) - - if (request[i] != response[i]) { - printf("MODBUS_TCP_CLIENT: Response does not match request!\n"); - return ModbusError::INVALID_RESPONSE; - } - } - - return ModbusError::NONE; // Success -} - -ModbusError ModbusTCPClient::writeHoldingRegister(int address, uint16_t value) { - uint8_t request[12]; - buildWriteSingleRequest(request, ModbusFunction::WRITE_SINGLE_HOLDING_REGISTER, address, value); - - sendRequest(request, 12); - - // Expected response size = 12 bytes (full echo of the request) - uint8_t response[12]; - if (!receiveResponse(response, 12)) { - return ModbusError::TIMEOUT; - } - - // Ensure response matches request exactly (full 12 bytes) - for (int i = 0; i < 12; i++) { - if (request[i] != response[i]) { - printf("MODBUS_TCP_CLIENT: Response does not match request!\n"); - return ModbusError::INVALID_RESPONSE; - } - } - - return ModbusError::NONE; // Success -} - -ModbusError ModbusTCPClient::writeMultipleHoldingRegisters(int address, int count, const uint16_t values[]) { - if (count < 1 || count > 123) { // MODBUS limit: max 123 registers per request - printf("MODBUS_TCP_CLIENT: Invalid register count (1-123 allowed)\n"); - return ModbusError::INVALID_RESPONSE; - } - - int byteCount = count * 2; // Each register is 2 bytes - uint8_t registerData[byteCount]; - - // Convert register values to byte array (big-endian format) - for (int i = 0; i < count; i++) { - registerData[i * 2] = values[i] >> 8; // High byte - registerData[i * 2 + 1] = values[i] & 0xFF; // Low byte - } - - uint8_t request[13 + byteCount]; - buildWriteMultipleRequest(request, ModbusFunction::WRITE_MULTIPLE_HOLDING_REGISTERS, address, count, registerData, byteCount); - - sendRequest(request, 13 + byteCount); - - // Expected response size = 12 bytes (first 10 bytes + 2 bytes for number of registers written) - uint8_t response[12]; - if (!receiveResponse(response, 12)) { - return ModbusError::TIMEOUT; - } - - // Ensure response matches request (except for byte 5) - for (int i = 0; i < 10; i++) { - if (i == 5) continue; // Skip byte 5 (message length field) - - if (request[i] != response[i]) { - printf("MODBUS_TCP_CLIENT: Response does not match request!\n"); - return ModbusError::INVALID_RESPONSE; - } - } - - return ModbusError::NONE; // Success -} - -ModbusError ModbusTCPClient::readAll() { - /* - Reads every coil, discrete input, input register, and holding register - assuming that they start at address 0 - */ - - if (coilsRead == nullptr && discreteInputs == nullptr && - inputRegisters == nullptr && holdingRegistersRead == nullptr) { - printf("MODBUS_TCP_CLIENT: readAll() called, but wrong constructor was used.\n"); - return ModbusError::INVALID_REQUEST; - } - - ModbusError error = ModbusError::NONE; - if (coilsRead != nullptr) { - error = readMultipleCoils(startCoils, numCoils, coilsRead); - if (error != ModbusError::NONE) return error; - } - - if (discreteInputs != nullptr) { - error = readMultipleDiscreteInputs(startDiscreteInputs, numDiscreteInputs, discreteInputs); - if (error != ModbusError::NONE) return error; - } - - if (inputRegisters != nullptr) { - error = readMultipleInputRegisters(startInputRegisters, numInputRegisters, inputRegisters); - if (error != ModbusError::NONE) return error; - } - - if (holdingRegistersRead != nullptr) { - error = readMultipleHoldingRegisters(startHoldingRegisters, numHoldingRegisters, holdingRegistersRead); - - } - return error; -} - -ModbusError ModbusTCPClient::writeAll() { - /* - Reads every coil and holding register assuming that they start at address 0 - */ - if (coilsWrite == nullptr && holdingRegistersWrite) { - printf("MODBUS_TCP_CLIENT: writeAll() called, but wrong constructor was used.\n"); - return ModbusError::INVALID_REQUEST; - } - - ModbusError error = ModbusError::NONE; - if (coilsWrite != nullptr) { - error = writeMultipleCoils(startCoils, numCoils, coilsWrite); - if (error != ModbusError::NONE) return error; - } - - if (holdingRegistersWrite != nullptr) { - error = writeMultipleHoldingRegisters(startHoldingRegisters, numHoldingRegisters, holdingRegistersWrite); - } - - return error; -} - - -// Setters for writing values (preferred to be used) -void ModbusTCPClient::setCoil(int address, bool value) { - if (address >= 0 && address < numCoils) { - coilsWrite[address] = value; - } -} - -void ModbusTCPClient::setHoldingRegister(int address, uint16_t value) { - if (address >= 0 && address < numHoldingRegisters) { - holdingRegistersWrite[address] = value; - } -} - -// Getters (preferred to be used as long as readAll is being called) -bool ModbusTCPClient::getCoil(int address) const { - return (address >= 0 && address < numCoils) ? coilsRead[address] : false; -} - -bool ModbusTCPClient::getDesiredCoil(int address) const { - return (address >= 0 && address < numCoils) ? coilsWrite[address] : false; -} - -bool ModbusTCPClient::getDiscreteInput(int address) const { - return (address >= 0 && address < numDiscreteInputs) ? discreteInputs[address] : false; -} - -uint16_t ModbusTCPClient::getHoldingRegister(int address) const { - return (address >= 0 && address < numHoldingRegisters) ? holdingRegistersRead[address] : 0; -} - -uint16_t ModbusTCPClient::getDesiredHoldingRegister(int address) const { - return (address >= 0 && address < numHoldingRegisters) ? holdingRegistersWrite[address] : 0; -} - -uint16_t ModbusTCPClient::getInputRegister(int address) const { - return (address >= 0 && address < numInputRegisters) ? inputRegisters[address] : 0; -} \ No newline at end of file diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/modbus_tcp_client_old.h b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/modbus_tcp_client_old.h deleted file mode 100644 index 999c8e9..0000000 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/modbus_tcp_client_old.h +++ /dev/null @@ -1,115 +0,0 @@ -#ifndef MODBUS_TCP_CLIENT_H -#define MODBUS_TCP_CLIENT_H - -#include -#include -#include -#include -#include - -// Enum class for MODBUS function codes -enum class ModbusFunction : uint8_t { - READ_COIL = 0x01, - READ_DISCRETE_INPUT = 0x02, - READ_HOLDING_REGISTER = 0x03, - READ_INPUT_REGISTER = 0x04, - WRITE_SINGLE_COIL = 0x05, - WRITE_SINGLE_HOLDING_REGISTER = 0x06, - WRITE_MULTIPLE_COILS = 0x0F, - WRITE_MULTIPLE_HOLDING_REGISTERS = 0x10 -}; - -enum class ModbusError { - NONE = 0, // No error - TIMEOUT, // No response from server - INVALID_RESPONSE, // Response does not match request - CONNECTION_LOST, // Connection issue - EXCEPTION_RESPONSE, // MODBUS Exception response (error code) - INVALID_REQUEST, // User tries doing something they shouldn't -}; - - -class ModbusTCPClient { -public: - ModbusTCPClient(const char* ip, int port); // Extra constructor that CANNOT use readAll() or writeAll() - ModbusTCPClient(const char* ip, int port, int numCoils, int numDI, int numIR, int numHR, - int startCoils = 0, int startDI = 0, int startIR = 0, int startHR = 0); - - ~ModbusTCPClient(); - - // Set the start address of each type. Either use this after creating the object or put them in the constructor - void setStartAddresses(int startCoils, int startDI, int startIR, int startHR); - - bool connectServer(); - void disconnectServer(); - bool isConnected() const; - - // Manually disconnectServer and return reconnectServer() - bool reconnectServer(); - - // Set the timeout for receiving responses - void setTimeout(int milliseconds); - - // Setters (preferred to be used when calling writeAll()) - void setCoil(int address, bool value); - void setHoldingRegister(int address, uint16_t value); - - // Getters (preferred to be used when calling readAll()) - bool getCoil(int address) const; - bool getDesiredCoil(int address) const; // Retrieves the "to be written" value - bool getDiscreteInput(int address) const; - uint16_t getHoldingRegister(int address) const; - uint16_t getDesiredHoldingRegister(int address) const; // Retrieves the "to be written" value - uint16_t getInputRegister(int address) const; - - ModbusError readAll(); // Reads every coil, DI, IR, and HR - ModbusError writeAll(); // Writes every coil and HR - - // Manual MODBUS TCP actions (not preferred to be called by user) - ModbusError readCoil(int address, bool &coilState); - ModbusError readMultipleCoils(int address, int count, bool coilStates[]); - - ModbusError readDiscreteInput(int address, bool &discreteInput); - ModbusError readMultipleDiscreteInputs(int address, int count, bool discreteInputs[]); - - ModbusError readHoldingRegister(int address, uint16_t &holdingRegister); - ModbusError readMultipleHoldingRegisters(int address, int count, uint16_t holdingRegisters[]); - - ModbusError readInputRegister(int address, uint16_t &inputRegister); - ModbusError readMultipleInputRegisters(int address, int count, uint16_t inputRegisters[]); - - ModbusError writeCoil(int address, bool value); - ModbusError writeMultipleCoils(int address, int count, const bool values[]); - - ModbusError writeHoldingRegister(int address, uint16_t value); - ModbusError writeMultipleHoldingRegisters(int address, int count, const uint16_t values[]); - -private: - // TCP settings - const char* serverIP; - int serverPort; - int socketFD; - uint16_t transactionID; - int timeoutMilliseconds = 2000; // Default 2 second timeout on receiving responses - - // Storing MODBUS register information - int numCoils, numDiscreteInputs, numInputRegisters, numHoldingRegisters; - int startCoils, startDiscreteInputs, startInputRegisters, startHoldingRegisters; // The start address of each type of register - - bool* coilsRead; // Stores the actual state of coils on the MODBUS server - bool* coilsWrite; // Stores the desired state of coils to be written - bool* discreteInputs; // Only read from the MODBUS server (no writes) - - uint16_t* inputRegisters; // Only read from the MODBUS server - uint16_t* holdingRegistersRead; // Stores actual values from the MODBUS server - uint16_t* holdingRegistersWrite; // Stores desired values to write - - bool sendRequest(uint8_t* request, int requestSize); - bool receiveResponse(uint8_t* response, int expectedSize); - - void buildReadRequest(uint8_t* buffer, ModbusFunction functionCode, uint16_t startAddr, uint16_t quantity); - void buildWriteSingleRequest(uint8_t* buffer, ModbusFunction functionCode, uint16_t address, uint16_t value); - void buildWriteMultipleRequest(uint8_t* buffer, ModbusFunction functionCode, uint16_t address, uint16_t count, const void* values, uint8_t byteCount); -}; - -#endif // MODBUS_TCP_CLIENT_H \ No newline at end of file diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/3m5DbcM65ah4yum0nYbetF/parser_cache.mat b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/3m5DbcM65ah4yum0nYbetF/parser_cache.mat deleted file mode 100644 index ddadaa4..0000000 Binary files a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/3m5DbcM65ah4yum0nYbetF/parser_cache.mat and /dev/null differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/customcode_jkx3iHsM9OOrSN3xw6c8aB.h b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/customcode_jkx3iHsM9OOrSN3xw6c8aB.h new file mode 100644 index 0000000..b714723 --- /dev/null +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/customcode_jkx3iHsM9OOrSN3xw6c8aB.h @@ -0,0 +1,46 @@ +#ifndef __customcode_jkx3iHsM9OOrSN3xw6c8aB_h__ +#define __customcode_jkx3iHsM9OOrSN3xw6c8aB_h__ + +/* Include files */ +#include "mex.h" +#include +#include +#include +#include "tmwtypes.h" + + +/* Helper definitions for DLL support */ +#if defined _WIN32 + #define DLL_EXPORT_CC __declspec(dllexport) +#else + #if __GNUC__ >= 4 + #define DLL_EXPORT_CC __attribute__ ((visibility ("default"))) + #else + #define DLL_EXPORT_CC + #endif +#endif +/* Custom Code from Simulation Target dialog */ +#include +#include +#include +#include +#include +#include +#include +#include +#include "modbus_tcp_client.h" + + +/* Function Declarations */ +#ifdef __cplusplus +extern "C" { +#endif +#define customcode_jkx3iHsM9OOrSN3xw6c8aB_initializer() + +#define customcode_jkx3iHsM9OOrSN3xw6c8aB_terminator() +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/jkx3iHsM9OOrSN3xw6c8aB_cclib.so b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/jkx3iHsM9OOrSN3xw6c8aB_cclib.so new file mode 100644 index 0000000..d84a944 Binary files /dev/null and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/jkx3iHsM9OOrSN3xw6c8aB_cclib.so differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/modbus_tcp_client.o b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/modbus_tcp_client.o new file mode 100644 index 0000000..f64fdde Binary files /dev/null and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/modbus_tcp_client.o differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/multiword_types.h b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/multiword_types.h new file mode 100644 index 0000000..5aad425 --- /dev/null +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/multiword_types.h @@ -0,0 +1,283 @@ +#ifndef MULTIWORD_TYPES_H +#define MULTIWORD_TYPES_H +#include "rtwtypes.h" + +/* + * MultiWord supporting definitions + */ +typedef long long longlong_T; + +/* + * MultiWord types + */ +typedef struct { + uint64_T chunks[2]; +} int128m_T; + +typedef struct { + int128m_T re; + int128m_T im; +} cint128m_T; + +typedef struct { + uint64_T chunks[2]; +} uint128m_T; + +typedef struct { + uint128m_T re; + uint128m_T im; +} cuint128m_T; + +typedef struct { + uint64_T chunks[3]; +} int192m_T; + +typedef struct { + int192m_T re; + int192m_T im; +} cint192m_T; + +typedef struct { + uint64_T chunks[3]; +} uint192m_T; + +typedef struct { + uint192m_T re; + uint192m_T im; +} cuint192m_T; + +typedef struct { + uint64_T chunks[4]; +} int256m_T; + +typedef struct { + int256m_T re; + int256m_T im; +} cint256m_T; + +typedef struct { + uint64_T chunks[4]; +} uint256m_T; + +typedef struct { + uint256m_T re; + uint256m_T im; +} cuint256m_T; + +typedef struct { + uint64_T chunks[5]; +} int320m_T; + +typedef struct { + int320m_T re; + int320m_T im; +} cint320m_T; + +typedef struct { + uint64_T chunks[5]; +} uint320m_T; + +typedef struct { + uint320m_T re; + uint320m_T im; +} cuint320m_T; + +typedef struct { + uint64_T chunks[6]; +} int384m_T; + +typedef struct { + int384m_T re; + int384m_T im; +} cint384m_T; + +typedef struct { + uint64_T chunks[6]; +} uint384m_T; + +typedef struct { + uint384m_T re; + uint384m_T im; +} cuint384m_T; + +typedef struct { + uint64_T chunks[7]; +} int448m_T; + +typedef struct { + int448m_T re; + int448m_T im; +} cint448m_T; + +typedef struct { + uint64_T chunks[7]; +} uint448m_T; + +typedef struct { + uint448m_T re; + uint448m_T im; +} cuint448m_T; + +typedef struct { + uint64_T chunks[8]; +} int512m_T; + +typedef struct { + int512m_T re; + int512m_T im; +} cint512m_T; + +typedef struct { + uint64_T chunks[8]; +} uint512m_T; + +typedef struct { + uint512m_T re; + uint512m_T im; +} cuint512m_T; + +typedef struct { + uint64_T chunks[9]; +} int576m_T; + +typedef struct { + int576m_T re; + int576m_T im; +} cint576m_T; + +typedef struct { + uint64_T chunks[9]; +} uint576m_T; + +typedef struct { + uint576m_T re; + uint576m_T im; +} cuint576m_T; + +typedef struct { + uint64_T chunks[10]; +} int640m_T; + +typedef struct { + int640m_T re; + int640m_T im; +} cint640m_T; + +typedef struct { + uint64_T chunks[10]; +} uint640m_T; + +typedef struct { + uint640m_T re; + uint640m_T im; +} cuint640m_T; + +typedef struct { + uint64_T chunks[11]; +} int704m_T; + +typedef struct { + int704m_T re; + int704m_T im; +} cint704m_T; + +typedef struct { + uint64_T chunks[11]; +} uint704m_T; + +typedef struct { + uint704m_T re; + uint704m_T im; +} cuint704m_T; + +typedef struct { + uint64_T chunks[12]; +} int768m_T; + +typedef struct { + int768m_T re; + int768m_T im; +} cint768m_T; + +typedef struct { + uint64_T chunks[12]; +} uint768m_T; + +typedef struct { + uint768m_T re; + uint768m_T im; +} cuint768m_T; + +typedef struct { + uint64_T chunks[13]; +} int832m_T; + +typedef struct { + int832m_T re; + int832m_T im; +} cint832m_T; + +typedef struct { + uint64_T chunks[13]; +} uint832m_T; + +typedef struct { + uint832m_T re; + uint832m_T im; +} cuint832m_T; + +typedef struct { + uint64_T chunks[14]; +} int896m_T; + +typedef struct { + int896m_T re; + int896m_T im; +} cint896m_T; + +typedef struct { + uint64_T chunks[14]; +} uint896m_T; + +typedef struct { + uint896m_T re; + uint896m_T im; +} cuint896m_T; + +typedef struct { + uint64_T chunks[15]; +} int960m_T; + +typedef struct { + int960m_T re; + int960m_T im; +} cint960m_T; + +typedef struct { + uint64_T chunks[15]; +} uint960m_T; + +typedef struct { + uint960m_T re; + uint960m_T im; +} cuint960m_T; + +typedef struct { + uint64_T chunks[16]; +} int1024m_T; + +typedef struct { + int1024m_T re; + int1024m_T im; +} cint1024m_T; + +typedef struct { + uint64_T chunks[16]; +} uint1024m_T; + +typedef struct { + uint1024m_T re; + uint1024m_T im; +} cuint1024m_T; + +#endif /* MULTIWORD_TYPES_H */ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/parser_cache.mat b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/parser_cache.mat new file mode 100644 index 0000000..a0590f0 Binary files /dev/null and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/parser_cache.mat differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/rtwtypes.h b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/rtwtypes.h new file mode 100644 index 0000000..0824df4 --- /dev/null +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/rtwtypes.h @@ -0,0 +1,61 @@ +#ifndef RTWTYPES_H +#define RTWTYPES_H +#include "tmwtypes.h" +#ifndef POINTER_T +#define POINTER_T + +typedef void * pointer_T; + +#endif + +/* Logical type definitions */ +#if (!defined(__cplusplus)) +#ifndef false +#define false (0U) +#endif + +#ifndef true +#define true (1U) +#endif +#endif + +#ifndef INT64_T +#define INT64_T + +typedef long int64_T; + +#define MAX_int64_T ((int64_T)(9223372036854775807L)) +#define MIN_int64_T ((int64_T)(-9223372036854775807L-1L)) +#endif + +#ifndef UINT64_T +#define UINT64_T + +typedef unsigned long uint64_T; + +#define MAX_uint64_T ((uint64_T)(0xFFFFFFFFFFFFFFFFUL)) +#endif + +/*===========================================================================* + * Additional complex number type definitions * + *===========================================================================*/ +#ifndef CINT64_T +#define CINT64_T + +typedef struct { + int64_T re; + int64_T im; +} cint64_T; + +#endif + +#ifndef CUINT64_T +#define CUINT64_T + +typedef struct { + uint64_T re; + uint64_T im; +} cuint64_T; + +#endif +#endif /* RTWTYPES_H */ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/rtwtypeschksum.mat b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/rtwtypeschksum.mat new file mode 100644 index 0000000..7503c76 Binary files /dev/null and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/rtwtypeschksum.mat differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/slcc_interface_jkx3iHsM9OOrSN3xw6c8aB.cpp b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/slcc_interface_jkx3iHsM9OOrSN3xw6c8aB.cpp new file mode 100644 index 0000000..0f3923d --- /dev/null +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/slcc_interface_jkx3iHsM9OOrSN3xw6c8aB.cpp @@ -0,0 +1,5310 @@ +/* Include files */ +#include "rtwtypes.h" +#include "slcc_interface_jkx3iHsM9OOrSN3xw6c8aB.h" + +/* Type Definitions */ + +/* Named Constants */ + +/* Variable Declarations */ + +/* Variable Definitions */ + +/* Function Declarations */ + +/* Function Definitions */ +const char_T *get_dll_checksum_jkx3iHsM9OOrSN3xw6c8aB() +{ + return "fseihd4nMB8PNoaWfuPRsD"; +} + +void *create_ModbusTCPClient_DTOtnS5jzeCt7wI4BrWszE_jkx3iHsM9OOrSN3xw6c8aB(const char_T *ip, int32_T port, int32_T numCoils, int32_T numDI, int32_T numIR, int32_T numHR, int32_T startCoils, int32_T startDI, int32_T startIR, int32_T startHR) +{ + return (void *)new ModbusTCPClient(ip, port, numCoils, numDI, numIR, numHR, startCoils, startDI, startIR, startHR); +} + +void *create_ModbusTCPClient_m6DHLsRJatb7jFhPa9sibF_jkx3iHsM9OOrSN3xw6c8aB(const char_T *ip, int32_T port) +{ + return (void *)new ModbusTCPClient(ip, port); +} + +void delete_ModbusTCPClient_IUI8Q2S0ulkAvLxLsx7k7_jkx3iHsM9OOrSN3xw6c8aB(void *classObj) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + delete ModbusTCPClientClassObj; +} + +void ModbusTCPClient_setStartAddresses_WBPKyX5chtvoJpkQQz9yaE_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T startCoils, int32_T startDI, int32_T startIR, int32_T startHR) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + ModbusTCPClientClassObj->setStartAddresses(startCoils, startDI, startIR, startHR); +} + +boolean_T ModbusTCPClient_connectServer_QWoAn8DsWluHwos1RJjgIB_jkx3iHsM9OOrSN3xw6c8aB(void *classObj) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->connectServer(); +} + +void ModbusTCPClient_disconnectServer_8RQB4Kyl2X5kNVGUlAlOgF_jkx3iHsM9OOrSN3xw6c8aB(void *classObj) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + ModbusTCPClientClassObj->disconnectServer(); +} + +boolean_T ModbusTCPClient_isConnected_6gPjpu9NwavTxFjRzBfnHH_jkx3iHsM9OOrSN3xw6c8aB(void *classObj) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->isConnected(); +} + +boolean_T ModbusTCPClient_reconnectServer_tmHQpYOBqsG4QOWlcN1JCG_jkx3iHsM9OOrSN3xw6c8aB(void *classObj) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->reconnectServer(); +} + +void ModbusTCPClient_setTimeout_pKk7C4CiK7cGunjmXsoo9G_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T milliseconds) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + ModbusTCPClientClassObj->setTimeout(milliseconds); +} + +void ModbusTCPClient_setCoil_uKV63H2F6Bk5GhMpqdzPnH_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, boolean_T value) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + ModbusTCPClientClassObj->setCoil(address, value); +} + +void ModbusTCPClient_setHoldingRegister_4XFxsavHXRTDHK2Ce0yJN_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, uint16_T value) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + ModbusTCPClientClassObj->setHoldingRegister(address, value); +} + +boolean_T ModbusTCPClient_getCoil_koLGZb1i8WN62u3e1PZwYH_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->getCoil(address); +} + +boolean_T ModbusTCPClient_getDesiredCoil_4MZCcH6ezDGZg0uObXZUCC_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->getDesiredCoil(address); +} + +boolean_T ModbusTCPClient_getDiscreteInput_ae9HPljrPWD4BuZzmFBLEH_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->getDiscreteInput(address); +} + +uint16_T ModbusTCPClient_getHoldingRegister_mYLPn0wppPgH4bOhTiVvvF_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->getHoldingRegister(address); +} + +uint16_T ModbusTCPClient_getDesiredHoldingRegister_15FbNf22xvcBTZOmdfDtkC_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->getDesiredHoldingRegister(address); +} + +uint16_T ModbusTCPClient_getInputRegister_ULtxwrYKJbrRxoQjkBCEs_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->getInputRegister(address); +} + +ModbusError ModbusTCPClient_getMultipleHoldingRegisters_dolsLHExIVVRdXIf6qYZmF_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T startAddress, int32_T count, uint16_T *destination) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->getMultipleHoldingRegisters(startAddress, count, (unsigned short *)destination); +} + +ModbusError ModbusTCPClient_readAll_0LzP2HH0Zq4XkTmFCbG4o_jkx3iHsM9OOrSN3xw6c8aB(void *classObj) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->readAll(); +} + +ModbusError ModbusTCPClient_writeAll_zaImFzR1o00mWpc4RczmN_jkx3iHsM9OOrSN3xw6c8aB(void *classObj) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->writeAll(); +} + +ModbusError ModbusTCPClient_readCoil_zMFMzEaWMy4AM0fCGw6vkB_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, boolean_T *coilState) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->readCoil(address, *(bool *)coilState); +} + +ModbusError ModbusTCPClient_readMultipleCoils_FsHZsYjrSrPY8P2Ay58lEB_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, int32_T count, boolean_T *coilStates) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->readMultipleCoils(address, count, (bool *)coilStates); +} + +ModbusError ModbusTCPClient_readDiscreteInput_hw3i2qSdn19YvGoOIzPSQF_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, boolean_T *discreteInput) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->readDiscreteInput(address, *(bool *)discreteInput); +} + +ModbusError ModbusTCPClient_readMultipleDiscreteInputs_ejm6F8zFfmummwJiWr5WWE_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, int32_T count, boolean_T *discreteInputs) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->readMultipleDiscreteInputs(address, count, (bool *)discreteInputs); +} + +ModbusError ModbusTCPClient_readHoldingRegister_6gyuCNdZQDr6LxODE49ARC_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, uint16_T *holdingRegister) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->readHoldingRegister(address, *(unsigned short *)holdingRegister); +} + +ModbusError ModbusTCPClient_readMultipleHoldingRegisters_Nsd2PmYkYCsTdyTlOKb0KB_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, int32_T count, uint16_T *holdingRegisters) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->readMultipleHoldingRegisters(address, count, (unsigned short *)holdingRegisters); +} + +ModbusError ModbusTCPClient_readInputRegister_LiIzv9TV0ONDt8VfLmy35G_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, uint16_T *inputRegister) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->readInputRegister(address, *(unsigned short *)inputRegister); +} + +ModbusError ModbusTCPClient_readMultipleInputRegisters_two67DgbwFGoO6KyFi3I5B_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, int32_T count, uint16_T *inputRegisters) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->readMultipleInputRegisters(address, count, (unsigned short *)inputRegisters); +} + +ModbusError ModbusTCPClient_writeCoil_QoP3Zii3RZpABaPcesHRiB_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, boolean_T value) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->writeCoil(address, value); +} + +ModbusError ModbusTCPClient_writeMultipleCoils_p5zcgcGPFH7wlbBhce5JYG_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, int32_T count, const boolean_T *values) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->writeMultipleCoils(address, count, (const bool *)values); +} + +ModbusError ModbusTCPClient_writeHoldingRegister_mGVMywqtoVY5ZLnrtEy19G_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, uint16_T value) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->writeHoldingRegister(address, value); +} + +ModbusError ModbusTCPClient_writeMultipleHoldingRegisters_ga2jca071NX41GYGjHLKzB_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, int32_T count, const uint16_T *values) +{ + ModbusTCPClient *ModbusTCPClientClassObj; + ModbusTCPClientClassObj = (ModbusTCPClient *)classObj; + return ModbusTCPClientClassObj->writeMultipleHoldingRegisters(address, count, (const unsigned short *)values); +} + + +const uint8_T *get_checksum_source_info(int32_T *size) { + static const uint8_T data[363103] = { + 0U, 1U, 73U, 77U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 136U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 0U, 4U, 0U, 77U, 67U, 79U, 83U, +1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 99U, 111U, 110U, 116U, 97U, 105U, 110U, 101U, +114U, 115U, 46U, 77U, 97U, 112U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +0U, 0U, 0U, 221U, 2U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 2U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 192U, 59U, 1U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 144U, 59U, 1U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 2U, 0U, 0U, 0U, 144U, 59U, 1U, 0U, +0U, 1U, 73U, 77U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 240U, 58U, 1U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 2U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 4U, 0U, 5U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 77U, 67U, 79U, 83U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 168U, 58U, 1U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +17U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +1U, 0U, 4U, 0U, 77U, 67U, 79U, 83U, 1U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, +70U, 105U, 108U, 101U, 87U, 114U, 97U, 112U, 112U, 101U, 114U, 95U, 95U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 104U, 58U, 1U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 152U, 2U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +9U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +104U, 2U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +2U, 0U, 0U, 0U, 104U, 2U, 0U, 0U, 4U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, +216U, 0U, 0U, 0U, 8U, 1U, 0U, 0U, 8U, 1U, 0U, 0U, 104U, 1U, 0U, 0U, +64U, 2U, 0U, 0U, 96U, 2U, 0U, 0U, 96U, 2U, 0U, 0U, 104U, 2U, 0U, 0U, +115U, 101U, 114U, 105U, 97U, 108U, 105U, 122U, 97U, 116U, 105U, 111U, 110U, 0U, 80U, 114U, +101U, 112U, 114U, 111U, 99U, 101U, 115U, 115U, 111U, 114U, 79U, 112U, 116U, 115U, 0U, 83U, +114U, 99U, 70U, 105U, 108U, 101U, 68U, 97U, 116U, 101U, 0U, 83U, 114U, 99U, 70U, 105U, +108U, 101U, 66U, 121U, 116U, 101U, 115U, 0U, 72U, 101U, 97U, 100U, 101U, 114U, 70U, 105U, +108U, 101U, 115U, 80U, 97U, 116U, 104U, 115U, 0U, 72U, 101U, 97U, 100U, 101U, 114U, 70U, +105U, 108U, 101U, 115U, 68U, 97U, 116U, 101U, 115U, 0U, 72U, 101U, 97U, 100U, 101U, 114U, +70U, 105U, 108U, 101U, 115U, 66U, 121U, 116U, 101U, 115U, 0U, 67U, 104U, 101U, 99U, 107U, +115U, 117U, 109U, 0U, 67U, 104U, 101U, 99U, 107U, 83U, 117U, 109U, 73U, 110U, 102U, 111U, +0U, 67U, 71U, 88U, 69U, 46U, 67U, 117U, 115U, 116U, 111U, 109U, 67U, 111U, 100U, 101U, +0U, 83U, 114U, 99U, 70U, 105U, 108U, 101U, 78U, 97U, 109U, 101U, 0U, 77U, 97U, 112U, +0U, 99U, 111U, 110U, 116U, 97U, 105U, 110U, 101U, 114U, 115U, 0U, 0U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +10U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +13U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 2U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 3U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +2U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 3U, 0U, 0U, 0U, 2U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 7U, 0U, 0U, 0U, 2U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 3U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 2U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 3U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 7U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, +8U, 0U, 0U, 0U, 2U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 7U, 0U, 0U, 0U, +11U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 3U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +10U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 11U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, 7U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 150U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 2U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 4U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 210U, 0U, 0U, 0U, 83U, 121U, 115U, 116U, 101U, 109U, 73U, 110U, +99U, 108U, 117U, 100U, 101U, 68U, 105U, 114U, 115U, 0U, 0U, 0U, 0U, 73U, 110U, 99U, +108U, 117U, 100U, 101U, 68U, 105U, 114U, 115U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +0U, 0U, 68U, 101U, 102U, 105U, 110U, 101U, 115U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 85U, 110U, 68U, 101U, 102U, 105U, 110U, 101U, 115U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 80U, 114U, 101U, 73U, +110U, 99U, 108U, 117U, 100U, 101U, 115U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +0U, 80U, 114U, 101U, 73U, 110U, 99U, 108U, 117U, 100U, 101U, 77U, 97U, 99U, 114U, 111U, +115U, 0U, 0U, 0U, 0U, 0U, 73U, 103U, 110U, 111U, 114U, 101U, 100U, 77U, 97U, 99U, +114U, 111U, 115U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 68U, 101U, 102U, 97U, 117U, +108U, 116U, 73U, 110U, 99U, 108U, 117U, 100U, 101U, 83U, 117U, 102U, 102U, 105U, 120U, 0U, +75U, 101U, 101U, 112U, 67U, 111U, 109U, 109U, 101U, 110U, 116U, 115U, 0U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 0U, 75U, 101U, 101U, 112U, 76U, 105U, 110U, 101U, 68U, 105U, 114U, +101U, 99U, 116U, 105U, 118U, 101U, 115U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 208U, 2U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 47U, 117U, 115U, 114U, 47U, 105U, 110U, 99U, +108U, 117U, 100U, 101U, 47U, 99U, 43U, 43U, 47U, 49U, 49U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 47U, 117U, 115U, 114U, 47U, 105U, 110U, 99U, +108U, 117U, 100U, 101U, 47U, 120U, 56U, 54U, 95U, 54U, 52U, 45U, 108U, 105U, 110U, 117U, +120U, 45U, 103U, 110U, 117U, 47U, 99U, 43U, 43U, 47U, 49U, 49U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 47U, 117U, 115U, 114U, 47U, 105U, 110U, 99U, +108U, 117U, 100U, 101U, 47U, 99U, 43U, 43U, 47U, 49U, 49U, 47U, 98U, 97U, 99U, 107U, +119U, 97U, 114U, 100U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, +47U, 117U, 115U, 114U, 47U, 108U, 105U, 98U, 47U, 103U, 99U, 99U, 47U, 120U, 56U, 54U, +95U, 54U, 52U, 45U, 108U, 105U, 110U, 117U, 120U, 45U, 103U, 110U, 117U, 47U, 49U, 49U, +47U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +47U, 117U, 115U, 114U, 47U, 108U, 111U, 99U, 97U, 108U, 47U, 105U, 110U, 99U, 108U, 117U, +100U, 101U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +47U, 117U, 115U, 114U, 47U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, 47U, 120U, 56U, 54U, +95U, 54U, 52U, 45U, 108U, 105U, 110U, 117U, 120U, 45U, 103U, 110U, 117U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, 47U, 117U, 115U, 114U, 47U, 105U, 110U, 99U, +108U, 117U, 100U, 101U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +47U, 116U, 109U, 112U, 47U, 55U, 102U, 49U, 48U, 45U, 56U, 56U, 56U, 49U, 45U, 50U, +99U, 48U, 99U, 45U, 97U, 54U, 54U, 50U, 14U, 0U, 0U, 0U, 168U, 1U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +47U, 104U, 111U, 109U, 101U, 47U, 106U, 117U, 100U, 115U, 111U, 110U, 47U, 77U, 65U, 84U, +76U, 65U, 66U, 47U, 101U, 120U, 116U, 101U, 114U, 110U, 47U, 105U, 110U, 99U, 108U, 117U, +100U, 101U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +47U, 104U, 111U, 109U, 101U, 47U, 106U, 117U, 100U, 115U, 111U, 110U, 47U, 77U, 65U, 84U, +76U, 65U, 66U, 47U, 115U, 105U, 109U, 117U, 108U, 105U, 110U, 107U, 47U, 105U, 110U, 99U, +108U, 117U, 100U, 101U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +47U, 104U, 111U, 109U, 101U, 47U, 106U, 117U, 100U, 115U, 111U, 110U, 47U, 80U, 105U, 120U, +104U, 97U, 119U, 107U, 47U, 77U, 65U, 84U, 76U, 65U, 66U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 43U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 43U, 0U, 0U, 0U, 47U, 104U, 111U, 109U, 101U, 47U, 106U, 117U, +100U, 115U, 111U, 110U, 47U, 80U, 105U, 120U, 104U, 97U, 119U, 107U, 47U, 77U, 65U, 84U, +76U, 65U, 66U, 47U, 117U, 79U, 82U, 66U, 95U, 77U, 79U, 68U, 66U, 85U, 83U, 95U, +84U, 67U, 80U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 104U, 143U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 163U, 1U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, +95U, 95U, 83U, 83U, 80U, 95U, 83U, 84U, 82U, 79U, 78U, 71U, 95U, 95U, 61U, 51U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 77U, 73U, +78U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 49U, 48U, 50U, 49U, 41U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 97U, 116U, +116U, 114U, 105U, 98U, 117U, 116U, 101U, 115U, 61U, 50U, 48U, 48U, 56U, 48U, 57U, 76U, +14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 45U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 45U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 110U, 111U, +110U, 116U, 121U, 112U, 101U, 95U, 116U, 101U, 109U, 112U, 108U, 97U, 116U, 101U, 95U, 112U, +97U, 114U, 97U, 109U, 101U, 116U, 101U, 114U, 95U, 97U, 117U, 116U, 111U, 61U, 50U, 48U, +49U, 54U, 48U, 54U, 76U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 49U, 54U, 95U, 77U, +65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 102U, 102U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, +95U, 65U, 67U, 81U, 85U, 73U, 82U, 69U, 61U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 77U, 65U, 88U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 52U, 57U, +51U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 104U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 54U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 54U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 49U, 46U, 49U, 55U, +53U, 52U, 57U, 52U, 51U, 53U, 48U, 56U, 50U, 50U, 50U, 56U, 55U, 53U, 48U, 55U, +57U, 54U, 56U, 55U, 51U, 54U, 53U, 51U, 55U, 50U, 50U, 50U, 50U, 52U, 53U, 54U, +56U, 101U, 45U, 51U, 56U, 70U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 73U, 69U, 67U, 95U, 53U, 53U, 57U, 95U, 67U, 79U, +77U, 80U, 76U, 69U, 88U, 61U, 50U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 97U, 103U, 103U, 114U, 101U, 103U, 97U, 116U, 101U, 95U, +110U, 115U, 100U, 109U, 105U, 61U, 50U, 48U, 49U, 51U, 48U, 52U, 76U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, +69U, 65U, 83U, 84U, 56U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 117U, 110U, 115U, +105U, 103U, 110U, 101U, 100U, 32U, 99U, 104U, 97U, 114U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, +95U, 70U, 76U, 79U, 65U, 84U, 56U, 48U, 95U, 95U, 61U, 49U, 54U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 77U, 65U, 88U, +95U, 67U, 40U, 99U, 41U, 61U, 99U, 32U, 35U, 35U, 32U, 76U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 95U, 95U, 67U, 72U, 65U, 82U, 95U, 66U, +73U, 84U, 95U, 95U, 61U, 56U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 56U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, +102U, 102U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +95U, 95U, 83U, 67U, 72U, 65U, 82U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, +56U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 87U, 73U, 78U, 84U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 85U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 77U, 73U, 78U, 95U, 69U, 88U, 80U, 95U, +95U, 61U, 40U, 45U, 49U, 50U, 53U, 41U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 115U, 116U, 97U, 116U, 105U, 99U, 95U, 97U, 115U, 115U, +101U, 114U, 116U, 61U, 50U, 48U, 49U, 52U, 49U, 49U, 76U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 95U, 95U, 79U, 82U, 68U, 69U, 82U, 95U, +76U, 73U, 84U, 84U, 76U, 69U, 95U, 69U, 78U, 68U, 73U, 65U, 78U, 95U, 95U, 61U, +49U, 50U, 51U, 52U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 85U, +76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 87U, 67U, 72U, 65U, 82U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, +55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 72U, 65U, 86U, 69U, 95U, 83U, 89U, 78U, 67U, 95U, +67U, 79U, 77U, 80U, 65U, 82U, 69U, 95U, 65U, 78U, 68U, 95U, 83U, 87U, 65U, 80U, +95U, 49U, 61U, 49U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 72U, 65U, 86U, 69U, 95U, 83U, 89U, 78U, 67U, 95U, +67U, 79U, 77U, 80U, 65U, 82U, 69U, 95U, 65U, 78U, 68U, 95U, 83U, 87U, 65U, 80U, +95U, 50U, 61U, 49U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 72U, 65U, 86U, 69U, 95U, 83U, 89U, 78U, 67U, 95U, +67U, 79U, 77U, 80U, 65U, 82U, 69U, 95U, 65U, 78U, 68U, 95U, 83U, 87U, 65U, 80U, +95U, 52U, 61U, 49U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 70U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 70U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 77U, 73U, 78U, +95U, 95U, 61U, 100U, 111U, 117U, 98U, 108U, 101U, 40U, 52U, 46U, 57U, 52U, 48U, 54U, +53U, 54U, 52U, 53U, 56U, 52U, 49U, 50U, 52U, 54U, 53U, 52U, 52U, 49U, 55U, 54U, +53U, 54U, 56U, 55U, 57U, 50U, 56U, 54U, 56U, 50U, 50U, 49U, 51U, 55U, 50U, 101U, +45U, 51U, 50U, 52U, 76U, 41U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 72U, 65U, 86U, 69U, 95U, 83U, 89U, 78U, 67U, 95U, +67U, 79U, 77U, 80U, 65U, 82U, 69U, 95U, 65U, 78U, 68U, 95U, 83U, 87U, 65U, 80U, +95U, 56U, 61U, 49U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 67U, 72U, 65U, +82U, 95U, 76U, 79U, 67U, 75U, 95U, 70U, 82U, 69U, 69U, 61U, 50U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 73U, 69U, +67U, 95U, 53U, 53U, 57U, 61U, 50U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 68U, 69U, 67U, 73U, 77U, 65U, 76U, +95U, 68U, 73U, 71U, 95U, 95U, 61U, 49U, 55U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 69U, 86U, +65U, 76U, 95U, 77U, 69U, 84U, 72U, 79U, 68U, 95U, 95U, 61U, 48U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 98U, 105U, +110U, 97U, 114U, 121U, 95U, 108U, 105U, 116U, 101U, 114U, 97U, 108U, 115U, 61U, 50U, 48U, +49U, 51U, 48U, 52U, 76U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 68U, 69U, 67U, 73U, 77U, 65U, 76U, 95U, +68U, 73U, 71U, 95U, 95U, 61U, 49U, 55U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +95U, 95U, 67U, 69U, 84U, 95U, 95U, 61U, 51U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 110U, 111U, +101U, 120U, 99U, 101U, 112U, 116U, 95U, 102U, 117U, 110U, 99U, 116U, 105U, 111U, 110U, 95U, +116U, 121U, 112U, 101U, 61U, 50U, 48U, 49U, 53U, 49U, 48U, 76U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, +79U, 77U, 73U, 67U, 95U, 67U, 72U, 65U, 82U, 51U, 50U, 95U, 84U, 95U, 76U, 79U, +67U, 75U, 95U, 70U, 82U, 69U, 69U, 61U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 118U, 97U, +114U, 105U, 97U, 100U, 105U, 99U, 95U, 116U, 101U, 109U, 112U, 108U, 97U, 116U, 101U, 115U, +61U, 50U, 48U, 48U, 55U, 48U, 52U, 76U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 54U, 52U, 95U, 77U, 65U, +88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 85U, 76U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 71U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 84U, 89U, 80U, +69U, 95U, 95U, 61U, 105U, 110U, 116U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 77U, 73U, 78U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, +95U, 95U, 61U, 40U, 45U, 51U, 48U, 55U, 41U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 70U, 73U, 78U, 73U, 84U, 69U, +95U, 77U, 65U, 84U, 72U, 95U, 79U, 78U, 76U, 89U, 95U, 95U, 61U, 48U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 118U, 97U, +114U, 105U, 97U, 98U, 108U, 101U, 95U, 116U, 101U, 109U, 112U, 108U, 97U, 116U, 101U, 115U, +61U, 50U, 48U, 49U, 51U, 48U, 52U, 76U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 77U, 65U, 88U, 95U, 69U, 88U, 80U, +95U, 95U, 61U, 49U, 48U, 50U, 52U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 72U, 65U, 83U, 95U, 68U, 69U, 78U, 79U, +82U, 77U, 95U, 95U, 61U, 49U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 56U, 95U, 77U, 65U, 88U, +95U, 95U, 61U, 48U, 120U, 102U, 102U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 114U, 118U, 97U, 108U, 117U, 101U, 95U, 114U, 101U, 102U, +101U, 114U, 101U, 110U, 99U, 101U, 61U, 50U, 48U, 48U, 54U, 49U, 48U, 76U, 0U, 0U, +14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 42U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 42U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 110U, 101U, +115U, 116U, 101U, 100U, 95U, 110U, 97U, 109U, 101U, 115U, 112U, 97U, 99U, 101U, 95U, 100U, +101U, 102U, 105U, 110U, 105U, 116U, 105U, 111U, 110U, 115U, 61U, 50U, 48U, 49U, 52U, 49U, +49U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 54U, 52U, 95U, 77U, 65U, 88U, 95U, 69U, 88U, 80U, 95U, +95U, 61U, 51U, 56U, 53U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 56U, 95U, 67U, 40U, 99U, 41U, 61U, 99U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, +65U, 83U, 84U, 56U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 56U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 118U, 97U, +114U, 105U, 97U, 100U, 105U, 99U, 95U, 117U, 115U, 105U, 110U, 103U, 61U, 50U, 48U, 49U, +54U, 49U, 49U, 76U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 41U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 41U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 54U, 52U, 95U, 77U, +65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 85U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, +65U, 83U, 84U, 56U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 99U, 97U, +112U, 116U, 117U, 114U, 101U, 95U, 115U, 116U, 97U, 114U, 95U, 116U, 104U, 105U, 115U, 61U, +50U, 48U, 49U, 54U, 48U, 51U, 76U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +95U, 95U, 83U, 72U, 82U, 84U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, +102U, 102U, 102U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 49U, 46U, 49U, +56U, 57U, 55U, 51U, 49U, 52U, 57U, 53U, 51U, 53U, 55U, 50U, 51U, 49U, 55U, 54U, +53U, 48U, 50U, 49U, 50U, 54U, 51U, 56U, 53U, 51U, 48U, 51U, 48U, 57U, 55U, 48U, +50U, 49U, 101U, 43U, 52U, 57U, 51U, 50U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 77U, 65U, 88U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 52U, 57U, +51U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 105U, 102U, 95U, 99U, 111U, 110U, 115U, 116U, 101U, 120U, +112U, 114U, 61U, 50U, 48U, 49U, 54U, 48U, 54U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 73U, +83U, 95U, 73U, 69U, 67U, 95U, 54U, 48U, 53U, 53U, 57U, 95U, 95U, 61U, 50U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 72U, 65U, 83U, 95U, 81U, 85U, 73U, 69U, 84U, 95U, 78U, 65U, 78U, 95U, 95U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 56U, 95U, 77U, 65U, +88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 66U, 79U, 79U, +76U, 95U, 76U, 79U, 67U, 75U, 95U, 70U, 82U, 69U, 69U, 61U, 50U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 69U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 69U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 54U, 46U, +52U, 55U, 53U, 49U, 55U, 53U, 49U, 49U, 57U, 52U, 51U, 56U, 48U, 50U, 53U, 49U, +49U, 48U, 57U, 50U, 52U, 52U, 51U, 56U, 57U, 53U, 56U, 50U, 50U, 55U, 54U, 52U, +54U, 53U, 53U, 101U, 45U, 52U, 57U, 54U, 54U, 70U, 49U, 50U, 56U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 77U, 65U, +88U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, 32U, 117U, 110U, +115U, 105U, 103U, 110U, 101U, 100U, 32U, 105U, 110U, 116U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 95U, 95U, 108U, 105U, 110U, 117U, 120U, 61U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 51U, 50U, 95U, 69U, 80U, 83U, 73U, 76U, 79U, 78U, 95U, +95U, 61U, 49U, 69U, 45U, 54U, 68U, 70U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 69U, 86U, 65U, 76U, 95U, 77U, 69U, 84U, 72U, 79U, +68U, 95U, 84U, 83U, 95U, 49U, 56U, 54U, 54U, 49U, 95U, 51U, 95U, 95U, 61U, 48U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 95U, 95U, 79U, 80U, 84U, 73U, 77U, 73U, +90U, 69U, 95U, 95U, 61U, 49U, 0U, 0U, 14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +95U, 95U, 117U, 110U, 105U, 120U, 61U, 49U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 51U, 50U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, +120U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 85U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 95U, 95U, 71U, 88U, 88U, 95U, 69U, 88U, +80U, 69U, 82U, 73U, 77U, 69U, 78U, 84U, 65U, 76U, 95U, 67U, 88U, 88U, 48U, 88U, +95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 77U, 73U, 78U, 95U, 69U, 88U, 80U, +95U, 95U, 61U, 40U, 45U, 49U, 54U, 51U, 56U, 49U, 41U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 95U, 95U, 87U, 73U, 78U, 84U, 95U, 77U, +73U, 78U, 95U, 95U, 61U, 48U, 85U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 77U, 73U, 78U, 95U, 49U, 48U, 95U, +69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 52U, 57U, 51U, 49U, 41U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 73U, 83U, 95U, 73U, 69U, 67U, 95U, 54U, 48U, 53U, 53U, 57U, 95U, 95U, 61U, +50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 49U, 54U, 95U, 87U, 73U, +68U, 84U, 72U, 95U, 95U, 61U, 49U, 54U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 83U, 67U, 72U, 65U, 82U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, +55U, 102U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 77U, 65U, 78U, 84U, 95U, 68U, 73U, +71U, 95U, 95U, 61U, 49U, 49U, 51U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +95U, 95U, 87U, 67U, 72U, 65U, 82U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 40U, 45U, +95U, 95U, 87U, 67U, 72U, 65U, 82U, 95U, 77U, 65U, 88U, 95U, 95U, 32U, 45U, 32U, +49U, 41U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 54U, 52U, 95U, 67U, 40U, 99U, 41U, 61U, 99U, 32U, 35U, +35U, 32U, 76U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 80U, 79U, 73U, +78U, 84U, 69U, 82U, 95U, 76U, 79U, 67U, 75U, 95U, 70U, 82U, 69U, 69U, 61U, 50U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 95U, 70U, 79U, 82U, 84U, 73U, 70U, 89U, +95U, 83U, 79U, 85U, 82U, 67U, 69U, 61U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 78U, 68U, 69U, 66U, 85U, 71U, 61U, 49U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 77U, 65U, 78U, 84U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 53U, 51U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, +79U, 77U, 73U, 67U, 95U, 67U, 72U, 65U, 82U, 49U, 54U, 95U, 84U, 95U, 76U, 79U, +67U, 75U, 95U, 70U, 82U, 69U, 69U, 61U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 97U, 108U, +105U, 103U, 110U, 101U, 100U, 95U, 110U, 101U, 119U, 61U, 50U, 48U, 49U, 54U, 48U, 54U, +76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 85U, 83U, 69U, 82U, 95U, 76U, 65U, 66U, 69U, 76U, 95U, 80U, 82U, 69U, +70U, 73U, 88U, 95U, 95U, 61U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 77U, 65U, 88U, 95U, 49U, 48U, 95U, 69U, +88U, 80U, 95U, 95U, 61U, 51U, 56U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 69U, 80U, 83U, 73U, 76U, 79U, 78U, +95U, 95U, 61U, 49U, 46U, 48U, 56U, 52U, 50U, 48U, 50U, 49U, 55U, 50U, 52U, 56U, +53U, 53U, 48U, 52U, 52U, 51U, 52U, 48U, 48U, 55U, 52U, 53U, 50U, 56U, 48U, 48U, +56U, 54U, 57U, 57U, 52U, 49U, 55U, 49U, 101U, 45U, 49U, 57U, 70U, 54U, 52U, 120U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 95U, 95U, 83U, 84U, 68U, 67U, 95U, 72U, +79U, 83U, 84U, 69U, 68U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 54U, 52U, 95U, +77U, 73U, 78U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 51U, 56U, 50U, 41U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 100U, 101U, +99U, 108U, 116U, 121U, 112U, 101U, 95U, 97U, 117U, 116U, 111U, 61U, 50U, 48U, 49U, 51U, +48U, 52U, 76U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 49U, 53U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +68U, 73U, 71U, 95U, 95U, 61U, 54U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 69U, 80U, 83U, 73U, 76U, 79U, 78U, 95U, 95U, 61U, +49U, 46U, 49U, 57U, 50U, 48U, 57U, 50U, 56U, 57U, 53U, 53U, 48U, 55U, 56U, 49U, +50U, 53U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, +48U, 48U, 48U, 48U, 48U, 101U, 45U, 55U, 70U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 95U, 95U, 71U, 88U, 88U, 95U, 87U, 69U, +65U, 75U, 95U, 95U, 61U, 49U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +95U, 95U, 83U, 72U, 82U, 84U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 49U, +54U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 73U, 83U, 95U, 73U, 69U, 67U, 95U, 54U, +48U, 53U, 53U, 57U, 95U, 95U, 61U, 50U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 51U, 46U, 51U, +54U, 50U, 49U, 48U, 51U, 49U, 52U, 51U, 49U, 49U, 50U, 48U, 57U, 51U, 53U, 48U, +54U, 50U, 54U, 50U, 54U, 55U, 55U, 56U, 49U, 55U, 51U, 50U, 49U, 55U, 53U, 50U, +54U, 48U, 101U, 45U, 52U, 57U, 51U, 50U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 73U, 83U, +95U, 73U, 69U, 67U, 95U, 54U, 48U, 53U, 53U, 57U, 95U, 95U, 61U, 50U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 51U, 50U, 95U, +77U, 65U, 88U, 95U, 95U, 61U, 57U, 46U, 57U, 57U, 57U, 57U, 57U, 57U, 69U, 57U, +54U, 68U, 70U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 116U, 104U, 114U, 101U, 97U, 100U, 115U, 97U, 102U, 101U, +95U, 115U, 116U, 97U, 116U, 105U, 99U, 95U, 105U, 110U, 105U, 116U, 61U, 50U, 48U, 48U, +56U, 48U, 54U, 76U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 101U, 110U, 117U, 109U, 101U, 114U, 97U, 116U, 111U, 114U, +95U, 97U, 116U, 116U, 114U, 105U, 98U, 117U, 116U, 101U, 115U, 61U, 50U, 48U, 49U, 52U, +49U, 49U, 76U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 69U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 69U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, +77U, 73U, 78U, 95U, 95U, 61U, 51U, 46U, 54U, 52U, 53U, 49U, 57U, 57U, 53U, 51U, +49U, 56U, 56U, 50U, 52U, 55U, 52U, 54U, 48U, 50U, 53U, 50U, 56U, 52U, 48U, 53U, +57U, 51U, 51U, 54U, 49U, 57U, 52U, 49U, 57U, 56U, 50U, 101U, 45U, 52U, 57U, 53U, +49U, 70U, 54U, 52U, 120U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 72U, 65U, 83U, 95U, 73U, 78U, 70U, +73U, 78U, 73U, 84U, 89U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 51U, 50U, 95U, +77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 95U, 95U, 117U, 110U, 105U, 120U, 95U, 95U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 51U, 50U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, +95U, 76U, 79U, 78U, 71U, 95U, 95U, 61U, 56U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 83U, 84U, 68U, 67U, 95U, 73U, +69U, 67U, 95U, 53U, 53U, 57U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 83U, 84U, 68U, 67U, 95U, 73U, +83U, 79U, 95U, 49U, 48U, 54U, 52U, 54U, 95U, 95U, 61U, 50U, 48U, 49U, 55U, 48U, +54U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 49U, 54U, 95U, 67U, 40U, 99U, 41U, 61U, 99U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 73U, 77U, 65U, +76U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 50U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 83U, 84U, 68U, 67U, 95U, 73U, +69U, 67U, 95U, 53U, 53U, 57U, 95U, 67U, 79U, 77U, 80U, 76U, 69U, 88U, 95U, 95U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 69U, 80U, 83U, 73U, 76U, 79U, 78U, 95U, +95U, 61U, 50U, 46U, 50U, 50U, 48U, 52U, 52U, 54U, 48U, 52U, 57U, 50U, 53U, 48U, +51U, 49U, 51U, 48U, 56U, 48U, 56U, 52U, 55U, 50U, 54U, 51U, 51U, 51U, 54U, 49U, +56U, 49U, 54U, 52U, 48U, 54U, 50U, 101U, 45U, 49U, 54U, 70U, 54U, 52U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 95U, 95U, 103U, 110U, 117U, 95U, 108U, 105U, +110U, 117U, 120U, 95U, 95U, 61U, 49U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 49U, 54U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, +55U, 102U, 102U, 102U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 77U, 73U, 78U, 95U, 69U, 88U, 80U, 95U, +95U, 61U, 40U, 45U, 49U, 48U, 50U, 49U, 41U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 77U, 73U, 78U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, +52U, 57U, 51U, 49U, 41U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 72U, 65U, 83U, 95U, 81U, 85U, 73U, 69U, 84U, +95U, 78U, 65U, 78U, 95U, 95U, 61U, 49U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 77U, 65U, 78U, 84U, 95U, 68U, 73U, 71U, +95U, 95U, 61U, 53U, 51U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, +95U, 82U, 69U, 69U, 78U, 84U, 82U, 65U, 78U, 84U, 61U, 49U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 77U, 65U, 78U, 84U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 54U, 52U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 95U, 95U, 77U, 77U, 88U, 95U, 95U, 61U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 72U, 65U, 83U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, +95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, 95U, 76U, 79U, 78U, 71U, 95U, 68U, 79U, +85U, 66U, 76U, 69U, 95U, 95U, 61U, 49U, 54U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 66U, 73U, 71U, 71U, 69U, 83U, +84U, 95U, 65U, 76U, 73U, 71U, 78U, 77U, 69U, 78U, 84U, 95U, 95U, 61U, 49U, 54U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 95U, 95U, 83U, 84U, 68U, 67U, 95U, 85U, +84U, 70U, 95U, 49U, 54U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +77U, 65U, 88U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 51U, 48U, 56U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 100U, 101U, +108U, 101U, 103U, 97U, 116U, 105U, 110U, 103U, 95U, 99U, 111U, 110U, 115U, 116U, 114U, 117U, +99U, 116U, 111U, 114U, 115U, 61U, 50U, 48U, 48U, 54U, 48U, 52U, 76U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +72U, 65U, 83U, 95U, 73U, 78U, 70U, 73U, 78U, 73U, 84U, 89U, 95U, 95U, 61U, 49U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 63U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 63U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 77U, 65U, +88U, 95U, 95U, 61U, 100U, 111U, 117U, 98U, 108U, 101U, 40U, 49U, 46U, 55U, 57U, 55U, +54U, 57U, 51U, 49U, 51U, 52U, 56U, 54U, 50U, 51U, 49U, 53U, 55U, 48U, 56U, 49U, +52U, 53U, 50U, 55U, 52U, 50U, 51U, 55U, 51U, 49U, 55U, 48U, 52U, 51U, 53U, 55U, +101U, 43U, 51U, 48U, 56U, 76U, 41U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 114U, 97U, 119U, 95U, 115U, 116U, 114U, 105U, 110U, 103U, +115U, 61U, 50U, 48U, 48U, 55U, 49U, 48U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, +83U, 84U, 51U, 50U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 76U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 72U, 65U, +83U, 95U, 73U, 78U, 70U, 73U, 78U, 73U, 84U, 89U, 95U, 95U, 61U, 49U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, +95U, 70U, 76U, 79U, 65U, 84U, 95U, 95U, 61U, 52U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, 95U, 95U, 72U, 65U, 86U, 69U, 95U, 83U, +80U, 69U, 67U, 85U, 76U, 65U, 84U, 73U, 79U, 78U, 95U, 83U, 65U, 70U, 69U, 95U, +86U, 65U, 76U, 85U, 69U, 61U, 49U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 102U, 111U, 108U, 100U, 95U, 101U, 120U, 112U, 114U, 101U, +115U, 115U, 105U, 111U, 110U, 115U, 61U, 50U, 48U, 49U, 54U, 48U, 51U, 76U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 51U, 50U, 95U, +77U, 73U, 78U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 57U, 52U, 41U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 80U, 84U, 82U, +95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 54U, 52U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 72U, 65U, 83U, 95U, 73U, 78U, 70U, 73U, 78U, 73U, 84U, 89U, 95U, 95U, 61U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 51U, 50U, 95U, 77U, +65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 85U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 72U, 65U, 83U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 95U, 61U, 49U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, +83U, 84U, 49U, 54U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, +32U, 105U, 110U, 116U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 77U, 77U, 88U, 95U, 87U, 73U, 84U, 72U, 95U, 83U, 83U, 69U, 95U, 95U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 72U, 65U, 83U, 95U, 68U, 69U, 78U, 79U, 82U, +77U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 114U, 101U, 102U, 95U, 113U, 117U, 97U, 108U, 105U, 102U, +105U, 101U, 114U, 115U, 61U, 50U, 48U, 48U, 55U, 49U, 48U, 76U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 51U, 50U, 95U, +77U, 73U, 78U, 95U, 95U, 61U, 49U, 69U, 45U, 57U, 53U, 68U, 70U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 80U, 82U, 69U, 67U, +65U, 84U, 69U, 68U, 61U, 49U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 114U, 118U, 97U, 108U, 117U, 101U, 95U, 114U, 101U, 102U, +101U, 114U, 101U, 110U, 99U, 101U, 115U, 61U, 50U, 48U, 48U, 54U, 49U, 48U, 76U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 77U, 65U, +88U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 49U, 48U, 50U, 52U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 87U, 67U, 72U, 65U, 82U, 95U, +87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 51U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 58U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 58U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +77U, 65U, 88U, 95U, 95U, 61U, 51U, 46U, 52U, 48U, 50U, 56U, 50U, 51U, 52U, 54U, +54U, 51U, 56U, 53U, 50U, 56U, 56U, 53U, 57U, 56U, 49U, 49U, 55U, 48U, 52U, 49U, +56U, 51U, 52U, 56U, 52U, 53U, 49U, 54U, 57U, 50U, 53U, 101U, 43U, 51U, 56U, 70U, +51U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 49U, 50U, 56U, 95U, 69U, 80U, 83U, 73U, 76U, 79U, 78U, +95U, 95U, 61U, 49U, 69U, 45U, 51U, 51U, 68U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 95U, 95U, 83U, 83U, 69U, 50U, 95U, 77U, +65U, 84U, 72U, 95U, 95U, 61U, 49U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 72U, 76U, 69U, 95U, 82U, 69U, 76U, +69U, 65U, 83U, 69U, 61U, 49U, 51U, 49U, 48U, 55U, 50U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 95U, 95U, 80U, 84U, 82U, 68U, 73U, 70U, +70U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 76U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 95U, 95U, 97U, 109U, 100U, 54U, 52U, 61U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 72U, 76U, 69U, 95U, 65U, 67U, 81U, +85U, 73U, 82U, 69U, 61U, 54U, 53U, 53U, 51U, 54U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 95U, 95U, 76U, 79U, 78U, 71U, 95U, 76U, +79U, 78U, 71U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 76U, 76U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, +95U, 83U, 73U, 90U, 69U, 95U, 84U, 95U, 95U, 61U, 56U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 110U, 115U, +100U, 109U, 105U, 61U, 50U, 48U, 48U, 56U, 48U, 57U, 76U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 77U, 73U, 78U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 49U, 54U, 51U, +56U, 49U, 41U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, 95U, 87U, 73U, 78U, 84U, 95U, 84U, 95U, +95U, 61U, 52U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 76U, 79U, 78U, 71U, 95U, 76U, 79U, 78U, 71U, 95U, 87U, 73U, 68U, 84U, +72U, 95U, 95U, 61U, 54U, 52U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 105U, 110U, 105U, 116U, 105U, 97U, 108U, 105U, 122U, 101U, +114U, 95U, 108U, 105U, 115U, 116U, 115U, 61U, 50U, 48U, 48U, 56U, 48U, 54U, 76U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +77U, 65U, 88U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 49U, 50U, 56U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 104U, 101U, +120U, 95U, 102U, 108U, 111U, 97U, 116U, 61U, 50U, 48U, 49U, 54U, 48U, 51U, 76U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 71U, 88U, 88U, 95U, 65U, 66U, +73U, 95U, 86U, 69U, 82U, 83U, 73U, 79U, 78U, 61U, 49U, 48U, 49U, 54U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 72U, 65U, 83U, 95U, 73U, 78U, 70U, 73U, 78U, 73U, 84U, 89U, 95U, 95U, 61U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 77U, 73U, 78U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, +40U, 45U, 49U, 50U, 53U, 41U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 72U, 65U, 86U, 69U, 95U, 68U, 87U, 65U, 82U, 70U, +50U, 95U, 67U, 70U, 73U, 95U, 65U, 83U, 77U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 95U, 95U, 120U, 56U, 54U, 95U, 54U, 52U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 108U, 97U, 109U, 98U, 100U, 97U, 115U, 61U, 50U, 48U, +48U, 57U, 48U, 55U, 76U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 54U, 52U, 95U, 84U, 89U, 80U, +69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, 32U, 105U, 110U, 116U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 66U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 66U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +68U, 69U, 78U, 79U, 82U, 77U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 52U, 46U, 57U, +52U, 48U, 54U, 53U, 54U, 52U, 53U, 56U, 52U, 49U, 50U, 52U, 54U, 53U, 52U, 52U, +49U, 55U, 54U, 53U, 54U, 56U, 55U, 57U, 50U, 56U, 54U, 56U, 50U, 50U, 49U, 51U, +55U, 50U, 101U, 45U, 51U, 50U, 52U, 70U, 54U, 52U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 116U, 101U, +109U, 112U, 108U, 97U, 116U, 101U, 95U, 97U, 117U, 116U, 111U, 61U, 50U, 48U, 49U, 54U, +48U, 54U, 76U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 63U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 63U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 100U, 111U, 117U, 98U, +108U, 101U, 40U, 50U, 46U, 50U, 50U, 53U, 48U, 55U, 51U, 56U, 53U, 56U, 53U, 48U, +55U, 50U, 48U, 49U, 51U, 56U, 51U, 48U, 57U, 48U, 50U, 51U, 50U, 55U, 49U, 55U, +51U, 51U, 50U, 52U, 48U, 52U, 48U, 54U, 101U, 45U, 51U, 48U, 56U, 76U, 41U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 69U, 80U, 83U, 73U, 76U, 79U, 78U, 95U, 95U, 61U, 49U, 46U, 57U, 50U, 53U, +57U, 50U, 57U, 57U, 52U, 52U, 51U, 56U, 55U, 50U, 51U, 53U, 56U, 53U, 51U, 48U, +53U, 53U, 57U, 55U, 55U, 57U, 52U, 50U, 53U, 56U, 52U, 57U, 50U, 55U, 51U, 50U, +101U, 45U, 51U, 52U, 70U, 49U, 50U, 56U, 14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 67U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 67U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 78U, 79U, 82U, 77U, 95U, 77U, 65U, +88U, 95U, 95U, 61U, 49U, 46U, 49U, 56U, 57U, 55U, 51U, 49U, 52U, 57U, 53U, 51U, +53U, 55U, 50U, 51U, 49U, 55U, 54U, 53U, 48U, 50U, 49U, 50U, 54U, 51U, 56U, 53U, +51U, 48U, 51U, 48U, 57U, 55U, 48U, 50U, 49U, 101U, 43U, 52U, 57U, 51U, 50U, 70U, +54U, 52U, 120U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, 95U, 80U, 79U, 73U, 78U, 84U, 69U, 82U, +95U, 95U, 61U, 56U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +95U, 95U, 76U, 80U, 54U, 52U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 72U, 65U, +83U, 95U, 81U, 85U, 73U, 69U, 84U, 95U, 78U, 65U, 78U, 95U, 95U, 61U, 49U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 69U, 80U, 83U, 73U, 76U, 79U, 78U, 95U, 95U, 61U, 50U, 46U, 50U, 50U, 48U, +52U, 52U, 54U, 48U, 52U, 57U, 50U, 53U, 48U, 51U, 49U, 51U, 48U, 56U, 48U, 56U, +52U, 55U, 50U, 54U, 51U, 51U, 51U, 54U, 49U, 56U, 49U, 54U, 52U, 48U, 54U, 50U, +101U, 45U, 49U, 54U, 70U, 51U, 50U, 120U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 73U, 77U, 65U, 76U, 95U, 66U, 73U, 68U, 95U, 70U, 79U, +82U, 77U, 65U, 84U, 95U, 95U, 61U, 49U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 77U, 73U, 78U, 95U, 49U, 48U, 95U, 69U, +88U, 80U, 95U, 95U, 61U, 40U, 45U, 51U, 48U, 55U, 41U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 68U, 69U, 67U, 73U, 77U, 65U, 76U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 50U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 49U, 50U, 56U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 49U, +69U, 45U, 54U, 49U, 52U, 51U, 68U, 76U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +95U, 95U, 82U, 69U, 71U, 73U, 83U, 84U, 69U, 82U, 95U, 80U, 82U, 69U, 70U, 73U, +88U, 95U, 95U, 61U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 49U, 54U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, +120U, 102U, 102U, 102U, 102U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 72U, 65U, 83U, 95U, 73U, 78U, 70U, 73U, 78U, +73U, 84U, 89U, 95U, 95U, 61U, 49U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 58U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 58U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 49U, 46U, +49U, 55U, 53U, 52U, 57U, 52U, 51U, 53U, 48U, 56U, 50U, 50U, 50U, 56U, 55U, 53U, +48U, 55U, 57U, 54U, 56U, 55U, 51U, 54U, 53U, 51U, 55U, 50U, 50U, 50U, 50U, 52U, +53U, 54U, 56U, 101U, 45U, 51U, 56U, 70U, 51U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 56U, 95U, +84U, 89U, 80U, 69U, 95U, 95U, 61U, 117U, 110U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, +99U, 104U, 97U, 114U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 54U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 95U, 69U, 86U, +65U, 76U, 95U, 77U, 69U, 84U, 72U, 79U, 68U, 95U, 95U, 61U, 50U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 49U, 50U, 56U, +95U, 77U, 65U, 88U, 95U, 95U, 61U, 57U, 46U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, +57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, +57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 69U, 54U, 49U, 52U, 52U, 68U, +76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 77U, 65U, 78U, 84U, 95U, 68U, 73U, 71U, 95U, 95U, +61U, 50U, 52U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 68U, 69U, 67U, 73U, 77U, 65U, 76U, 95U, 68U, +73U, 71U, 95U, 95U, 61U, 50U, 49U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 54U, 52U, 95U, 67U, 40U, 99U, 41U, 61U, 99U, 32U, +35U, 35U, 32U, 85U, 76U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 117U, 110U, 105U, 99U, 111U, 100U, 101U, 95U, 99U, 104U, +97U, 114U, 97U, 99U, 116U, 101U, 114U, 115U, 61U, 50U, 48U, 49U, 52U, 49U, 49U, 76U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 95U, 83U, 84U, 68U, 67U, 95U, 80U, 82U, +69U, 68U, 69U, 70U, 95U, 72U, 61U, 49U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 51U, 50U, 95U, 77U, 65U, +88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, +79U, 77U, 73U, 67U, 95U, 73U, 78U, 84U, 95U, 76U, 79U, 67U, 75U, 95U, 70U, 82U, +69U, 69U, 61U, 50U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 77U, 65U, 88U, 95U, 69U, 88U, 80U, +95U, 95U, 61U, 49U, 54U, 51U, 56U, 52U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 77U, 65U, 78U, 84U, 95U, 68U, 73U, 71U, +95U, 95U, 61U, 50U, 52U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 44U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 44U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 79U, 65U, 84U, 95U, 87U, 79U, 82U, 68U, 95U, 79U, 82U, 68U, +69U, 82U, 95U, 95U, 61U, 95U, 95U, 79U, 82U, 68U, 69U, 82U, 95U, 76U, 73U, 84U, +84U, 76U, 69U, 95U, 69U, 78U, 68U, 73U, 65U, 78U, 95U, 95U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 95U, 95U, 83U, 84U, 68U, 67U, 95U, 73U, +69U, 67U, 95U, 54U, 48U, 53U, 53U, 57U, 95U, 67U, 79U, 77U, 80U, 76U, 69U, 88U, +95U, 95U, 61U, 50U, 48U, 49U, 52U, 48U, 52U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 97U, 103U, +103U, 114U, 101U, 103U, 97U, 116U, 101U, 95U, 98U, 97U, 115U, 101U, 115U, 61U, 50U, 48U, +49U, 54U, 48U, 51U, 76U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 72U, 65U, 83U, 95U, 68U, 69U, 78U, +79U, 82U, 77U, 95U, 95U, 61U, 49U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 68U, 69U, 67U, 73U, 77U, 65U, 76U, 95U, +68U, 73U, 71U, 95U, 95U, 61U, 57U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 51U, +51U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 51U, 50U, 95U, 67U, 40U, 99U, 41U, 61U, 99U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 54U, 52U, 95U, +69U, 80U, 83U, 73U, 76U, 79U, 78U, 95U, 95U, 61U, 49U, 69U, 45U, 49U, 53U, 68U, +68U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 79U, 82U, 68U, 69U, 82U, 95U, 80U, 68U, 80U, 95U, 69U, 78U, 68U, 73U, +65U, 78U, 95U, 95U, 61U, 51U, 52U, 49U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 49U, 50U, 56U, +95U, 77U, 73U, 78U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 54U, 49U, 52U, +50U, 41U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 51U, 50U, 95U, 84U, 89U, 80U, +69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, 32U, 105U, 110U, 116U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, +69U, 65U, 83U, 84U, 49U, 54U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 115U, 104U, +111U, 114U, 116U, 32U, 117U, 110U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 105U, 110U, 116U, +14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 117U, 110U, 105U, 120U, 61U, 49U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 72U, 65U, +83U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 114U, 116U, +116U, 105U, 61U, 49U, 57U, 57U, 55U, 49U, 49U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 54U, 52U, +95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 85U, 76U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 73U, 83U, +95U, 73U, 69U, 67U, 95U, 54U, 48U, 53U, 53U, 57U, 95U, 95U, 61U, 50U, 0U, 0U, +14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 45U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 45U, 0U, 0U, 0U, 95U, 95U, 71U, 78U, 85U, 67U, 95U, 87U, +73U, 68U, 69U, 95U, 69U, 88U, 69U, 67U, 85U, 84U, 73U, 79U, 78U, 95U, 67U, 72U, +65U, 82U, 83U, 69U, 84U, 95U, 78U, 65U, 77U, 69U, 61U, 34U, 85U, 84U, 70U, 45U, +51U, 50U, 76U, 69U, 34U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 49U, +56U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 56U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 115U, 105U, +103U, 110U, 101U, 100U, 32U, 99U, 104U, 97U, 114U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 100U, 105U, +103U, 105U, 116U, 95U, 115U, 101U, 112U, 97U, 114U, 97U, 116U, 111U, 114U, 115U, 61U, 50U, +48U, 49U, 51U, 48U, 57U, 76U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +95U, 95U, 69U, 76U, 70U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 65U, 83U, +77U, 95U, 70U, 76U, 65U, 71U, 95U, 79U, 85U, 84U, 80U, 85U, 84U, 83U, 95U, 95U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 51U, 50U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, +117U, 110U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 105U, 110U, 116U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 82U, 65U, +68U, 73U, 88U, 95U, 95U, 61U, 50U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 49U, 54U, 95U, 84U, 89U, +80U, 69U, 95U, 95U, 61U, 115U, 104U, 111U, 114U, 116U, 32U, 105U, 110U, 116U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 69U, +80U, 83U, 73U, 76U, 79U, 78U, 95U, 95U, 61U, 49U, 46U, 48U, 56U, 52U, 50U, 48U, +50U, 49U, 55U, 50U, 52U, 56U, 53U, 53U, 48U, 52U, 52U, 51U, 52U, 48U, 48U, 55U, +52U, 53U, 50U, 56U, 48U, 48U, 56U, 54U, 57U, 57U, 52U, 49U, 55U, 49U, 101U, 45U, +49U, 57U, 76U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 77U, 65U, 88U, 95U, 67U, 40U, 99U, 41U, 61U, 99U, +32U, 35U, 35U, 32U, 85U, 76U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +95U, 95U, 71U, 76U, 73U, 66U, 67U, 88U, 88U, 95U, 66U, 73U, 84U, 83U, 73U, 90U, +69U, 95U, 73U, 78U, 84U, 95U, 78U, 95U, 48U, 61U, 49U, 50U, 56U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 95U, 95U, 107U, 56U, 61U, 49U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 77U, 73U, 78U, 95U, 95U, 61U, 50U, 46U, 50U, 50U, 53U, 48U, 55U, 51U, 56U, +53U, 56U, 53U, 48U, 55U, 50U, 48U, 49U, 51U, 56U, 51U, 48U, 57U, 48U, 50U, 51U, +50U, 55U, 49U, 55U, 51U, 51U, 50U, 52U, 48U, 52U, 48U, 54U, 101U, 45U, 51U, 48U, +56U, 70U, 51U, 50U, 120U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 71U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 77U, 65U, 88U, +95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, +79U, 77U, 73U, 67U, 95U, 87U, 67U, 72U, 65U, 82U, 95U, 84U, 95U, 76U, 79U, 67U, +75U, 95U, 70U, 82U, 69U, 69U, 61U, 50U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +95U, 95U, 83U, 84U, 68U, 67U, 95U, 73U, 69U, 67U, 95U, 54U, 48U, 53U, 53U, 57U, +95U, 66U, 70U, 80U, 95U, 95U, 61U, 50U, 48U, 49U, 52U, 48U, 52U, 76U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, +95U, 80U, 84U, 82U, 68U, 73U, 70U, 70U, 95U, 84U, 95U, 95U, 61U, 56U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 68U, +73U, 71U, 95U, 95U, 61U, 49U, 56U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 73U, 83U, 95U, 73U, 69U, 67U, 95U, 54U, +48U, 53U, 53U, 57U, 95U, 95U, 61U, 50U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, +95U, 95U, 120U, 56U, 54U, 95U, 54U, 52U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 77U, 73U, 78U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 49U, 48U, 50U, +49U, 41U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 51U, 50U, 95U, 83U, 85U, 66U, 78U, 79U, 82U, 77U, 65U, +76U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 48U, 46U, 48U, 48U, 48U, 48U, 48U, 49U, +69U, 45U, 57U, 53U, 68U, 70U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 49U, 54U, 95U, 77U, 65U, 88U, +95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 76U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 49U, 53U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, +65U, 83U, 84U, 51U, 50U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 85U, 76U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 39U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 39U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, +69U, 65U, 83U, 84U, 54U, 52U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 108U, 111U, +110U, 103U, 32U, 117U, 110U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 105U, 110U, 116U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 72U, 65U, +83U, 95U, 81U, 85U, 73U, 69U, 84U, 95U, 78U, 65U, 78U, 95U, 95U, 61U, 49U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 77U, 65U, +88U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 51U, 56U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 95U, 95U, 76U, 79U, 78U, 71U, 95U, 77U, +65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 76U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 72U, 65U, 83U, 95U, 68U, 69U, 78U, +79U, 82U, 77U, 95U, 95U, 61U, 49U, 0U, 14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 68U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 68U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 49U, 50U, 56U, 95U, 83U, 85U, 66U, 78U, 79U, 82U, 77U, +65U, 76U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 48U, 46U, 48U, 48U, 48U, 48U, 48U, +48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, +48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 49U, 69U, 45U, 54U, 49U, +52U, 51U, 68U, 76U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 72U, 65U, 83U, 95U, 73U, 78U, 70U, 73U, 78U, 73U, +84U, 89U, 95U, 95U, 61U, 49U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, +95U, 95U, 71U, 78U, 85U, 67U, 95U, 69U, 88U, 69U, 67U, 85U, 84U, 73U, 79U, 78U, +95U, 67U, 72U, 65U, 82U, 83U, 69U, 84U, 95U, 78U, 65U, 77U, 69U, 61U, 34U, 85U, +84U, 70U, 45U, 56U, 34U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 117U, 110U, 105U, 99U, 111U, 100U, 101U, 95U, 108U, 105U, +116U, 101U, 114U, 97U, 108U, 115U, 61U, 50U, 48U, 48U, 55U, 49U, 48U, 76U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, +65U, 83U, 84U, 49U, 54U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, +103U, 32U, 117U, 110U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 105U, 110U, 116U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 54U, 52U, 95U, +77U, 65U, 88U, 95U, 95U, 61U, 57U, 46U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, +57U, 57U, 57U, 57U, 57U, 57U, 57U, 69U, 51U, 56U, 52U, 68U, 68U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, +83U, 84U, 51U, 50U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 54U, 52U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 95U, 95U, 80U, 82U, 65U, 71U, 77U, 65U, +95U, 82U, 69U, 68U, 69U, 70U, 73U, 78U, 69U, 95U, 69U, 88U, 84U, 78U, 65U, 77U, +69U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 54U, +52U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +95U, 95U, 83U, 69U, 71U, 95U, 70U, 83U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, +65U, 83U, 84U, 49U, 54U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, +102U, 102U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 54U, 52U, 95U, 77U, 65U, 78U, 84U, 95U, 68U, 73U, 71U, +95U, 95U, 61U, 49U, 54U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 54U, 52U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, +55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +95U, 95U, 83U, 69U, 71U, 95U, 71U, 83U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 65U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 65U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +68U, 69U, 78U, 79U, 82U, 77U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 49U, 46U, 52U, +48U, 49U, 50U, 57U, 56U, 52U, 54U, 52U, 51U, 50U, 52U, 56U, 49U, 55U, 48U, 55U, +48U, 57U, 50U, 51U, 55U, 50U, 57U, 53U, 56U, 51U, 50U, 56U, 57U, 57U, 49U, 54U, +49U, 51U, 101U, 45U, 52U, 53U, 70U, 51U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 71U, 95U, 65U, 84U, +79U, 77U, 73U, 67U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 51U, 50U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, +65U, 83U, 84U, 54U, 52U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, +103U, 32U, 105U, 110U, 116U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 49U, 54U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 115U, +104U, 111U, 114U, 116U, 32U, 105U, 110U, 116U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 56U, 95U, 84U, 89U, 80U, +69U, 95U, 95U, 61U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 99U, 104U, 97U, 114U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 115U, 116U, +114U, 117U, 99U, 116U, 117U, 114U, 101U, 100U, 95U, 98U, 105U, 110U, 100U, 105U, 110U, 103U, +115U, 61U, 50U, 48U, 49U, 54U, 48U, 54U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, +95U, 73U, 78U, 84U, 95U, 95U, 61U, 52U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 51U, 50U, 95U, 77U, 65U, 88U, 95U, 69U, 88U, 80U, 95U, +95U, 61U, 57U, 55U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 56U, 95U, 77U, 65U, 88U, 95U, +95U, 61U, 48U, 120U, 55U, 102U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 49U, +46U, 49U, 56U, 57U, 55U, 51U, 49U, 52U, 57U, 53U, 51U, 53U, 55U, 50U, 51U, 49U, +55U, 54U, 53U, 48U, 56U, 53U, 55U, 53U, 57U, 51U, 50U, 54U, 54U, 50U, 56U, 48U, +48U, 55U, 48U, 50U, 101U, 43U, 52U, 57U, 51U, 50U, 70U, 49U, 50U, 56U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 80U, 84U, 82U, +95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 115U, 105U, +122U, 101U, 100U, 95U, 100U, 101U, 97U, 108U, 108U, 111U, 99U, 97U, 116U, 105U, 111U, 110U, +61U, 50U, 48U, 49U, 51U, 48U, 57U, 76U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 103U, 117U, 97U, 114U, 97U, 110U, 116U, 101U, 101U, 100U, +95U, 99U, 111U, 112U, 121U, 95U, 101U, 108U, 105U, 115U, 105U, 111U, 110U, 61U, 50U, 48U, +49U, 54U, 48U, 54U, 76U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 7U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 7U, 0U, 0U, 0U, +108U, 105U, 110U, 117U, 120U, 61U, 49U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 72U, 65U, 83U, 95U, 81U, 85U, 73U, 69U, +84U, 95U, 78U, 65U, 78U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +77U, 73U, 78U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 51U, +55U, 41U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +95U, 95U, 80U, 84U, 82U, 68U, 73U, 70U, 70U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, +95U, 61U, 54U, 52U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 77U, 65U, 78U, 84U, 95U, 68U, 73U, 71U, 95U, +95U, 61U, 54U, 52U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 114U, 97U, 110U, 103U, 101U, 95U, 98U, 97U, 115U, 101U, +100U, 95U, 102U, 111U, 114U, 61U, 50U, 48U, 49U, 54U, 48U, 51U, 76U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +72U, 65U, 83U, 95U, 73U, 78U, 70U, 73U, 78U, 73U, 84U, 89U, 95U, 95U, 61U, 49U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 77U, 65U, 88U, 95U, 95U, 61U, 49U, 46U, 49U, 56U, 57U, 55U, 51U, 49U, 52U, +57U, 53U, 51U, 53U, 55U, 50U, 51U, 49U, 55U, 54U, 53U, 48U, 50U, 49U, 50U, 54U, +51U, 56U, 53U, 51U, 48U, 51U, 48U, 57U, 55U, 48U, 50U, 49U, 101U, 43U, 52U, 57U, +51U, 50U, 70U, 54U, 52U, 120U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +95U, 95U, 83U, 84U, 68U, 67U, 80U, 80U, 95U, 68U, 69U, 70U, 65U, 85U, 76U, 84U, +95U, 78U, 69U, 87U, 95U, 65U, 76U, 73U, 71U, 78U, 77U, 69U, 78U, 84U, 95U, 95U, +61U, 49U, 54U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 44U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 44U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 71U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 77U, 73U, 78U, +95U, 95U, 61U, 40U, 45U, 95U, 95U, 83U, 73U, 71U, 95U, 65U, 84U, 79U, 77U, 73U, +67U, 95U, 77U, 65U, 88U, 95U, 95U, 32U, 45U, 32U, 49U, 41U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 99U, 111U, 100U, 101U, 95U, 109U, +111U, 100U, 101U, 108U, 95U, 115U, 109U, 97U, 108U, 108U, 95U, 95U, 61U, 49U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, +79U, 77U, 73U, 67U, 95U, 76U, 79U, 78U, 71U, 95U, 76U, 79U, 67U, 75U, 95U, 70U, +82U, 69U, 69U, 61U, 50U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 110U, 111U, 110U, 116U, 121U, 112U, 101U, 95U, 116U, 101U, +109U, 112U, 108U, 97U, 116U, 101U, 95U, 97U, 114U, 103U, 115U, 61U, 50U, 48U, 49U, 52U, +49U, 49U, 76U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 51U, 50U, 95U, 77U, 65U, 78U, 84U, 95U, 68U, 73U, 71U, +95U, 95U, 61U, 55U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 114U, 101U, 116U, 117U, 114U, 110U, 95U, 116U, 121U, 112U, +101U, 95U, 100U, 101U, 100U, 117U, 99U, 116U, 105U, 111U, 110U, 61U, 50U, 48U, 49U, 51U, +48U, 52U, 76U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +95U, 95U, 107U, 56U, 95U, 95U, 61U, 49U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 80U, 84U, 82U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, +108U, 111U, 110U, 103U, 32U, 105U, 110U, 116U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 49U, 54U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, +115U, 104U, 111U, 114U, 116U, 32U, 117U, 110U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 105U, +110U, 116U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 87U, 67U, 72U, 65U, 82U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 105U, +110U, 116U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +95U, 95U, 112U, 105U, 99U, 95U, 95U, 61U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 80U, 84U, +82U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 85U, 76U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, +83U, 84U, 54U, 52U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 54U, 52U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 100U, 101U, +99U, 108U, 116U, 121U, 112U, 101U, 61U, 50U, 48U, 48U, 55U, 48U, 55U, 76U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, +83U, 84U, 54U, 52U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 76U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, +79U, 77U, 73U, 67U, 95U, 84U, 69U, 83U, 84U, 95U, 65U, 78U, 68U, 95U, 83U, 69U, +84U, 95U, 84U, 82U, 85U, 69U, 86U, 65U, 76U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 78U, 79U, +82U, 77U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 51U, 46U, 52U, 48U, 50U, 56U, 50U, +51U, 52U, 54U, 54U, 51U, 56U, 53U, 50U, 56U, 56U, 53U, 57U, 56U, 49U, 49U, 55U, +48U, 52U, 49U, 56U, 51U, 52U, 56U, 52U, 53U, 49U, 54U, 57U, 50U, 53U, 101U, 43U, +51U, 56U, 70U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 77U, 65U, 88U, 95U, 69U, 88U, 80U, +95U, 95U, 61U, 49U, 54U, 51U, 56U, 52U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 54U, 52U, 95U, 84U, 89U, +80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, 32U, 117U, 110U, 115U, 105U, 103U, 110U, +101U, 100U, 32U, 105U, 110U, 116U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 105U, 110U, 108U, 105U, 110U, 101U, 95U, 118U, 97U, 114U, +105U, 97U, 98U, 108U, 101U, 115U, 61U, 50U, 48U, 49U, 54U, 48U, 54U, 76U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 77U, 65U, +88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 11U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 11U, 0U, 0U, 0U, 95U, 95U, 108U, 105U, 110U, 117U, 120U, 95U, +95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 54U, 52U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 108U, +111U, 110U, 103U, 32U, 105U, 110U, 116U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 77U, 65U, 88U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, +49U, 50U, 56U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 79U, 82U, 68U, 69U, 82U, 95U, 66U, 73U, 71U, 95U, 69U, 78U, 68U, 73U, +65U, 78U, 95U, 95U, 61U, 52U, 51U, 50U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 77U, 65U, +78U, 84U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 53U, 51U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 105U, 110U, +104U, 101U, 114U, 105U, 116U, 105U, 110U, 103U, 95U, 99U, 111U, 110U, 115U, 116U, 114U, 117U, +99U, 116U, 111U, 114U, 115U, 61U, 50U, 48U, 49U, 53U, 49U, 49U, 76U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, +95U, 70U, 76U, 79U, 65U, 84U, 49U, 50U, 56U, 95U, 95U, 61U, 49U, 54U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 39U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 39U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, +65U, 83U, 84U, 54U, 52U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 76U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 54U, 52U, 95U, +77U, 73U, 78U, 95U, 95U, 61U, 49U, 69U, 45U, 51U, 56U, 51U, 68U, 68U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, +69U, 65U, 83U, 84U, 51U, 50U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 117U, 110U, +115U, 105U, 103U, 110U, 101U, 100U, 32U, 105U, 110U, 116U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, +95U, 83U, 72U, 79U, 82U, 84U, 95U, 95U, 61U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 63U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 63U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +78U, 79U, 82U, 77U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 51U, 46U, 52U, 48U, 50U, +56U, 50U, 51U, 52U, 54U, 54U, 51U, 56U, 53U, 50U, 56U, 56U, 53U, 57U, 56U, 49U, +49U, 55U, 48U, 52U, 49U, 56U, 51U, 52U, 56U, 52U, 53U, 49U, 54U, 57U, 50U, 53U, +101U, 43U, 51U, 56U, 70U, 51U, 50U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +95U, 95U, 83U, 83U, 69U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 77U, +73U, 78U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 49U, 54U, 51U, 56U, 49U, +41U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 49U, 46U, +55U, 57U, 55U, 54U, 57U, 51U, 49U, 51U, 52U, 56U, 54U, 50U, 51U, 49U, 53U, 55U, +48U, 56U, 49U, 52U, 53U, 50U, 55U, 52U, 50U, 51U, 55U, 51U, 49U, 55U, 48U, 52U, +51U, 53U, 55U, 101U, 43U, 51U, 48U, 56U, 70U, 54U, 52U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 11U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 11U, 0U, 0U, 0U, 95U, 95U, 97U, 109U, 100U, 54U, 52U, 95U, +95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +95U, 95U, 87U, 73U, 78U, 84U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 51U, +50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 54U, 52U, 95U, 87U, 73U, +68U, 84U, 72U, 95U, 95U, 61U, 54U, 52U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 77U, 65U, 88U, 95U, 69U, 88U, 80U, 95U, 95U, +61U, 49U, 54U, 51U, 56U, 52U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 77U, 65U, 88U, 95U, 49U, 48U, 95U, +69U, 88U, 80U, 95U, 95U, 61U, 51U, 48U, 56U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, +95U, 73U, 78U, 84U, 49U, 50U, 56U, 95U, 95U, 61U, 49U, 54U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 73U, 83U, 95U, 73U, 69U, 67U, 95U, 54U, 48U, 53U, 53U, 57U, 95U, 95U, 61U, +50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 77U, 65U, 88U, 95U, 49U, 48U, 95U, 69U, 88U, +80U, 95U, 95U, 61U, 52U, 57U, 51U, 50U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 82U, 69U, 76U, 65U, 88U, 69U, 68U, +61U, 48U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 66U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 66U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 69U, 80U, 83U, 73U, 76U, 79U, 78U, 95U, 95U, 61U, +100U, 111U, 117U, 98U, 108U, 101U, 40U, 50U, 46U, 50U, 50U, 48U, 52U, 52U, 54U, 48U, +52U, 57U, 50U, 53U, 48U, 51U, 49U, 51U, 48U, 56U, 48U, 56U, 52U, 55U, 50U, 54U, +51U, 51U, 51U, 54U, 49U, 56U, 49U, 54U, 52U, 48U, 54U, 50U, 101U, 45U, 49U, 54U, +76U, 41U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 51U, +46U, 51U, 54U, 50U, 49U, 48U, 51U, 49U, 52U, 51U, 49U, 49U, 50U, 48U, 57U, 51U, +53U, 48U, 54U, 50U, 54U, 50U, 54U, 55U, 55U, 56U, 49U, 55U, 51U, 50U, 49U, 55U, +53U, 50U, 54U, 48U, 101U, 45U, 52U, 57U, 51U, 50U, 70U, 49U, 50U, 56U, 0U, 0U, +14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 7U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 7U, 0U, 0U, 0U, 95U, 76U, 80U, 54U, 52U, 61U, 49U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 56U, 95U, +67U, 40U, 99U, 41U, 61U, 99U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 77U, 65U, 88U, 95U, 69U, 88U, 80U, 95U, +95U, 61U, 49U, 48U, 50U, 52U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 51U, 50U, 95U, 84U, 89U, +80U, 69U, 95U, 95U, 61U, 105U, 110U, 116U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, 95U, 87U, 67U, 72U, 65U, 82U, 95U, 84U, +95U, 95U, 61U, 52U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 67U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 67U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 78U, 79U, 82U, 77U, 95U, 77U, 65U, +88U, 95U, 95U, 61U, 49U, 46U, 49U, 56U, 57U, 55U, 51U, 49U, 52U, 57U, 53U, 51U, +53U, 55U, 50U, 51U, 49U, 55U, 54U, 53U, 48U, 56U, 53U, 55U, 53U, 57U, 51U, 50U, +54U, 54U, 50U, 56U, 48U, 48U, 55U, 48U, 50U, 101U, 43U, 52U, 57U, 51U, 50U, 70U, +49U, 50U, 56U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 78U, 79U, 82U, 77U, 95U, 77U, 65U, 88U, +95U, 95U, 61U, 49U, 46U, 55U, 57U, 55U, 54U, 57U, 51U, 49U, 51U, 52U, 56U, 54U, +50U, 51U, 49U, 53U, 55U, 48U, 56U, 49U, 52U, 53U, 50U, 55U, 52U, 50U, 51U, 55U, +51U, 49U, 55U, 48U, 52U, 51U, 53U, 55U, 101U, 43U, 51U, 48U, 56U, 70U, 54U, 52U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 72U, 65U, 83U, 95U, 81U, 85U, 73U, 69U, 84U, 95U, 78U, 65U, 78U, 95U, 95U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 77U, 65U, 88U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, +120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 56U, 95U, 84U, 89U, 80U, 69U, +95U, 95U, 61U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 99U, 104U, 97U, 114U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 110U, 97U, +109U, 101U, 115U, 112U, 97U, 99U, 101U, 95U, 97U, 116U, 116U, 114U, 105U, 98U, 117U, 116U, +101U, 115U, 61U, 50U, 48U, 49U, 52U, 49U, 49U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 77U, 73U, 78U, 95U, 95U, 61U, 51U, 46U, 51U, 54U, 50U, 49U, 48U, 51U, 49U, +52U, 51U, 49U, 49U, 50U, 48U, 57U, 51U, 53U, 48U, 54U, 50U, 54U, 50U, 54U, 55U, +55U, 56U, 49U, 55U, 51U, 50U, 49U, 55U, 53U, 50U, 54U, 48U, 101U, 45U, 52U, 57U, +51U, 50U, 70U, 54U, 52U, 120U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +95U, 95U, 83U, 84U, 68U, 67U, 80U, 80U, 95U, 84U, 72U, 82U, 69U, 65U, 68U, 83U, +95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 72U, 65U, 83U, 95U, 68U, 69U, 78U, 79U, +82U, 77U, 95U, 95U, 61U, 49U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 69U, 80U, 83U, 73U, 76U, 79U, 78U, 95U, +95U, 61U, 49U, 46U, 49U, 57U, 50U, 48U, 57U, 50U, 56U, 57U, 53U, 53U, 48U, 55U, +56U, 49U, 50U, 53U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, +48U, 48U, 48U, 48U, 48U, 48U, 48U, 101U, 45U, 55U, 70U, 51U, 50U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 68U, 69U, +67U, 73U, 77U, 65U, 76U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 49U, 55U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 95U, 95U, 83U, 84U, 68U, 67U, 95U, 85U, +84U, 70U, 95U, 51U, 50U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, +83U, 84U, 56U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 56U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 95U, 95U, 70U, 88U, 83U, 82U, 95U, 95U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 49U, +46U, 55U, 57U, 55U, 54U, 57U, 51U, 49U, 51U, 52U, 56U, 54U, 50U, 51U, 49U, 53U, +55U, 48U, 56U, 49U, 52U, 53U, 50U, 55U, 52U, 50U, 51U, 55U, 51U, 49U, 55U, 48U, +52U, 51U, 53U, 55U, 101U, 43U, 51U, 48U, 56U, 70U, 51U, 50U, 120U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 68U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 68U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 78U, 79U, +82U, 77U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 100U, 111U, 117U, 98U, 108U, 101U, 40U, +49U, 46U, 55U, 57U, 55U, 54U, 57U, 51U, 49U, 51U, 52U, 56U, 54U, 50U, 51U, 49U, +53U, 55U, 48U, 56U, 49U, 52U, 53U, 50U, 55U, 52U, 50U, 51U, 55U, 51U, 49U, 55U, +48U, 52U, 51U, 53U, 55U, 101U, 43U, 51U, 48U, 56U, 76U, 41U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 95U, 95U, 66U, 89U, 84U, 69U, 95U, 79U, +82U, 68U, 69U, 82U, 95U, 95U, 61U, 95U, 95U, 79U, 82U, 68U, 69U, 82U, 95U, 76U, +73U, 84U, 84U, 76U, 69U, 95U, 69U, 78U, 68U, 73U, 65U, 78U, 95U, 95U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 77U, 65U, 88U, +95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 54U, 52U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 114U, 117U, +110U, 116U, 105U, 109U, 101U, 95U, 97U, 114U, 114U, 97U, 121U, 115U, 61U, 49U, 57U, 56U, +55U, 49U, 50U, 76U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 54U, 52U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, +108U, 111U, 110U, 103U, 32U, 117U, 110U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 105U, 110U, +116U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 51U, 50U, 95U, 67U, 40U, 99U, 41U, 61U, 99U, 32U, +35U, 35U, 32U, 85U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 97U, 108U, 105U, 97U, 115U, 95U, 116U, 101U, 109U, 112U, +108U, 97U, 116U, 101U, 115U, 61U, 50U, 48U, 48U, 55U, 48U, 52U, 76U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 68U, 69U, +78U, 79U, 82U, 77U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 49U, 46U, 52U, 48U, 49U, +50U, 57U, 56U, 52U, 54U, 52U, 51U, 50U, 52U, 56U, 49U, 55U, 48U, 55U, 48U, 57U, +50U, 51U, 55U, 50U, 57U, 53U, 56U, 51U, 50U, 56U, 57U, 57U, 49U, 54U, 49U, 51U, +101U, 45U, 52U, 53U, 70U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 73U, 83U, 95U, 73U, 69U, 67U, 95U, +54U, 48U, 53U, 53U, 57U, 95U, 95U, 61U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 56U, 95U, 77U, +65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 95U, 95U, 76U, 79U, 78U, 71U, 95U, 87U, +73U, 68U, 84U, 72U, 95U, 95U, 61U, 54U, 52U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 95U, 95U, 80U, 73U, 67U, 95U, 95U, 61U, +50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 51U, 50U, 95U, 84U, 89U, +80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, 32U, 117U, 110U, 115U, 105U, 103U, 110U, +101U, 100U, 32U, 105U, 110U, 116U, 0U, 0U, 14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 66U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 66U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 78U, 79U, 82U, 77U, 95U, 77U, 65U, +88U, 95U, 95U, 61U, 49U, 46U, 55U, 57U, 55U, 54U, 57U, 51U, 49U, 51U, 52U, 56U, +54U, 50U, 51U, 49U, 53U, 55U, 48U, 56U, 49U, 52U, 53U, 50U, 55U, 52U, 50U, 51U, +55U, 51U, 49U, 55U, 48U, 52U, 51U, 53U, 55U, 101U, 43U, 51U, 48U, 56U, 70U, 51U, +50U, 120U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 104U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 54U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 54U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 51U, 46U, 52U, 48U, +50U, 56U, 50U, 51U, 52U, 54U, 54U, 51U, 56U, 53U, 50U, 56U, 56U, 53U, 57U, 56U, +49U, 49U, 55U, 48U, 52U, 49U, 56U, 51U, 52U, 56U, 52U, 53U, 49U, 54U, 57U, 50U, +53U, 101U, 43U, 51U, 56U, 70U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 99U, 111U, 110U, 115U, 116U, 101U, 120U, 112U, 114U, 61U, +50U, 48U, 49U, 54U, 48U, 51U, 76U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +95U, 95U, 83U, 83U, 69U, 50U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 100U, 101U, +100U, 117U, 99U, 116U, 105U, 111U, 110U, 95U, 103U, 117U, 105U, 100U, 101U, 115U, 61U, 50U, +48U, 49U, 55U, 48U, 51U, 76U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 51U, 50U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 105U, +110U, 116U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, 95U, 68U, 79U, 85U, 66U, 76U, 69U, 95U, +95U, 61U, 56U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 101U, 120U, 99U, 101U, 112U, 116U, 105U, 111U, 110U, 115U, +61U, 49U, 57U, 57U, 55U, 49U, 49U, 76U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 77U, 73U, 78U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, +95U, 95U, 61U, 40U, 45U, 51U, 55U, 41U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 50U, 46U, +50U, 50U, 53U, 48U, 55U, 51U, 56U, 53U, 56U, 53U, 48U, 55U, 50U, 48U, 49U, 51U, +56U, 51U, 48U, 57U, 48U, 50U, 51U, 50U, 55U, 49U, 55U, 51U, 51U, 50U, 52U, 48U, +52U, 48U, 54U, 101U, 45U, 51U, 48U, 56U, 70U, 54U, 52U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, +65U, 83U, 84U, 51U, 50U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 51U, 50U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 77U, 65U, 88U, +95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, 32U, 105U, 110U, 116U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 49U, 50U, 56U, +95U, 77U, 65U, 88U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 54U, 49U, 52U, 53U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 72U, 65U, 83U, 95U, 81U, 85U, 73U, 69U, 84U, 95U, 78U, 65U, 78U, 95U, 95U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 67U, 79U, 78U, 83U, 85U, 77U, 69U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, +95U, 95U, 71U, 76U, 73U, 66U, 67U, 88U, 88U, 95U, 84U, 89U, 80U, 69U, 95U, 73U, +78U, 84U, 95U, 78U, 95U, 48U, 61U, 95U, 95U, 105U, 110U, 116U, 49U, 50U, 56U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, +83U, 84U, 49U, 54U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 54U, 52U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 77U, 65U, +88U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 85U, 76U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 68U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 68U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 52U, 46U, +57U, 52U, 48U, 54U, 53U, 54U, 52U, 53U, 56U, 52U, 49U, 50U, 52U, 54U, 53U, 52U, +52U, 49U, 55U, 54U, 53U, 54U, 56U, 55U, 57U, 50U, 56U, 54U, 56U, 50U, 50U, 49U, +51U, 55U, 50U, 101U, 45U, 51U, 50U, 52U, 70U, 51U, 50U, 120U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 116U, 101U, +109U, 112U, 108U, 97U, 116U, 101U, 95U, 116U, 101U, 109U, 112U, 108U, 97U, 116U, 101U, 95U, +97U, 114U, 103U, 115U, 61U, 50U, 48U, 49U, 54U, 49U, 49U, 76U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 77U, 65U, +88U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 51U, 48U, 56U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 68U, +69U, 78U, 79U, 82U, 77U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 51U, 46U, 54U, 52U, +53U, 49U, 57U, 57U, 53U, 51U, 49U, 56U, 56U, 50U, 52U, 55U, 52U, 54U, 48U, 50U, +53U, 50U, 56U, 52U, 48U, 53U, 57U, 51U, 51U, 54U, 49U, 57U, 52U, 49U, 57U, 56U, +50U, 101U, 45U, 52U, 57U, 53U, 49U, 76U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 49U, 54U, 95U, 67U, 40U, 99U, 41U, 61U, 99U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 95U, 95U, 83U, 84U, 68U, 67U, 95U, 95U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 49U, +53U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 83U, 69U, 81U, 95U, 67U, 83U, 84U, +61U, 53U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 77U, 73U, 78U, 95U, 49U, 48U, 95U, +69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 51U, 48U, 55U, 41U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 80U, 84U, +82U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, 32U, 117U, 110U, +115U, 105U, 103U, 110U, 101U, 100U, 32U, 105U, 110U, 116U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 54U, 52U, 95U, +83U, 85U, 66U, 78U, 79U, 82U, 77U, 65U, 76U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, +48U, 46U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, +49U, 69U, 45U, 51U, 56U, 51U, 68U, 68U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 49U, 50U, 56U, 95U, 77U, 65U, 78U, 84U, 95U, 68U, 73U, +71U, 95U, 95U, 61U, 51U, 52U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 77U, 73U, 78U, 95U, 49U, 48U, 95U, 69U, 88U, +80U, 95U, 95U, 61U, 40U, 45U, 52U, 57U, 51U, 49U, 41U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 103U, 101U, +110U, 101U, 114U, 105U, 99U, 95U, 108U, 97U, 109U, 98U, 100U, 97U, 115U, 61U, 50U, 48U, +49U, 51U, 48U, 52U, 76U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +95U, 95U, 83U, 83U, 69U, 95U, 77U, 65U, 84U, 72U, 95U, 95U, 61U, 49U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, +95U, 76U, 79U, 78U, 71U, 95U, 76U, 79U, 78U, 71U, 95U, 95U, 61U, 56U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 117U, 115U, +101U, 114U, 95U, 100U, 101U, 102U, 105U, 110U, 101U, 100U, 95U, 108U, 105U, 116U, 101U, 114U, +97U, 108U, 115U, 61U, 50U, 48U, 48U, 56U, 48U, 57U, 76U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 68U, 69U, 67U, 73U, 77U, 65U, 76U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 51U, +54U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 76U, 76U, 79U, +78U, 71U, 95U, 76U, 79U, 67U, 75U, 95U, 70U, 82U, 69U, 69U, 61U, 50U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +72U, 65U, 83U, 95U, 81U, 85U, 73U, 69U, 84U, 95U, 78U, 65U, 78U, 95U, 95U, 61U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 68U, 69U, 67U, 73U, 77U, 65U, 76U, 95U, 68U, 73U, +71U, 95U, 95U, 61U, 57U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 49U, 54U, 95U, 77U, 65U, +88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 85U, 76U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 78U, 79U, 82U, 77U, 95U, 77U, 65U, 88U, 95U, +95U, 61U, 49U, 46U, 49U, 56U, 57U, 55U, 51U, 49U, 52U, 57U, 53U, 51U, 53U, 55U, +50U, 51U, 49U, 55U, 54U, 53U, 48U, 50U, 49U, 50U, 54U, 51U, 56U, 53U, 51U, 48U, +51U, 48U, 57U, 55U, 48U, 50U, 49U, 101U, 43U, 52U, 57U, 51U, 50U, 76U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, +79U, 77U, 73U, 67U, 95U, 83U, 72U, 79U, 82U, 84U, 95U, 76U, 79U, 67U, 75U, 95U, +70U, 82U, 69U, 69U, 61U, 50U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 56U, 95U, 84U, 89U, 80U, +69U, 95U, 95U, 61U, 117U, 110U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 99U, 104U, 97U, +114U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, +95U, 71U, 78U, 85U, 95U, 83U, 79U, 85U, 82U, 67U, 69U, 61U, 49U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 105U, 110U, +105U, 116U, 95U, 99U, 97U, 112U, 116U, 117U, 114U, 101U, 115U, 61U, 50U, 48U, 49U, 51U, +48U, 52U, 76U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 65U, 67U, 81U, 95U, 82U, 69U, 76U, +61U, 52U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 82U, 69U, 76U, 69U, 65U, 83U, 69U, +61U, 51U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +77U, 65U, 84U, 76U, 65U, 66U, 95U, 77U, 69U, 88U, 95U, 70U, 73U, 76U, 69U, 61U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, +77U, 88U, 95U, 67U, 79U, 77U, 80U, 65U, 84U, 95U, 54U, 52U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 77U, 65U, 84U, 76U, 65U, 66U, 95U, 77U, +69U, 88U, 67U, 77U, 68U, 95U, 82U, 69U, 76U, 69U, 65U, 83U, 69U, 61U, 82U, 50U, +48U, 49U, 56U, 97U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +9U, 2U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +2U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 9U, 2U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 2U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +9U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 144U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 47U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 47U, 0U, 0U, 0U, 47U, 104U, 111U, 109U, 101U, 47U, 106U, 117U, +100U, 115U, 111U, 110U, 47U, 80U, 105U, 120U, 104U, 97U, 119U, 107U, 47U, 77U, 65U, 84U, +76U, 65U, 66U, 47U, 109U, 111U, 100U, 98U, 117U, 115U, 95U, 116U, 99U, 112U, 95U, 99U, +108U, 105U, 101U, 110U, 116U, 46U, 104U, 0U, 14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +204U, 215U, 141U, 94U, 15U, 147U, 38U, 65U, 14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 0U, 84U, 181U, 64U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +0U, 0U, 160U, 150U, 35U, 98U, 238U, 65U, 0U, 0U, 0U, 51U, 147U, 211U, 227U, 65U, +0U, 0U, 64U, 55U, 88U, 40U, 209U, 65U, 0U, 0U, 64U, 142U, 177U, 156U, 209U, 65U, +14U, 0U, 0U, 0U, 112U, 150U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +2U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 4U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 210U, 0U, 0U, 0U, +83U, 121U, 115U, 116U, 101U, 109U, 73U, 110U, 99U, 108U, 117U, 100U, 101U, 68U, 105U, 114U, +115U, 0U, 0U, 0U, 0U, 73U, 110U, 99U, 108U, 117U, 100U, 101U, 68U, 105U, 114U, 115U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 68U, 101U, 102U, 105U, 110U, 101U, +115U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 85U, +110U, 68U, 101U, 102U, 105U, 110U, 101U, 115U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 80U, 114U, 101U, 73U, 110U, 99U, 108U, 117U, 100U, 101U, 115U, 0U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 80U, 114U, 101U, 73U, 110U, 99U, 108U, +117U, 100U, 101U, 77U, 97U, 99U, 114U, 111U, 115U, 0U, 0U, 0U, 0U, 0U, 73U, 103U, +110U, 111U, 114U, 101U, 100U, 77U, 97U, 99U, 114U, 111U, 115U, 0U, 0U, 0U, 0U, 0U, +0U, 0U, 0U, 68U, 101U, 102U, 97U, 117U, 108U, 116U, 73U, 110U, 99U, 108U, 117U, 100U, +101U, 83U, 117U, 102U, 102U, 105U, 120U, 0U, 75U, 101U, 101U, 112U, 67U, 111U, 109U, 109U, +101U, 110U, 116U, 115U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 75U, 101U, 101U, +112U, 76U, 105U, 110U, 101U, 68U, 105U, 114U, 101U, 99U, 116U, 105U, 118U, 101U, 115U, 0U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 208U, 2U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +47U, 117U, 115U, 114U, 47U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, 47U, 99U, 43U, 43U, +47U, 49U, 49U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +47U, 117U, 115U, 114U, 47U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, 47U, 120U, 56U, 54U, +95U, 54U, 52U, 45U, 108U, 105U, 110U, 117U, 120U, 45U, 103U, 110U, 117U, 47U, 99U, 43U, +43U, 47U, 49U, 49U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +47U, 117U, 115U, 114U, 47U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, 47U, 99U, 43U, 43U, +47U, 49U, 49U, 47U, 98U, 97U, 99U, 107U, 119U, 97U, 114U, 100U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, 47U, 117U, 115U, 114U, 47U, 108U, 105U, 98U, +47U, 103U, 99U, 99U, 47U, 120U, 56U, 54U, 95U, 54U, 52U, 45U, 108U, 105U, 110U, 117U, +120U, 45U, 103U, 110U, 117U, 47U, 49U, 49U, 47U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 47U, 117U, 115U, 114U, 47U, 108U, 111U, 99U, +97U, 108U, 47U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 47U, 117U, 115U, 114U, 47U, 105U, 110U, 99U, +108U, 117U, 100U, 101U, 47U, 120U, 56U, 54U, 95U, 54U, 52U, 45U, 108U, 105U, 110U, 117U, +120U, 45U, 103U, 110U, 117U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, +47U, 117U, 115U, 114U, 47U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 47U, 116U, 109U, 112U, 47U, 55U, 102U, 49U, +48U, 45U, 56U, 56U, 56U, 49U, 45U, 50U, 99U, 48U, 99U, 45U, 97U, 54U, 54U, 50U, +14U, 0U, 0U, 0U, 168U, 1U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 47U, 104U, 111U, 109U, 101U, 47U, 106U, 117U, +100U, 115U, 111U, 110U, 47U, 77U, 65U, 84U, 76U, 65U, 66U, 47U, 101U, 120U, 116U, 101U, +114U, 110U, 47U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 47U, 104U, 111U, 109U, 101U, 47U, 106U, 117U, +100U, 115U, 111U, 110U, 47U, 77U, 65U, 84U, 76U, 65U, 66U, 47U, 115U, 105U, 109U, 117U, +108U, 105U, 110U, 107U, 47U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 47U, 104U, 111U, 109U, 101U, 47U, 106U, 117U, +100U, 115U, 111U, 110U, 47U, 80U, 105U, 120U, 104U, 97U, 119U, 107U, 47U, 77U, 65U, 84U, +76U, 65U, 66U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 43U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 43U, 0U, 0U, 0U, +47U, 104U, 111U, 109U, 101U, 47U, 106U, 117U, 100U, 115U, 111U, 110U, 47U, 80U, 105U, 120U, +104U, 97U, 119U, 107U, 47U, 77U, 65U, 84U, 76U, 65U, 66U, 47U, 117U, 79U, 82U, 66U, +95U, 77U, 79U, 68U, 66U, 85U, 83U, 95U, 84U, 67U, 80U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 104U, 143U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +163U, 1U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 95U, 95U, 83U, 83U, 80U, 95U, 83U, 84U, +82U, 79U, 78U, 71U, 95U, 95U, 61U, 51U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 77U, 73U, 78U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, +40U, 45U, 49U, 48U, 50U, 49U, 41U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 97U, 116U, 116U, 114U, 105U, 98U, 117U, 116U, 101U, 115U, +61U, 50U, 48U, 48U, 56U, 48U, 57U, 76U, 14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 45U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 45U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 110U, 111U, 110U, 116U, 121U, 112U, 101U, 95U, 116U, 101U, +109U, 112U, 108U, 97U, 116U, 101U, 95U, 112U, 97U, 114U, 97U, 109U, 101U, 116U, 101U, 114U, +95U, 97U, 117U, 116U, 111U, 61U, 50U, 48U, 49U, 54U, 48U, 54U, 76U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, +69U, 65U, 83U, 84U, 49U, 54U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, +102U, 102U, 102U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 65U, 67U, 81U, 85U, 73U, 82U, 69U, +61U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 77U, 65U, 88U, 95U, 49U, 48U, 95U, +69U, 88U, 80U, 95U, 95U, 61U, 52U, 57U, 51U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 104U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 54U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 54U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 77U, 73U, +78U, 95U, 95U, 61U, 49U, 46U, 49U, 55U, 53U, 52U, 57U, 52U, 51U, 53U, 48U, 56U, +50U, 50U, 50U, 56U, 55U, 53U, 48U, 55U, 57U, 54U, 56U, 55U, 51U, 54U, 53U, 51U, +55U, 50U, 50U, 50U, 50U, 52U, 53U, 54U, 56U, 101U, 45U, 51U, 56U, 70U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 73U, 69U, +67U, 95U, 53U, 53U, 57U, 95U, 67U, 79U, 77U, 80U, 76U, 69U, 88U, 61U, 50U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 97U, 103U, +103U, 114U, 101U, 103U, 97U, 116U, 101U, 95U, 110U, 115U, 100U, 109U, 105U, 61U, 50U, 48U, +49U, 51U, 48U, 52U, 76U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 56U, 95U, 84U, 89U, +80U, 69U, 95U, 95U, 61U, 117U, 110U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 99U, 104U, +97U, 114U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, 95U, 70U, 76U, 79U, 65U, 84U, 56U, 48U, +95U, 95U, 61U, 49U, 54U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 77U, 65U, 88U, 95U, 67U, 40U, 99U, 41U, 61U, 99U, 32U, +35U, 35U, 32U, 76U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +95U, 95U, 67U, 72U, 65U, 82U, 95U, 66U, 73U, 84U, 95U, 95U, 61U, 56U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 56U, 95U, +77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 95U, 95U, 83U, 67U, 72U, 65U, 82U, 95U, +87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 56U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 87U, 73U, 78U, 84U, 95U, 77U, +65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 85U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +77U, 73U, 78U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 49U, 50U, 53U, 41U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 115U, 116U, +97U, 116U, 105U, 99U, 95U, 97U, 115U, 115U, 101U, 114U, 116U, 61U, 50U, 48U, 49U, 52U, +49U, 49U, 76U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +95U, 95U, 79U, 82U, 68U, 69U, 82U, 95U, 76U, 73U, 84U, 84U, 76U, 69U, 95U, 69U, +78U, 68U, 73U, 65U, 78U, 95U, 95U, 61U, 49U, 50U, 51U, 52U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 95U, 77U, +65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 85U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 87U, 67U, 72U, 65U, 82U, 95U, +77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 72U, 65U, +86U, 69U, 95U, 83U, 89U, 78U, 67U, 95U, 67U, 79U, 77U, 80U, 65U, 82U, 69U, 95U, +65U, 78U, 68U, 95U, 83U, 87U, 65U, 80U, 95U, 49U, 61U, 49U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 72U, 65U, +86U, 69U, 95U, 83U, 89U, 78U, 67U, 95U, 67U, 79U, 77U, 80U, 65U, 82U, 69U, 95U, +65U, 78U, 68U, 95U, 83U, 87U, 65U, 80U, 95U, 50U, 61U, 49U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 72U, 65U, +86U, 69U, 95U, 83U, 89U, 78U, 67U, 95U, 67U, 79U, 77U, 80U, 65U, 82U, 69U, 95U, +65U, 78U, 68U, 95U, 83U, 87U, 65U, 80U, 95U, 52U, 61U, 49U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 70U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 70U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 68U, 69U, +78U, 79U, 82U, 77U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 100U, 111U, 117U, 98U, 108U, +101U, 40U, 52U, 46U, 57U, 52U, 48U, 54U, 53U, 54U, 52U, 53U, 56U, 52U, 49U, 50U, +52U, 54U, 53U, 52U, 52U, 49U, 55U, 54U, 53U, 54U, 56U, 55U, 57U, 50U, 56U, 54U, +56U, 50U, 50U, 49U, 51U, 55U, 50U, 101U, 45U, 51U, 50U, 52U, 76U, 41U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 72U, 65U, +86U, 69U, 95U, 83U, 89U, 78U, 67U, 95U, 67U, 79U, 77U, 80U, 65U, 82U, 69U, 95U, +65U, 78U, 68U, 95U, 83U, 87U, 65U, 80U, 95U, 56U, 61U, 49U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, +79U, 77U, 73U, 67U, 95U, 67U, 72U, 65U, 82U, 95U, 76U, 79U, 67U, 75U, 95U, 70U, +82U, 69U, 69U, 61U, 50U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 73U, 69U, 67U, 95U, 53U, 53U, 57U, 61U, 50U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 68U, 69U, 67U, 73U, 77U, 65U, 76U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 49U, +55U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 69U, 86U, 65U, 76U, 95U, 77U, 69U, 84U, 72U, 79U, +68U, 95U, 95U, 61U, 48U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 98U, 105U, 110U, 97U, 114U, 121U, 95U, 108U, 105U, 116U, +101U, 114U, 97U, 108U, 115U, 61U, 50U, 48U, 49U, 51U, 48U, 52U, 76U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +68U, 69U, 67U, 73U, 77U, 65U, 76U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 49U, 55U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 95U, 95U, 67U, 69U, 84U, 95U, 95U, 61U, +51U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 110U, 111U, 101U, 120U, 99U, 101U, 112U, 116U, 95U, 102U, +117U, 110U, 99U, 116U, 105U, 111U, 110U, 95U, 116U, 121U, 112U, 101U, 61U, 50U, 48U, 49U, +53U, 49U, 48U, 76U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 67U, 72U, 65U, +82U, 51U, 50U, 95U, 84U, 95U, 76U, 79U, 67U, 75U, 95U, 70U, 82U, 69U, 69U, 61U, +50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 118U, 97U, 114U, 105U, 97U, 100U, 105U, 99U, 95U, 116U, +101U, 109U, 112U, 108U, 97U, 116U, 101U, 115U, 61U, 50U, 48U, 48U, 55U, 48U, 52U, 76U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, +65U, 83U, 84U, 54U, 52U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 85U, 76U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 71U, 95U, 65U, 84U, +79U, 77U, 73U, 67U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 105U, 110U, 116U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 77U, 73U, +78U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 51U, 48U, 55U, +41U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 70U, 73U, 78U, 73U, 84U, 69U, 95U, 77U, 65U, 84U, 72U, 95U, 79U, 78U, +76U, 89U, 95U, 95U, 61U, 48U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 118U, 97U, 114U, 105U, 97U, 98U, 108U, 101U, 95U, 116U, +101U, 109U, 112U, 108U, 97U, 116U, 101U, 115U, 61U, 50U, 48U, 49U, 51U, 48U, 52U, 76U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 77U, 65U, 88U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 49U, 48U, 50U, 52U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +72U, 65U, 83U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 95U, 61U, 49U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, +65U, 83U, 84U, 56U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 114U, 118U, +97U, 108U, 117U, 101U, 95U, 114U, 101U, 102U, 101U, 114U, 101U, 110U, 99U, 101U, 61U, 50U, +48U, 48U, 54U, 49U, 48U, 76U, 0U, 0U, 14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 42U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 42U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 110U, 101U, 115U, 116U, 101U, 100U, 95U, 110U, 97U, 109U, +101U, 115U, 112U, 97U, 99U, 101U, 95U, 100U, 101U, 102U, 105U, 110U, 105U, 116U, 105U, 111U, +110U, 115U, 61U, 50U, 48U, 49U, 52U, 49U, 49U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 54U, 52U, 95U, +77U, 65U, 88U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 51U, 56U, 53U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 56U, 95U, 67U, +40U, 99U, 41U, 61U, 99U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 56U, 95U, 87U, 73U, 68U, +84U, 72U, 95U, 95U, 61U, 56U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 118U, 97U, 114U, 105U, 97U, 100U, 105U, 99U, 95U, 117U, +115U, 105U, 110U, 103U, 61U, 50U, 48U, 49U, 54U, 49U, 49U, 76U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 41U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 41U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, +69U, 65U, 83U, 84U, 54U, 52U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 85U, +76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 56U, 95U, 77U, 65U, 88U, +95U, 95U, 61U, 48U, 120U, 55U, 102U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 99U, 97U, 112U, 116U, 117U, 114U, 101U, 95U, 115U, 116U, +97U, 114U, 95U, 116U, 104U, 105U, 115U, 61U, 50U, 48U, 49U, 54U, 48U, 51U, 76U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 95U, 95U, 83U, 72U, 82U, 84U, 95U, 77U, +65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 77U, +65U, 88U, 95U, 95U, 61U, 49U, 46U, 49U, 56U, 57U, 55U, 51U, 49U, 52U, 57U, 53U, +51U, 53U, 55U, 50U, 51U, 49U, 55U, 54U, 53U, 48U, 50U, 49U, 50U, 54U, 51U, 56U, +53U, 51U, 48U, 51U, 48U, 57U, 55U, 48U, 50U, 49U, 101U, 43U, 52U, 57U, 51U, 50U, +76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 77U, 65U, 88U, 95U, 49U, 48U, 95U, +69U, 88U, 80U, 95U, 95U, 61U, 52U, 57U, 51U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 105U, 102U, +95U, 99U, 111U, 110U, 115U, 116U, 101U, 120U, 112U, 114U, 61U, 50U, 48U, 49U, 54U, 48U, +54U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 73U, 83U, 95U, 73U, 69U, 67U, 95U, 54U, 48U, +53U, 53U, 57U, 95U, 95U, 61U, 50U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 72U, 65U, 83U, 95U, 81U, 85U, 73U, +69U, 84U, 95U, 78U, 65U, 78U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, +69U, 65U, 83U, 84U, 56U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, +79U, 77U, 73U, 67U, 95U, 66U, 79U, 79U, 76U, 95U, 76U, 79U, 67U, 75U, 95U, 70U, +82U, 69U, 69U, 61U, 50U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 69U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 69U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, +77U, 73U, 78U, 95U, 95U, 61U, 54U, 46U, 52U, 55U, 53U, 49U, 55U, 53U, 49U, 49U, +57U, 52U, 51U, 56U, 48U, 50U, 53U, 49U, 49U, 48U, 57U, 50U, 52U, 52U, 51U, 56U, +57U, 53U, 56U, 50U, 50U, 55U, 54U, 52U, 54U, 53U, 53U, 101U, 45U, 52U, 57U, 54U, +54U, 70U, 49U, 50U, 56U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 77U, 65U, 88U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, +61U, 108U, 111U, 110U, 103U, 32U, 117U, 110U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 105U, +110U, 116U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +95U, 95U, 108U, 105U, 110U, 117U, 120U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 51U, 50U, 95U, +69U, 80U, 83U, 73U, 76U, 79U, 78U, 95U, 95U, 61U, 49U, 69U, 45U, 54U, 68U, 70U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 69U, 86U, +65U, 76U, 95U, 77U, 69U, 84U, 72U, 79U, 68U, 95U, 84U, 83U, 95U, 49U, 56U, 54U, +54U, 49U, 95U, 51U, 95U, 95U, 61U, 48U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +95U, 95U, 79U, 80U, 84U, 73U, 77U, 73U, 90U, 69U, 95U, 95U, 61U, 49U, 0U, 0U, +14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 95U, 95U, 117U, 110U, 105U, 120U, 61U, 49U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 51U, 50U, +95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 85U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +95U, 95U, 71U, 88U, 88U, 95U, 69U, 88U, 80U, 69U, 82U, 73U, 77U, 69U, 78U, 84U, +65U, 76U, 95U, 67U, 88U, 88U, 48U, 88U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 77U, 73U, 78U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 49U, 54U, 51U, +56U, 49U, 41U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +95U, 95U, 87U, 73U, 78U, 84U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 48U, 85U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 77U, 73U, 78U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, +52U, 57U, 51U, 49U, 41U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 73U, 83U, 95U, 73U, 69U, 67U, 95U, +54U, 48U, 53U, 53U, 57U, 95U, 95U, 61U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, +65U, 83U, 84U, 49U, 54U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 49U, 54U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 83U, 67U, 72U, 65U, 82U, 95U, +77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 77U, 65U, 78U, 84U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 49U, 49U, 51U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 95U, 95U, 87U, 67U, 72U, 65U, 82U, 95U, +77U, 73U, 78U, 95U, 95U, 61U, 40U, 45U, 95U, 95U, 87U, 67U, 72U, 65U, 82U, 95U, +77U, 65U, 88U, 95U, 95U, 32U, 45U, 32U, 49U, 41U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 54U, 52U, 95U, +67U, 40U, 99U, 41U, 61U, 99U, 32U, 35U, 35U, 32U, 76U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, +79U, 77U, 73U, 67U, 95U, 80U, 79U, 73U, 78U, 84U, 69U, 82U, 95U, 76U, 79U, 67U, +75U, 95U, 70U, 82U, 69U, 69U, 61U, 50U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +95U, 70U, 79U, 82U, 84U, 73U, 70U, 89U, 95U, 83U, 79U, 85U, 82U, 67U, 69U, 61U, +50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +78U, 68U, 69U, 66U, 85U, 71U, 61U, 49U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 77U, 65U, 78U, 84U, 95U, 68U, 73U, +71U, 95U, 95U, 61U, 53U, 51U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 67U, 72U, 65U, +82U, 49U, 54U, 95U, 84U, 95U, 76U, 79U, 67U, 75U, 95U, 70U, 82U, 69U, 69U, 61U, +50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 97U, 108U, 105U, 103U, 110U, 101U, 100U, 95U, 110U, 101U, +119U, 61U, 50U, 48U, 49U, 54U, 48U, 54U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 85U, 83U, 69U, 82U, 95U, 76U, +65U, 66U, 69U, 76U, 95U, 80U, 82U, 69U, 70U, 73U, 88U, 95U, 95U, 61U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +77U, 65U, 88U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 51U, 56U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 69U, 80U, 83U, 73U, 76U, 79U, 78U, 95U, 95U, 61U, 49U, 46U, 48U, 56U, 52U, +50U, 48U, 50U, 49U, 55U, 50U, 52U, 56U, 53U, 53U, 48U, 52U, 52U, 51U, 52U, 48U, +48U, 55U, 52U, 53U, 50U, 56U, 48U, 48U, 56U, 54U, 57U, 57U, 52U, 49U, 55U, 49U, +101U, 45U, 49U, 57U, 70U, 54U, 52U, 120U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +95U, 95U, 83U, 84U, 68U, 67U, 95U, 72U, 79U, 83U, 84U, 69U, 68U, 95U, 95U, 61U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 54U, 52U, 95U, 77U, 73U, 78U, 95U, 69U, 88U, 80U, 95U, +95U, 61U, 40U, 45U, 51U, 56U, 50U, 41U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 100U, 101U, 99U, 108U, 116U, 121U, 112U, 101U, 95U, 97U, +117U, 116U, 111U, 61U, 50U, 48U, 49U, 51U, 48U, 52U, 76U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 68U, 73U, +71U, 95U, 95U, 61U, 49U, 53U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 54U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 69U, 80U, +83U, 73U, 76U, 79U, 78U, 95U, 95U, 61U, 49U, 46U, 49U, 57U, 50U, 48U, 57U, 50U, +56U, 57U, 53U, 53U, 48U, 55U, 56U, 49U, 50U, 53U, 48U, 48U, 48U, 48U, 48U, 48U, +48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 101U, 45U, 55U, +70U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +95U, 95U, 71U, 88U, 88U, 95U, 87U, 69U, 65U, 75U, 95U, 95U, 61U, 49U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 95U, 95U, 83U, 72U, 82U, 84U, 95U, 87U, +73U, 68U, 84U, 72U, 95U, 95U, 61U, 49U, 54U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +73U, 83U, 95U, 73U, 69U, 67U, 95U, 54U, 48U, 53U, 53U, 57U, 95U, 95U, 61U, 50U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 77U, +73U, 78U, 95U, 95U, 61U, 51U, 46U, 51U, 54U, 50U, 49U, 48U, 51U, 49U, 52U, 51U, +49U, 49U, 50U, 48U, 57U, 51U, 53U, 48U, 54U, 50U, 54U, 50U, 54U, 55U, 55U, 56U, +49U, 55U, 51U, 50U, 49U, 55U, 53U, 50U, 54U, 48U, 101U, 45U, 52U, 57U, 51U, 50U, +76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 73U, 83U, 95U, 73U, 69U, 67U, 95U, 54U, 48U, 53U, +53U, 57U, 95U, 95U, 61U, 50U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 51U, 50U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 57U, 46U, +57U, 57U, 57U, 57U, 57U, 57U, 69U, 57U, 54U, 68U, 70U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 116U, 104U, +114U, 101U, 97U, 100U, 115U, 97U, 102U, 101U, 95U, 115U, 116U, 97U, 116U, 105U, 99U, 95U, +105U, 110U, 105U, 116U, 61U, 50U, 48U, 48U, 56U, 48U, 54U, 76U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 101U, 110U, +117U, 109U, 101U, 114U, 97U, 116U, 111U, 114U, 95U, 97U, 116U, 116U, 114U, 105U, 98U, 117U, +116U, 101U, 115U, 61U, 50U, 48U, 49U, 52U, 49U, 49U, 76U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 69U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 69U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 51U, 46U, +54U, 52U, 53U, 49U, 57U, 57U, 53U, 51U, 49U, 56U, 56U, 50U, 52U, 55U, 52U, 54U, +48U, 50U, 53U, 50U, 56U, 52U, 48U, 53U, 57U, 51U, 51U, 54U, 49U, 57U, 52U, 49U, +57U, 56U, 50U, 101U, 45U, 52U, 57U, 53U, 49U, 70U, 54U, 52U, 120U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 72U, 65U, 83U, 95U, 73U, 78U, 70U, 73U, 78U, 73U, 84U, 89U, 95U, 95U, 61U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 51U, 50U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, +55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +95U, 95U, 117U, 110U, 105U, 120U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 87U, 73U, +68U, 84U, 72U, 95U, 95U, 61U, 51U, 50U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, 95U, 76U, 79U, 78U, 71U, 95U, 95U, 61U, +56U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 83U, 84U, 68U, 67U, 95U, 73U, 69U, 67U, 95U, 53U, 53U, 57U, 95U, 95U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 83U, 84U, 68U, 67U, 95U, 73U, 83U, 79U, 95U, 49U, 48U, 54U, 52U, 54U, +95U, 95U, 61U, 50U, 48U, 49U, 55U, 48U, 54U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 49U, 54U, +95U, 67U, 40U, 99U, 41U, 61U, 99U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 73U, 77U, 65U, 76U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, +50U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 83U, 84U, 68U, 67U, 95U, 73U, 69U, 67U, 95U, 53U, 53U, 57U, 95U, 67U, +79U, 77U, 80U, 76U, 69U, 88U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +69U, 80U, 83U, 73U, 76U, 79U, 78U, 95U, 95U, 61U, 50U, 46U, 50U, 50U, 48U, 52U, +52U, 54U, 48U, 52U, 57U, 50U, 53U, 48U, 51U, 49U, 51U, 48U, 56U, 48U, 56U, 52U, +55U, 50U, 54U, 51U, 51U, 51U, 54U, 49U, 56U, 49U, 54U, 52U, 48U, 54U, 50U, 101U, +45U, 49U, 54U, 70U, 54U, 52U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +95U, 95U, 103U, 110U, 117U, 95U, 108U, 105U, 110U, 117U, 120U, 95U, 95U, 61U, 49U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 49U, 54U, 95U, +77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +77U, 73U, 78U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 49U, 48U, 50U, 49U, +41U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 77U, 73U, 78U, 95U, 49U, 48U, 95U, +69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 52U, 57U, 51U, 49U, 41U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 72U, +65U, 83U, 95U, 81U, 85U, 73U, 69U, 84U, 95U, 78U, 65U, 78U, 95U, 95U, 61U, 49U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +77U, 65U, 78U, 84U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 53U, 51U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, 95U, 82U, 69U, 69U, 78U, 84U, 82U, 65U, +78U, 84U, 61U, 49U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 77U, 65U, 78U, 84U, 95U, 68U, 73U, +71U, 95U, 95U, 61U, 54U, 52U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +95U, 95U, 77U, 77U, 88U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 72U, 65U, +83U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, +95U, 76U, 79U, 78U, 71U, 95U, 68U, 79U, 85U, 66U, 76U, 69U, 95U, 95U, 61U, 49U, +54U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 66U, 73U, 71U, 71U, 69U, 83U, 84U, 95U, 65U, 76U, 73U, 71U, 78U, 77U, +69U, 78U, 84U, 95U, 95U, 61U, 49U, 54U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +95U, 95U, 83U, 84U, 68U, 67U, 95U, 85U, 84U, 70U, 95U, 49U, 54U, 95U, 95U, 61U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 77U, 65U, 88U, 95U, 49U, 48U, 95U, 69U, +88U, 80U, 95U, 95U, 61U, 51U, 48U, 56U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 100U, 101U, 108U, 101U, 103U, 97U, 116U, 105U, 110U, 103U, +95U, 99U, 111U, 110U, 115U, 116U, 114U, 117U, 99U, 116U, 111U, 114U, 115U, 61U, 50U, 48U, +48U, 54U, 48U, 52U, 76U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 72U, 65U, 83U, 95U, 73U, 78U, 70U, 73U, +78U, 73U, 84U, 89U, 95U, 95U, 61U, 49U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 63U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 63U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 100U, 111U, 117U, 98U, +108U, 101U, 40U, 49U, 46U, 55U, 57U, 55U, 54U, 57U, 51U, 49U, 51U, 52U, 56U, 54U, +50U, 51U, 49U, 53U, 55U, 48U, 56U, 49U, 52U, 53U, 50U, 55U, 52U, 50U, 51U, 55U, +51U, 49U, 55U, 48U, 52U, 51U, 53U, 55U, 101U, 43U, 51U, 48U, 56U, 76U, 41U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 114U, 97U, +119U, 95U, 115U, 116U, 114U, 105U, 110U, 103U, 115U, 61U, 50U, 48U, 48U, 55U, 49U, 48U, +76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 51U, 50U, 95U, 77U, 65U, 88U, +95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 76U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 72U, 65U, 83U, 95U, 73U, 78U, 70U, 73U, 78U, 73U, +84U, 89U, 95U, 95U, 61U, 49U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, 95U, 70U, 76U, 79U, 65U, 84U, 95U, 95U, +61U, 52U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, +95U, 95U, 72U, 65U, 86U, 69U, 95U, 83U, 80U, 69U, 67U, 85U, 76U, 65U, 84U, 73U, +79U, 78U, 95U, 83U, 65U, 70U, 69U, 95U, 86U, 65U, 76U, 85U, 69U, 61U, 49U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 102U, 111U, +108U, 100U, 95U, 101U, 120U, 112U, 114U, 101U, 115U, 115U, 105U, 111U, 110U, 115U, 61U, 50U, +48U, 49U, 54U, 48U, 51U, 76U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 51U, 50U, 95U, 77U, 73U, 78U, 95U, 69U, 88U, 80U, 95U, +95U, 61U, 40U, 45U, 57U, 52U, 41U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 80U, 84U, 82U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, +61U, 54U, 52U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 72U, 65U, 83U, 95U, 73U, 78U, 70U, +73U, 78U, 73U, 84U, 89U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, +69U, 65U, 83U, 84U, 51U, 50U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 85U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 72U, 65U, 83U, 95U, 68U, 69U, 78U, +79U, 82U, 77U, 95U, 95U, 61U, 49U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 49U, 54U, 95U, 84U, 89U, 80U, +69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, 32U, 105U, 110U, 116U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 77U, 77U, 88U, 95U, 87U, 73U, +84U, 72U, 95U, 83U, 83U, 69U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 72U, +65U, 83U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 114U, 101U, +102U, 95U, 113U, 117U, 97U, 108U, 105U, 102U, 105U, 101U, 114U, 115U, 61U, 50U, 48U, 48U, +55U, 49U, 48U, 76U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 51U, 50U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 49U, 69U, +45U, 57U, 53U, 68U, 70U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 80U, 82U, 69U, 67U, 65U, 84U, 69U, 68U, 61U, 49U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 114U, 118U, +97U, 108U, 117U, 101U, 95U, 114U, 101U, 102U, 101U, 114U, 101U, 110U, 99U, 101U, 115U, 61U, +50U, 48U, 48U, 54U, 49U, 48U, 76U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 77U, 65U, 88U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, +49U, 48U, 50U, 52U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 87U, 67U, 72U, 65U, 82U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, +51U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 58U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 58U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 51U, 46U, +52U, 48U, 50U, 56U, 50U, 51U, 52U, 54U, 54U, 51U, 56U, 53U, 50U, 56U, 56U, 53U, +57U, 56U, 49U, 49U, 55U, 48U, 52U, 49U, 56U, 51U, 52U, 56U, 52U, 53U, 49U, 54U, +57U, 50U, 53U, 101U, 43U, 51U, 56U, 70U, 51U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 49U, 50U, 56U, +95U, 69U, 80U, 83U, 73U, 76U, 79U, 78U, 95U, 95U, 61U, 49U, 69U, 45U, 51U, 51U, +68U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +95U, 95U, 83U, 83U, 69U, 50U, 95U, 77U, 65U, 84U, 72U, 95U, 95U, 61U, 49U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, +95U, 72U, 76U, 69U, 95U, 82U, 69U, 76U, 69U, 65U, 83U, 69U, 61U, 49U, 51U, 49U, +48U, 55U, 50U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +95U, 95U, 80U, 84U, 82U, 68U, 73U, 70U, 70U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, +48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 76U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +95U, 95U, 97U, 109U, 100U, 54U, 52U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, 95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, +95U, 72U, 76U, 69U, 95U, 65U, 67U, 81U, 85U, 73U, 82U, 69U, 61U, 54U, 53U, 53U, +51U, 54U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +95U, 95U, 76U, 79U, 78U, 71U, 95U, 76U, 79U, 78U, 71U, 95U, 77U, 65U, 88U, 95U, +95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 76U, 76U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, 95U, 83U, 73U, 90U, 69U, 95U, 84U, 95U, +95U, 61U, 56U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 110U, 115U, 100U, 109U, 105U, 61U, 50U, 48U, 48U, 56U, +48U, 57U, 76U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 77U, 73U, 78U, 95U, 69U, 88U, 80U, +95U, 95U, 61U, 40U, 45U, 49U, 54U, 51U, 56U, 49U, 41U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, +95U, 87U, 73U, 78U, 84U, 95U, 84U, 95U, 95U, 61U, 52U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 76U, 79U, 78U, 71U, 95U, 76U, +79U, 78U, 71U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 54U, 52U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 105U, 110U, +105U, 116U, 105U, 97U, 108U, 105U, 122U, 101U, 114U, 95U, 108U, 105U, 115U, 116U, 115U, 61U, +50U, 48U, 48U, 56U, 48U, 54U, 76U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 77U, 65U, 88U, 95U, 69U, 88U, 80U, 95U, +95U, 61U, 49U, 50U, 56U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 104U, 101U, 120U, 95U, 102U, 108U, 111U, 97U, 116U, 61U, +50U, 48U, 49U, 54U, 48U, 51U, 76U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 71U, 88U, 88U, 95U, 65U, 66U, 73U, 95U, 86U, 69U, 82U, 83U, 73U, 79U, +78U, 61U, 49U, 48U, 49U, 54U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 72U, 65U, 83U, 95U, 73U, 78U, 70U, +73U, 78U, 73U, 84U, 89U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 77U, 73U, +78U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 49U, 50U, 53U, 41U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 72U, 65U, +86U, 69U, 95U, 68U, 87U, 65U, 82U, 70U, 50U, 95U, 67U, 70U, 73U, 95U, 65U, 83U, +77U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +95U, 95U, 120U, 56U, 54U, 95U, 54U, 52U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 108U, 97U, +109U, 98U, 100U, 97U, 115U, 61U, 50U, 48U, 48U, 57U, 48U, 55U, 76U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, +83U, 84U, 54U, 52U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, +32U, 105U, 110U, 116U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 66U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 66U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 77U, +73U, 78U, 95U, 95U, 61U, 52U, 46U, 57U, 52U, 48U, 54U, 53U, 54U, 52U, 53U, 56U, +52U, 49U, 50U, 52U, 54U, 53U, 52U, 52U, 49U, 55U, 54U, 53U, 54U, 56U, 55U, 57U, +50U, 56U, 54U, 56U, 50U, 50U, 49U, 51U, 55U, 50U, 101U, 45U, 51U, 50U, 52U, 70U, +54U, 52U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 116U, 101U, 109U, 112U, 108U, 97U, 116U, 101U, 95U, 97U, +117U, 116U, 111U, 61U, 50U, 48U, 49U, 54U, 48U, 54U, 76U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 63U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 63U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 77U, 73U, +78U, 95U, 95U, 61U, 100U, 111U, 117U, 98U, 108U, 101U, 40U, 50U, 46U, 50U, 50U, 53U, +48U, 55U, 51U, 56U, 53U, 56U, 53U, 48U, 55U, 50U, 48U, 49U, 51U, 56U, 51U, 48U, +57U, 48U, 50U, 51U, 50U, 55U, 49U, 55U, 51U, 51U, 50U, 52U, 48U, 52U, 48U, 54U, +101U, 45U, 51U, 48U, 56U, 76U, 41U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 69U, 80U, 83U, 73U, 76U, 79U, 78U, +95U, 95U, 61U, 49U, 46U, 57U, 50U, 53U, 57U, 50U, 57U, 57U, 52U, 52U, 51U, 56U, +55U, 50U, 51U, 53U, 56U, 53U, 51U, 48U, 53U, 53U, 57U, 55U, 55U, 57U, 52U, 50U, +53U, 56U, 52U, 57U, 50U, 55U, 51U, 50U, 101U, 45U, 51U, 52U, 70U, 49U, 50U, 56U, +14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 67U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 67U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 78U, 79U, 82U, 77U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 49U, 46U, 49U, 56U, +57U, 55U, 51U, 49U, 52U, 57U, 53U, 51U, 53U, 55U, 50U, 51U, 49U, 55U, 54U, 53U, +48U, 50U, 49U, 50U, 54U, 51U, 56U, 53U, 51U, 48U, 51U, 48U, 57U, 55U, 48U, 50U, +49U, 101U, 43U, 52U, 57U, 51U, 50U, 70U, 54U, 52U, 120U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, +95U, 80U, 79U, 73U, 78U, 84U, 69U, 82U, 95U, 95U, 61U, 56U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 95U, 95U, 76U, 80U, 54U, 52U, 95U, 95U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 72U, 65U, 83U, 95U, 81U, 85U, 73U, 69U, 84U, 95U, +78U, 65U, 78U, 95U, 95U, 61U, 49U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 69U, 80U, 83U, 73U, 76U, 79U, 78U, +95U, 95U, 61U, 50U, 46U, 50U, 50U, 48U, 52U, 52U, 54U, 48U, 52U, 57U, 50U, 53U, +48U, 51U, 49U, 51U, 48U, 56U, 48U, 56U, 52U, 55U, 50U, 54U, 51U, 51U, 51U, 54U, +49U, 56U, 49U, 54U, 52U, 48U, 54U, 50U, 101U, 45U, 49U, 54U, 70U, 51U, 50U, 120U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 73U, 77U, 65U, +76U, 95U, 66U, 73U, 68U, 95U, 70U, 79U, 82U, 77U, 65U, 84U, 95U, 95U, 61U, 49U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +77U, 73U, 78U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 51U, +48U, 55U, 41U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 68U, 69U, 67U, 73U, 77U, 65U, 76U, +95U, 68U, 73U, 71U, 95U, 95U, 61U, 50U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 49U, 50U, 56U, +95U, 77U, 73U, 78U, 95U, 95U, 61U, 49U, 69U, 45U, 54U, 49U, 52U, 51U, 68U, 76U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 95U, 95U, 82U, 69U, 71U, 73U, 83U, 84U, +69U, 82U, 95U, 80U, 82U, 69U, 70U, 73U, 88U, 95U, 95U, 61U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 49U, 54U, +95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 102U, 102U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 72U, +65U, 83U, 95U, 73U, 78U, 70U, 73U, 78U, 73U, 84U, 89U, 95U, 95U, 61U, 49U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 58U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 58U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +77U, 73U, 78U, 95U, 95U, 61U, 49U, 46U, 49U, 55U, 53U, 52U, 57U, 52U, 51U, 53U, +48U, 56U, 50U, 50U, 50U, 56U, 55U, 53U, 48U, 55U, 57U, 54U, 56U, 55U, 51U, 54U, +53U, 51U, 55U, 50U, 50U, 50U, 50U, 52U, 53U, 54U, 56U, 101U, 45U, 51U, 56U, 70U, +51U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 56U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 117U, +110U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 99U, 104U, 97U, 114U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 68U, 73U, +71U, 95U, 95U, 61U, 54U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 95U, 69U, 86U, 65U, 76U, 95U, 77U, 69U, 84U, 72U, 79U, +68U, 95U, 95U, 61U, 50U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 57U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 49U, 50U, 56U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 57U, +46U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, +57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, +57U, 57U, 69U, 54U, 49U, 52U, 52U, 68U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 77U, 65U, +78U, 84U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 50U, 52U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 68U, +69U, 67U, 73U, 77U, 65U, 76U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 50U, 49U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 54U, 52U, +95U, 67U, 40U, 99U, 41U, 61U, 99U, 32U, 35U, 35U, 32U, 85U, 76U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 117U, 110U, +105U, 99U, 111U, 100U, 101U, 95U, 99U, 104U, 97U, 114U, 97U, 99U, 116U, 101U, 114U, 115U, +61U, 50U, 48U, 49U, 52U, 49U, 49U, 76U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, +95U, 83U, 84U, 68U, 67U, 95U, 80U, 82U, 69U, 68U, 69U, 70U, 95U, 72U, 61U, 49U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, +65U, 83U, 84U, 51U, 50U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 73U, 78U, 84U, +95U, 76U, 79U, 67U, 75U, 95U, 70U, 82U, 69U, 69U, 61U, 50U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 77U, 65U, 88U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 49U, 54U, 51U, 56U, 52U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +77U, 65U, 78U, 84U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 50U, 52U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 44U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 44U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 79U, 65U, 84U, 95U, +87U, 79U, 82U, 68U, 95U, 79U, 82U, 68U, 69U, 82U, 95U, 95U, 61U, 95U, 95U, 79U, +82U, 68U, 69U, 82U, 95U, 76U, 73U, 84U, 84U, 76U, 69U, 95U, 69U, 78U, 68U, 73U, +65U, 78U, 95U, 95U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +95U, 95U, 83U, 84U, 68U, 67U, 95U, 73U, 69U, 67U, 95U, 54U, 48U, 53U, 53U, 57U, +95U, 67U, 79U, 77U, 80U, 76U, 69U, 88U, 95U, 95U, 61U, 50U, 48U, 49U, 52U, 48U, +52U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 97U, 103U, 103U, 114U, 101U, 103U, 97U, 116U, 101U, 95U, +98U, 97U, 115U, 101U, 115U, 61U, 50U, 48U, 49U, 54U, 48U, 51U, 76U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 72U, 65U, 83U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 95U, 61U, 49U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +68U, 69U, 67U, 73U, 77U, 65U, 76U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 57U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 68U, 73U, 71U, 95U, 95U, 61U, 51U, 51U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 51U, 50U, 95U, +67U, 40U, 99U, 41U, 61U, 99U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 54U, 52U, 95U, 69U, 80U, 83U, 73U, 76U, 79U, 78U, 95U, +95U, 61U, 49U, 69U, 45U, 49U, 53U, 68U, 68U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 79U, 82U, 68U, 69U, 82U, 95U, +80U, 68U, 80U, 95U, 69U, 78U, 68U, 73U, 65U, 78U, 95U, 95U, 61U, 51U, 52U, 49U, +50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 49U, 50U, 56U, 95U, 77U, 73U, 78U, 95U, 69U, 88U, 80U, +95U, 95U, 61U, 40U, 45U, 54U, 49U, 52U, 50U, 41U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, +83U, 84U, 51U, 50U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, +32U, 105U, 110U, 116U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 49U, 54U, 95U, 84U, +89U, 80U, 69U, 95U, 95U, 61U, 115U, 104U, 111U, 114U, 116U, 32U, 117U, 110U, 115U, 105U, +103U, 110U, 101U, 100U, 32U, 105U, 110U, 116U, 14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, +117U, 110U, 105U, 120U, 61U, 49U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 72U, 65U, 83U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, +95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 114U, 116U, 116U, 105U, 61U, 49U, 57U, 57U, 55U, 49U, +49U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 54U, 52U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, +120U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 85U, 76U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 73U, 83U, 95U, 73U, 69U, 67U, 95U, 54U, 48U, 53U, +53U, 57U, 95U, 95U, 61U, 50U, 0U, 0U, 14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 45U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 45U, 0U, 0U, 0U, +95U, 95U, 71U, 78U, 85U, 67U, 95U, 87U, 73U, 68U, 69U, 95U, 69U, 88U, 69U, 67U, +85U, 84U, 73U, 79U, 78U, 95U, 67U, 72U, 65U, 82U, 83U, 69U, 84U, 95U, 78U, 65U, +77U, 69U, 61U, 34U, 85U, 84U, 70U, 45U, 51U, 50U, 76U, 69U, 34U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 68U, 73U, 71U, 95U, 95U, 61U, 49U, 56U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 56U, 95U, 84U, +89U, 80U, 69U, 95U, 95U, 61U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 99U, 104U, 97U, +114U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 100U, 105U, 103U, 105U, 116U, 95U, 115U, 101U, 112U, 97U, +114U, 97U, 116U, 111U, 114U, 115U, 61U, 50U, 48U, 49U, 51U, 48U, 57U, 76U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 95U, 95U, 69U, 76U, 70U, 95U, 95U, 61U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 65U, 83U, 77U, 95U, 70U, 76U, 65U, 71U, 95U, 79U, +85U, 84U, 80U, 85U, 84U, 83U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 51U, 50U, +95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 117U, 110U, 115U, 105U, 103U, 110U, 101U, 100U, +32U, 105U, 110U, 116U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 82U, 65U, 68U, 73U, 88U, 95U, 95U, 61U, 50U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, +65U, 83U, 84U, 49U, 54U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 115U, 104U, 111U, +114U, 116U, 32U, 105U, 110U, 116U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 69U, 80U, 83U, 73U, 76U, 79U, 78U, 95U, 95U, +61U, 49U, 46U, 48U, 56U, 52U, 50U, 48U, 50U, 49U, 55U, 50U, 52U, 56U, 53U, 53U, +48U, 52U, 52U, 51U, 52U, 48U, 48U, 55U, 52U, 53U, 50U, 56U, 48U, 48U, 56U, 54U, +57U, 57U, 52U, 49U, 55U, 49U, 101U, 45U, 49U, 57U, 76U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 77U, 65U, +88U, 95U, 67U, 40U, 99U, 41U, 61U, 99U, 32U, 35U, 35U, 32U, 85U, 76U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 95U, 95U, 71U, 76U, 73U, 66U, 67U, 88U, +88U, 95U, 66U, 73U, 84U, 83U, 73U, 90U, 69U, 95U, 73U, 78U, 84U, 95U, 78U, 95U, +48U, 61U, 49U, 50U, 56U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, +95U, 95U, 107U, 56U, 61U, 49U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 50U, +46U, 50U, 50U, 53U, 48U, 55U, 51U, 56U, 53U, 56U, 53U, 48U, 55U, 50U, 48U, 49U, +51U, 56U, 51U, 48U, 57U, 48U, 50U, 51U, 50U, 55U, 49U, 55U, 51U, 51U, 50U, 52U, +48U, 52U, 48U, 54U, 101U, 45U, 51U, 48U, 56U, 70U, 51U, 50U, 120U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 71U, 95U, 65U, 84U, +79U, 77U, 73U, 67U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 87U, 67U, 72U, +65U, 82U, 95U, 84U, 95U, 76U, 79U, 67U, 75U, 95U, 70U, 82U, 69U, 69U, 61U, 50U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 95U, 95U, 83U, 84U, 68U, 67U, 95U, 73U, +69U, 67U, 95U, 54U, 48U, 53U, 53U, 57U, 95U, 66U, 70U, 80U, 95U, 95U, 61U, 50U, +48U, 49U, 52U, 48U, 52U, 76U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, 95U, 80U, 84U, 82U, 68U, 73U, 70U, 70U, +95U, 84U, 95U, 95U, 61U, 56U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 15U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 49U, 56U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +73U, 83U, 95U, 73U, 69U, 67U, 95U, 54U, 48U, 53U, 53U, 57U, 95U, 95U, 61U, 50U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, 95U, 95U, 120U, 56U, 54U, 95U, 54U, 52U, +95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 77U, 73U, 78U, 95U, 69U, 88U, 80U, +95U, 95U, 61U, 40U, 45U, 49U, 48U, 50U, 49U, 41U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 51U, 50U, 95U, +83U, 85U, 66U, 78U, 79U, 82U, 77U, 65U, 76U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, +48U, 46U, 48U, 48U, 48U, 48U, 48U, 49U, 69U, 45U, 57U, 53U, 68U, 70U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, +83U, 84U, 49U, 54U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 76U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +68U, 73U, 71U, 95U, 95U, 61U, 49U, 53U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 51U, 50U, 95U, 77U, 65U, +88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 85U, 76U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 39U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 39U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 54U, 52U, 95U, 84U, +89U, 80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, 32U, 117U, 110U, 115U, 105U, 103U, +110U, 101U, 100U, 32U, 105U, 110U, 116U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 72U, 65U, 83U, 95U, 81U, 85U, 73U, 69U, 84U, 95U, +78U, 65U, 78U, 95U, 95U, 61U, 49U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 77U, 65U, 88U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, +95U, 95U, 61U, 51U, 56U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +95U, 95U, 76U, 79U, 78U, 71U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 76U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 72U, 65U, 83U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 95U, 61U, 49U, 0U, +14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 68U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 68U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 49U, 50U, 56U, +95U, 83U, 85U, 66U, 78U, 79U, 82U, 77U, 65U, 76U, 95U, 77U, 73U, 78U, 95U, 95U, +61U, 48U, 46U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, +48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, +48U, 48U, 48U, 49U, 69U, 45U, 54U, 49U, 52U, 51U, 68U, 76U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 72U, 65U, +83U, 95U, 73U, 78U, 70U, 73U, 78U, 73U, 84U, 89U, 95U, 95U, 61U, 49U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, 95U, 95U, 71U, 78U, 85U, 67U, 95U, 69U, +88U, 69U, 67U, 85U, 84U, 73U, 79U, 78U, 95U, 67U, 72U, 65U, 82U, 83U, 69U, 84U, +95U, 78U, 65U, 77U, 69U, 61U, 34U, 85U, 84U, 70U, 45U, 56U, 34U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 117U, 110U, +105U, 99U, 111U, 100U, 101U, 95U, 108U, 105U, 116U, 101U, 114U, 97U, 108U, 115U, 61U, 50U, +48U, 48U, 55U, 49U, 48U, 76U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 49U, 54U, 95U, 84U, 89U, +80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, 32U, 117U, 110U, 115U, 105U, 103U, 110U, +101U, 100U, 32U, 105U, 110U, 116U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 54U, 52U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 57U, 46U, +57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 57U, 69U, +51U, 56U, 52U, 68U, 68U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 51U, 50U, 95U, 87U, 73U, 68U, +84U, 72U, 95U, 95U, 61U, 54U, 52U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +95U, 95U, 80U, 82U, 65U, 71U, 77U, 65U, 95U, 82U, 69U, 68U, 69U, 70U, 73U, 78U, +69U, 95U, 69U, 88U, 84U, 78U, 65U, 77U, 69U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 95U, 87U, +73U, 68U, 84U, 72U, 95U, 95U, 61U, 54U, 52U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 95U, 95U, 83U, 69U, 71U, 95U, 70U, 83U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 49U, 54U, 95U, 77U, 65U, +88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 54U, 52U, 95U, +77U, 65U, 78U, 84U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 49U, 54U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 54U, 52U, 95U, +77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 95U, 95U, 83U, 69U, 71U, 95U, 71U, 83U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 65U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 65U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 77U, +73U, 78U, 95U, 95U, 61U, 49U, 46U, 52U, 48U, 49U, 50U, 57U, 56U, 52U, 54U, 52U, +51U, 50U, 52U, 56U, 49U, 55U, 48U, 55U, 48U, 57U, 50U, 51U, 55U, 50U, 57U, 53U, +56U, 51U, 50U, 56U, 57U, 57U, 49U, 54U, 49U, 51U, 101U, 45U, 52U, 53U, 70U, 51U, +50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 71U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 87U, 73U, 68U, +84U, 72U, 95U, 95U, 61U, 51U, 50U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 54U, 52U, 95U, 84U, 89U, +80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, 32U, 105U, 110U, 116U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 49U, 54U, 95U, +84U, 89U, 80U, 69U, 95U, 95U, 61U, 115U, 104U, 111U, 114U, 116U, 32U, 105U, 110U, 116U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, +65U, 83U, 84U, 56U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 115U, 105U, 103U, 110U, +101U, 100U, 32U, 99U, 104U, 97U, 114U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 115U, 116U, 114U, 117U, 99U, 116U, 117U, 114U, 101U, 100U, +95U, 98U, 105U, 110U, 100U, 105U, 110U, 103U, 115U, 61U, 50U, 48U, 49U, 54U, 48U, 54U, +76U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, 95U, 73U, 78U, 84U, 95U, 95U, 61U, 52U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 51U, 50U, 95U, +77U, 65U, 88U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 57U, 55U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, +83U, 84U, 56U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 77U, 65U, 88U, 95U, 95U, 61U, 49U, 46U, 49U, 56U, 57U, 55U, 51U, 49U, 52U, +57U, 53U, 51U, 53U, 55U, 50U, 51U, 49U, 55U, 54U, 53U, 48U, 56U, 53U, 55U, 53U, +57U, 51U, 50U, 54U, 54U, 50U, 56U, 48U, 48U, 55U, 48U, 50U, 101U, 43U, 52U, 57U, +51U, 50U, 70U, 49U, 50U, 56U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 80U, 84U, 82U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, +120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 115U, 105U, 122U, 101U, 100U, 95U, 100U, 101U, 97U, 108U, +108U, 111U, 99U, 97U, 116U, 105U, 111U, 110U, 61U, 50U, 48U, 49U, 51U, 48U, 57U, 76U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 103U, 117U, +97U, 114U, 97U, 110U, 116U, 101U, 101U, 100U, 95U, 99U, 111U, 112U, 121U, 95U, 101U, 108U, +105U, 115U, 105U, 111U, 110U, 61U, 50U, 48U, 49U, 54U, 48U, 54U, 76U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 7U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 7U, 0U, 0U, 0U, 108U, 105U, 110U, 117U, 120U, 61U, 49U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +72U, 65U, 83U, 95U, 81U, 85U, 73U, 69U, 84U, 95U, 78U, 65U, 78U, 95U, 95U, 61U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 77U, 73U, 78U, 95U, 49U, 48U, 95U, 69U, +88U, 80U, 95U, 95U, 61U, 40U, 45U, 51U, 55U, 41U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 95U, 95U, 80U, 84U, 82U, 68U, 73U, 70U, +70U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 54U, 52U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 77U, +65U, 78U, 84U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 54U, 52U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 114U, 97U, +110U, 103U, 101U, 95U, 98U, 97U, 115U, 101U, 100U, 95U, 102U, 111U, 114U, 61U, 50U, 48U, +49U, 54U, 48U, 51U, 76U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, 72U, 65U, 83U, 95U, 73U, 78U, 70U, 73U, +78U, 73U, 84U, 89U, 95U, 95U, 61U, 49U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 49U, +46U, 49U, 56U, 57U, 55U, 51U, 49U, 52U, 57U, 53U, 51U, 53U, 55U, 50U, 51U, 49U, +55U, 54U, 53U, 48U, 50U, 49U, 50U, 54U, 51U, 56U, 53U, 51U, 48U, 51U, 48U, 57U, +55U, 48U, 50U, 49U, 101U, 43U, 52U, 57U, 51U, 50U, 70U, 54U, 52U, 120U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 95U, 95U, 83U, 84U, 68U, 67U, 80U, 80U, +95U, 68U, 69U, 70U, 65U, 85U, 76U, 84U, 95U, 78U, 69U, 87U, 95U, 65U, 76U, 73U, +71U, 78U, 77U, 69U, 78U, 84U, 95U, 95U, 61U, 49U, 54U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 44U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 44U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 71U, 95U, 65U, 84U, +79U, 77U, 73U, 67U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 40U, 45U, 95U, 95U, 83U, +73U, 71U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 77U, 65U, 88U, 95U, 95U, 32U, +45U, 32U, 49U, 41U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 99U, 111U, 100U, 101U, 95U, 109U, 111U, 100U, 101U, 108U, 95U, 115U, 109U, 97U, +108U, 108U, 95U, 95U, 61U, 49U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 76U, 79U, 78U, +71U, 95U, 76U, 79U, 67U, 75U, 95U, 70U, 82U, 69U, 69U, 61U, 50U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 110U, 111U, +110U, 116U, 121U, 112U, 101U, 95U, 116U, 101U, 109U, 112U, 108U, 97U, 116U, 101U, 95U, 97U, +114U, 103U, 115U, 61U, 50U, 48U, 49U, 52U, 49U, 49U, 76U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 51U, 50U, 95U, +77U, 65U, 78U, 84U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 55U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 114U, 101U, +116U, 117U, 114U, 110U, 95U, 116U, 121U, 112U, 101U, 95U, 100U, 101U, 100U, 117U, 99U, 116U, +105U, 111U, 110U, 61U, 50U, 48U, 49U, 51U, 48U, 52U, 76U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 95U, 95U, 107U, 56U, 95U, 95U, 61U, 49U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 80U, 84U, 82U, +95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, 32U, 105U, 110U, 116U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 49U, 54U, +95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 115U, 104U, 111U, 114U, 116U, 32U, 117U, 110U, +115U, 105U, 103U, 110U, 101U, 100U, 32U, 105U, 110U, 116U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 87U, 67U, 72U, 65U, 82U, 95U, +84U, 89U, 80U, 69U, 95U, 95U, 61U, 105U, 110U, 116U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 95U, 95U, 112U, 105U, 99U, 95U, 95U, 61U, +50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 80U, 84U, 82U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, +48U, 120U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 85U, 76U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 54U, 52U, 95U, 87U, 73U, 68U, +84U, 72U, 95U, 95U, 61U, 54U, 52U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 100U, 101U, 99U, 108U, 116U, 121U, 112U, 101U, 61U, 50U, +48U, 48U, 55U, 48U, 55U, 76U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 54U, 52U, 95U, 77U, 65U, 88U, +95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 76U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 84U, 69U, 83U, +84U, 95U, 65U, 78U, 68U, 95U, 83U, 69U, 84U, 95U, 84U, 82U, 85U, 69U, 86U, 65U, +76U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 78U, 79U, 82U, 77U, 95U, 77U, 65U, 88U, 95U, 95U, +61U, 51U, 46U, 52U, 48U, 50U, 56U, 50U, 51U, 52U, 54U, 54U, 51U, 56U, 53U, 50U, +56U, 56U, 53U, 57U, 56U, 49U, 49U, 55U, 48U, 52U, 49U, 56U, 51U, 52U, 56U, 52U, +53U, 49U, 54U, 57U, 50U, 53U, 101U, 43U, 51U, 56U, 70U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, +95U, 77U, 65U, 88U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 49U, 54U, 51U, 56U, 52U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, +65U, 83U, 84U, 54U, 52U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, +103U, 32U, 117U, 110U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 105U, 110U, 116U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 105U, 110U, +108U, 105U, 110U, 101U, 95U, 118U, 97U, 114U, 105U, 97U, 98U, 108U, 101U, 115U, 61U, 50U, +48U, 49U, 54U, 48U, 54U, 76U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 11U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 11U, 0U, 0U, 0U, +95U, 95U, 108U, 105U, 110U, 117U, 120U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 54U, 52U, 95U, +84U, 89U, 80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, 32U, 105U, 110U, 116U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 77U, 65U, +88U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 49U, 50U, 56U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 79U, 82U, 68U, 69U, 82U, 95U, +66U, 73U, 71U, 95U, 69U, 78U, 68U, 73U, 65U, 78U, 95U, 95U, 61U, 52U, 51U, 50U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 77U, 65U, 78U, 84U, 95U, 68U, 73U, 71U, 95U, 95U, +61U, 53U, 51U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 37U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 105U, 110U, 104U, 101U, 114U, 105U, 116U, 105U, 110U, 103U, +95U, 99U, 111U, 110U, 115U, 116U, 114U, 117U, 99U, 116U, 111U, 114U, 115U, 61U, 50U, 48U, +49U, 53U, 49U, 49U, 76U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, 95U, 70U, 76U, 79U, 65U, 84U, 49U, 50U, +56U, 95U, 95U, 61U, 49U, 54U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 39U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 39U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 54U, 52U, 95U, 77U, 65U, +88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 76U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 54U, 52U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 49U, 69U, +45U, 51U, 56U, 51U, 68U, 68U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 51U, 50U, 95U, 84U, +89U, 80U, 69U, 95U, 95U, 61U, 117U, 110U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 105U, +110U, 116U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, 95U, 83U, 72U, 79U, 82U, 84U, 95U, 95U, +61U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 63U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 63U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 78U, 79U, 82U, 77U, 95U, 77U, 65U, 88U, +95U, 95U, 61U, 51U, 46U, 52U, 48U, 50U, 56U, 50U, 51U, 52U, 54U, 54U, 51U, 56U, +53U, 50U, 56U, 56U, 53U, 57U, 56U, 49U, 49U, 55U, 48U, 52U, 49U, 56U, 51U, 52U, +56U, 52U, 53U, 49U, 54U, 57U, 50U, 53U, 101U, 43U, 51U, 56U, 70U, 51U, 50U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 95U, 95U, 83U, 83U, 69U, 95U, 95U, 61U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 77U, 73U, 78U, 95U, 69U, 88U, 80U, 95U, 95U, +61U, 40U, 45U, 49U, 54U, 51U, 56U, 49U, 41U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +77U, 65U, 88U, 95U, 95U, 61U, 49U, 46U, 55U, 57U, 55U, 54U, 57U, 51U, 49U, 51U, +52U, 56U, 54U, 50U, 51U, 49U, 53U, 55U, 48U, 56U, 49U, 52U, 53U, 50U, 55U, 52U, +50U, 51U, 55U, 51U, 49U, 55U, 48U, 52U, 51U, 53U, 55U, 101U, 43U, 51U, 48U, 56U, +70U, 54U, 52U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 11U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 11U, 0U, 0U, 0U, +95U, 95U, 97U, 109U, 100U, 54U, 52U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 95U, 95U, 87U, 73U, 78U, 84U, 95U, 87U, +73U, 68U, 84U, 72U, 95U, 95U, 61U, 51U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, +65U, 83U, 84U, 54U, 52U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 54U, 52U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 77U, +65U, 88U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 49U, 54U, 51U, 56U, 52U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 77U, 65U, 88U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 51U, 48U, +56U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, 95U, 73U, 78U, 84U, 49U, 50U, 56U, 95U, +95U, 61U, 49U, 54U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 73U, 83U, 95U, 73U, 69U, 67U, 95U, +54U, 48U, 53U, 53U, 57U, 95U, 95U, 61U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 77U, +65U, 88U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 52U, 57U, 51U, 50U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, +95U, 82U, 69U, 76U, 65U, 88U, 69U, 68U, 61U, 48U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 66U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 66U, 0U, 0U, 0U, 95U, 95U, 68U, 66U, 76U, 95U, 69U, 80U, +83U, 73U, 76U, 79U, 78U, 95U, 95U, 61U, 100U, 111U, 117U, 98U, 108U, 101U, 40U, 50U, +46U, 50U, 50U, 48U, 52U, 52U, 54U, 48U, 52U, 57U, 50U, 53U, 48U, 51U, 49U, 51U, +48U, 56U, 48U, 56U, 52U, 55U, 50U, 54U, 51U, 51U, 51U, 54U, 49U, 56U, 49U, 54U, +52U, 48U, 54U, 50U, 101U, 45U, 49U, 54U, 76U, 41U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 77U, 73U, 78U, 95U, 95U, 61U, 51U, 46U, 51U, 54U, 50U, 49U, 48U, 51U, 49U, +52U, 51U, 49U, 49U, 50U, 48U, 57U, 51U, 53U, 48U, 54U, 50U, 54U, 50U, 54U, 55U, +55U, 56U, 49U, 55U, 51U, 50U, 49U, 55U, 53U, 50U, 54U, 48U, 101U, 45U, 52U, 57U, +51U, 50U, 70U, 49U, 50U, 56U, 0U, 0U, 14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 7U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 7U, 0U, 0U, 0U, +95U, 76U, 80U, 54U, 52U, 61U, 49U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 56U, 95U, 67U, 40U, 99U, 41U, 61U, 99U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +77U, 65U, 88U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 49U, 48U, 50U, 52U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, +65U, 83U, 84U, 51U, 50U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 105U, 110U, 116U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, +95U, 87U, 67U, 72U, 65U, 82U, 95U, 84U, 95U, 95U, 61U, 52U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 67U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 67U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 78U, 79U, 82U, 77U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 49U, 46U, 49U, 56U, +57U, 55U, 51U, 49U, 52U, 57U, 53U, 51U, 53U, 55U, 50U, 51U, 49U, 55U, 54U, 53U, +48U, 56U, 53U, 55U, 53U, 57U, 51U, 50U, 54U, 54U, 50U, 56U, 48U, 48U, 55U, 48U, +50U, 101U, 43U, 52U, 57U, 51U, 50U, 70U, 49U, 50U, 56U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +78U, 79U, 82U, 77U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 49U, 46U, 55U, 57U, 55U, +54U, 57U, 51U, 49U, 51U, 52U, 56U, 54U, 50U, 51U, 49U, 53U, 55U, 48U, 56U, 49U, +52U, 53U, 50U, 55U, 52U, 50U, 51U, 55U, 51U, 49U, 55U, 48U, 52U, 51U, 53U, 55U, +101U, 43U, 51U, 48U, 56U, 70U, 54U, 52U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 72U, 65U, 83U, 95U, 81U, 85U, 73U, +69U, 84U, 95U, 78U, 65U, 78U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 77U, 65U, 88U, +95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, +83U, 84U, 56U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 115U, 105U, 103U, 110U, 101U, +100U, 32U, 99U, 104U, 97U, 114U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 110U, 97U, 109U, 101U, 115U, 112U, 97U, 99U, 101U, 95U, +97U, 116U, 116U, 114U, 105U, 98U, 117U, 116U, 101U, 115U, 61U, 50U, 48U, 49U, 52U, 49U, +49U, 76U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 54U, 52U, 88U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 51U, +46U, 51U, 54U, 50U, 49U, 48U, 51U, 49U, 52U, 51U, 49U, 49U, 50U, 48U, 57U, 51U, +53U, 48U, 54U, 50U, 54U, 50U, 54U, 55U, 55U, 56U, 49U, 55U, 51U, 50U, 49U, 55U, +53U, 50U, 54U, 48U, 101U, 45U, 52U, 57U, 51U, 50U, 70U, 54U, 52U, 120U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 95U, 95U, 83U, 84U, 68U, 67U, 80U, 80U, +95U, 84U, 72U, 82U, 69U, 65U, 68U, 83U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +72U, 65U, 83U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 95U, 61U, 49U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, +69U, 80U, 83U, 73U, 76U, 79U, 78U, 95U, 95U, 61U, 49U, 46U, 49U, 57U, 50U, 48U, +57U, 50U, 56U, 57U, 53U, 53U, 48U, 55U, 56U, 49U, 50U, 53U, 48U, 48U, 48U, 48U, +48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 101U, +45U, 55U, 70U, 51U, 50U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 68U, 69U, 67U, 73U, 77U, 65U, 76U, 95U, 68U, 73U, +71U, 95U, 95U, 61U, 49U, 55U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +95U, 95U, 83U, 84U, 68U, 67U, 95U, 85U, 84U, 70U, 95U, 51U, 50U, 95U, 95U, 61U, +49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 56U, 95U, 87U, 73U, 68U, 84U, +72U, 95U, 95U, 61U, 56U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +95U, 95U, 70U, 88U, 83U, 82U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 77U, 65U, 88U, 95U, 95U, 61U, 49U, 46U, 55U, 57U, 55U, 54U, 57U, 51U, 49U, +51U, 52U, 56U, 54U, 50U, 51U, 49U, 53U, 55U, 48U, 56U, 49U, 52U, 53U, 50U, 55U, +52U, 50U, 51U, 55U, 51U, 49U, 55U, 48U, 52U, 51U, 53U, 55U, 101U, 43U, 51U, 48U, +56U, 70U, 51U, 50U, 120U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 68U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 68U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 78U, 79U, 82U, 77U, 95U, 77U, 65U, 88U, 95U, 95U, +61U, 100U, 111U, 117U, 98U, 108U, 101U, 40U, 49U, 46U, 55U, 57U, 55U, 54U, 57U, 51U, +49U, 51U, 52U, 56U, 54U, 50U, 51U, 49U, 53U, 55U, 48U, 56U, 49U, 52U, 53U, 50U, +55U, 52U, 50U, 51U, 55U, 51U, 49U, 55U, 48U, 52U, 51U, 53U, 55U, 101U, 43U, 51U, +48U, 56U, 76U, 41U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, +95U, 95U, 66U, 89U, 84U, 69U, 95U, 79U, 82U, 68U, 69U, 82U, 95U, 95U, 61U, 95U, +95U, 79U, 82U, 68U, 69U, 82U, 95U, 76U, 73U, 84U, 84U, 76U, 69U, 95U, 69U, 78U, +68U, 73U, 65U, 78U, 95U, 95U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 77U, 65U, 88U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, +61U, 54U, 52U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 114U, 117U, 110U, 116U, 105U, 109U, 101U, 95U, 97U, 114U, +114U, 97U, 121U, 115U, 61U, 49U, 57U, 56U, 55U, 49U, 50U, 76U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 54U, 52U, +95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, 103U, 32U, 117U, 110U, 115U, +105U, 103U, 110U, 101U, 100U, 32U, 105U, 110U, 116U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 20U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 51U, 50U, +95U, 67U, 40U, 99U, 41U, 61U, 99U, 32U, 35U, 35U, 32U, 85U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 97U, 108U, +105U, 97U, 115U, 95U, 116U, 101U, 109U, 112U, 108U, 97U, 116U, 101U, 115U, 61U, 50U, 48U, +48U, 55U, 48U, 52U, 76U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 61U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 77U, 73U, 78U, +95U, 95U, 61U, 49U, 46U, 52U, 48U, 49U, 50U, 57U, 56U, 52U, 54U, 52U, 51U, 50U, +52U, 56U, 49U, 55U, 48U, 55U, 48U, 57U, 50U, 51U, 55U, 50U, 57U, 53U, 56U, 51U, +50U, 56U, 57U, 57U, 49U, 54U, 49U, 51U, 101U, 45U, 52U, 53U, 70U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, +95U, 73U, 83U, 95U, 73U, 69U, 67U, 95U, 54U, 48U, 53U, 53U, 57U, 95U, 95U, 61U, +50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 56U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 55U, +102U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, +95U, 95U, 76U, 79U, 78U, 71U, 95U, 87U, 73U, 68U, 84U, 72U, 95U, 95U, 61U, 54U, +52U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, +95U, 95U, 80U, 73U, 67U, 95U, 95U, 61U, 50U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 38U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, +65U, 83U, 84U, 51U, 50U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 108U, 111U, 110U, +103U, 32U, 117U, 110U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 105U, 110U, 116U, 0U, 0U, +14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 66U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 66U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 78U, 79U, 82U, 77U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 49U, 46U, 55U, 57U, +55U, 54U, 57U, 51U, 49U, 51U, 52U, 56U, 54U, 50U, 51U, 49U, 53U, 55U, 48U, 56U, +49U, 52U, 53U, 50U, 55U, 52U, 50U, 51U, 55U, 51U, 49U, 55U, 48U, 52U, 51U, 53U, +55U, 101U, 43U, 51U, 48U, 56U, 70U, 51U, 50U, 120U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 104U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 54U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 54U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 77U, 65U, +88U, 95U, 95U, 61U, 51U, 46U, 52U, 48U, 50U, 56U, 50U, 51U, 52U, 54U, 54U, 51U, +56U, 53U, 50U, 56U, 56U, 53U, 57U, 56U, 49U, 49U, 55U, 48U, 52U, 49U, 56U, 51U, +52U, 56U, 52U, 53U, 49U, 54U, 57U, 50U, 53U, 101U, 43U, 51U, 56U, 70U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 99U, 111U, +110U, 115U, 116U, 101U, 120U, 112U, 114U, 61U, 50U, 48U, 49U, 54U, 48U, 51U, 76U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, 95U, 95U, 83U, 83U, 69U, 50U, 95U, 95U, +61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 100U, 101U, 100U, 117U, 99U, 116U, 105U, 111U, 110U, 95U, +103U, 117U, 105U, 100U, 101U, 115U, 61U, 50U, 48U, 49U, 55U, 48U, 51U, 76U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 51U, 50U, 95U, +84U, 89U, 80U, 69U, 95U, 95U, 61U, 105U, 110U, 116U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 19U, 0U, 0U, 0U, 95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, +95U, 68U, 79U, 85U, 66U, 76U, 69U, 95U, 95U, 61U, 56U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 99U, 112U, 112U, 95U, 101U, 120U, +99U, 101U, 112U, 116U, 105U, 111U, 110U, 115U, 61U, 49U, 57U, 57U, 55U, 49U, 49U, 76U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 77U, 73U, +78U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 51U, 55U, 41U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 59U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 54U, 52U, 95U, +77U, 73U, 78U, 95U, 95U, 61U, 50U, 46U, 50U, 50U, 53U, 48U, 55U, 51U, 56U, 53U, +56U, 53U, 48U, 55U, 50U, 48U, 49U, 51U, 56U, 51U, 48U, 57U, 48U, 50U, 51U, 50U, +55U, 49U, 55U, 51U, 51U, 50U, 52U, 48U, 52U, 48U, 54U, 101U, 45U, 51U, 48U, 56U, +70U, 54U, 52U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 76U, 69U, 65U, 83U, 84U, 51U, 50U, 95U, 87U, 73U, +68U, 84U, 72U, 95U, 95U, 61U, 51U, 50U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 77U, 65U, 88U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, +108U, 111U, 110U, 103U, 32U, 105U, 110U, 116U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 49U, 50U, 56U, 95U, 77U, 65U, 88U, 95U, 69U, 88U, 80U, +95U, 95U, 61U, 54U, 49U, 52U, 53U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 26U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 72U, 65U, 83U, 95U, 81U, 85U, 73U, +69U, 84U, 95U, 78U, 65U, 78U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, +95U, 67U, 79U, 78U, 83U, 85U, 77U, 69U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 31U, 0U, 0U, 0U, 95U, 95U, 71U, 76U, 73U, 66U, 67U, 88U, +88U, 95U, 84U, 89U, 80U, 69U, 95U, 73U, 78U, 84U, 95U, 78U, 95U, 48U, 61U, 95U, +95U, 105U, 110U, 116U, 49U, 50U, 56U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 23U, 0U, 0U, 0U, +95U, 95U, 73U, 78U, 84U, 95U, 70U, 65U, 83U, 84U, 49U, 54U, 95U, 87U, 73U, 68U, +84U, 72U, 95U, 95U, 61U, 54U, 52U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 77U, 65U, 88U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, +48U, 120U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, +102U, 102U, 85U, 76U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 68U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 68U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, +77U, 73U, 78U, 95U, 95U, 61U, 52U, 46U, 57U, 52U, 48U, 54U, 53U, 54U, 52U, 53U, +56U, 52U, 49U, 50U, 52U, 54U, 53U, 52U, 52U, 49U, 55U, 54U, 53U, 54U, 56U, 55U, +57U, 50U, 56U, 54U, 56U, 50U, 50U, 49U, 51U, 55U, 50U, 101U, 45U, 51U, 50U, 52U, +70U, 51U, 50U, 120U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 36U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 116U, 101U, 109U, 112U, 108U, 97U, 116U, 101U, 95U, 116U, +101U, 109U, 112U, 108U, 97U, 116U, 101U, 95U, 97U, 114U, 103U, 115U, 61U, 50U, 48U, 49U, +54U, 49U, 49U, 76U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 68U, 66U, 76U, 95U, 77U, 65U, 88U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, +95U, 95U, 61U, 51U, 48U, 56U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +95U, 95U, 76U, 68U, 66U, 76U, 95U, 68U, 69U, 78U, 79U, 82U, 77U, 95U, 77U, 73U, +78U, 95U, 95U, 61U, 51U, 46U, 54U, 52U, 53U, 49U, 57U, 57U, 53U, 51U, 49U, 56U, +56U, 50U, 52U, 55U, 52U, 54U, 48U, 50U, 53U, 50U, 56U, 52U, 48U, 53U, 57U, 51U, +51U, 54U, 49U, 57U, 52U, 49U, 57U, 56U, 50U, 101U, 45U, 52U, 57U, 53U, 49U, 76U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 95U, 95U, 73U, 78U, 84U, 49U, 54U, 95U, +67U, 40U, 99U, 41U, 61U, 99U, 0U, 0U, 14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 10U, 0U, 0U, 0U, +95U, 95U, 83U, 84U, 68U, 67U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 68U, 73U, 71U, 95U, 95U, 61U, 49U, 53U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, +95U, 83U, 69U, 81U, 95U, 67U, 83U, 84U, 61U, 53U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 51U, 50U, 88U, +95U, 77U, 73U, 78U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, +51U, 48U, 55U, 41U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 34U, 0U, 0U, 0U, +95U, 95U, 85U, 73U, 78U, 84U, 80U, 84U, 82U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, +61U, 108U, 111U, 110U, 103U, 32U, 117U, 110U, 115U, 105U, 103U, 110U, 101U, 100U, 32U, 105U, +110U, 116U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 96U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, +95U, 95U, 68U, 69U, 67U, 54U, 52U, 95U, 83U, 85U, 66U, 78U, 79U, 82U, 77U, 65U, +76U, 95U, 77U, 73U, 78U, 95U, 95U, 61U, 48U, 46U, 48U, 48U, 48U, 48U, 48U, 48U, +48U, 48U, 48U, 48U, 48U, 48U, 48U, 48U, 49U, 69U, 45U, 51U, 56U, 51U, 68U, 68U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, 95U, 95U, 68U, 69U, 67U, 49U, 50U, 56U, +95U, 77U, 65U, 78U, 84U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 51U, 52U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 77U, +73U, 78U, 95U, 49U, 48U, 95U, 69U, 88U, 80U, 95U, 95U, 61U, 40U, 45U, 52U, 57U, +51U, 49U, 41U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 29U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 103U, 101U, 110U, 101U, 114U, 105U, 99U, 95U, 108U, 97U, +109U, 98U, 100U, 97U, 115U, 61U, 50U, 48U, 49U, 51U, 48U, 52U, 76U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 95U, 95U, 83U, 83U, 69U, 95U, 77U, 65U, +84U, 72U, 95U, 95U, 61U, 49U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 22U, 0U, 0U, 0U, +95U, 95U, 83U, 73U, 90U, 69U, 79U, 70U, 95U, 76U, 79U, 78U, 71U, 95U, 76U, 79U, +78U, 71U, 95U, 95U, 61U, 56U, 0U, 0U, 14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 35U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 117U, 115U, 101U, 114U, 95U, 100U, 101U, 102U, 105U, 110U, +101U, 100U, 95U, 108U, 105U, 116U, 101U, 114U, 97U, 108U, 115U, 61U, 50U, 48U, 48U, 56U, +48U, 57U, 76U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 49U, 50U, 56U, 95U, 68U, 69U, 67U, 73U, 77U, 65U, 76U, +95U, 68U, 73U, 71U, 95U, 95U, 61U, 51U, 54U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, 95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, +79U, 77U, 73U, 67U, 95U, 76U, 76U, 79U, 78U, 71U, 95U, 76U, 79U, 67U, 75U, 95U, +70U, 82U, 69U, 69U, 61U, 50U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 25U, 0U, 0U, 0U, +95U, 95U, 70U, 76U, 84U, 51U, 50U, 95U, 72U, 65U, 83U, 95U, 81U, 85U, 73U, 69U, +84U, 95U, 78U, 65U, 78U, 95U, 95U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 21U, 0U, 0U, 0U, 95U, 95U, 70U, 76U, 84U, 95U, 68U, 69U, +67U, 73U, 77U, 65U, 76U, 95U, 68U, 73U, 71U, 95U, 95U, 61U, 57U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, +65U, 83U, 84U, 49U, 54U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 48U, 120U, 102U, 102U, +102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 102U, 85U, 76U, +14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 62U, 0U, 0U, 0U, 95U, 95U, 76U, 68U, 66U, 76U, 95U, 78U, +79U, 82U, 77U, 95U, 77U, 65U, 88U, 95U, 95U, 61U, 49U, 46U, 49U, 56U, 57U, 55U, +51U, 49U, 52U, 57U, 53U, 51U, 53U, 55U, 50U, 51U, 49U, 55U, 54U, 53U, 48U, 50U, +49U, 50U, 54U, 51U, 56U, 53U, 51U, 48U, 51U, 48U, 57U, 55U, 48U, 50U, 49U, 101U, +43U, 52U, 57U, 51U, 50U, 76U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 30U, 0U, 0U, 0U, +95U, 95U, 71U, 67U, 67U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, 95U, 83U, 72U, 79U, +82U, 84U, 95U, 76U, 79U, 67U, 75U, 95U, 70U, 82U, 69U, 69U, 61U, 50U, 0U, 0U, +14U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 33U, 0U, 0U, 0U, 95U, 95U, 85U, 73U, 78U, 84U, 95U, 70U, +65U, 83U, 84U, 56U, 95U, 84U, 89U, 80U, 69U, 95U, 95U, 61U, 117U, 110U, 115U, 105U, +103U, 110U, 101U, 100U, 32U, 99U, 104U, 97U, 114U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, 95U, 71U, 78U, 85U, 95U, 83U, 79U, 85U, +82U, 67U, 69U, 61U, 49U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 27U, 0U, 0U, 0U, +95U, 95U, 99U, 112U, 112U, 95U, 105U, 110U, 105U, 116U, 95U, 99U, 97U, 112U, 116U, 117U, +114U, 101U, 115U, 61U, 50U, 48U, 49U, 51U, 48U, 52U, 76U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, +95U, 65U, 67U, 81U, 95U, 82U, 69U, 76U, 61U, 52U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 18U, 0U, 0U, 0U, 95U, 95U, 65U, 84U, 79U, 77U, 73U, 67U, +95U, 82U, 69U, 76U, 69U, 65U, 83U, 69U, 61U, 51U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 17U, 0U, 0U, 0U, 77U, 65U, 84U, 76U, 65U, 66U, 95U, 77U, +69U, 88U, 95U, 70U, 73U, 76U, 69U, 61U, 49U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, 77U, 88U, 95U, 67U, 79U, 77U, 80U, 65U, +84U, 95U, 54U, 52U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 28U, 0U, 0U, 0U, +77U, 65U, 84U, 76U, 65U, 66U, 95U, 77U, 69U, 88U, 67U, 77U, 68U, 95U, 82U, 69U, +76U, 69U, 65U, 83U, 69U, 61U, 82U, 50U, 48U, 49U, 56U, 97U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 40U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 9U, 2U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 2U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +9U, 2U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +2U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 120U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 65U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 65U, 0U, 0U, 0U, +47U, 104U, 111U, 109U, 101U, 47U, 106U, 117U, 100U, 115U, 111U, 110U, 47U, 80U, 105U, 120U, +104U, 97U, 119U, 107U, 47U, 77U, 65U, 84U, 76U, 65U, 66U, 47U, 117U, 79U, 82U, 66U, +95U, 77U, 79U, 68U, 66U, 85U, 83U, 95U, 84U, 67U, 80U, 47U, 109U, 111U, 100U, 98U, +117U, 115U, 95U, 116U, 99U, 112U, 95U, 99U, 108U, 105U, 101U, 110U, 116U, 46U, 99U, 112U, +112U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +199U, 124U, 221U, 108U, 15U, 147U, 38U, 65U, 14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 9U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 192U, 83U, 224U, 64U, 14U, 0U, 0U, 0U, 160U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 112U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 63U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 63U, 0U, 0U, 0U, +47U, 104U, 111U, 109U, 101U, 47U, 106U, 117U, 100U, 115U, 111U, 110U, 47U, 80U, 105U, 120U, +104U, 97U, 119U, 107U, 47U, 77U, 65U, 84U, 76U, 65U, 66U, 47U, 117U, 79U, 82U, 66U, +95U, 77U, 79U, 68U, 66U, 85U, 83U, 95U, 84U, 67U, 80U, 47U, 109U, 111U, 100U, 98U, +117U, 115U, 95U, 116U, 99U, 112U, 95U, 99U, 108U, 105U, 101U, 110U, 116U, 46U, 104U, 0U, +14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +9U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 90U, 209U, 72U, 104U, 15U, 147U, 38U, 65U, +14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +9U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 125U, 182U, 64U, +14U, 0U, 0U, 0U, 80U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +9U, 0U, 0U, 0U, 32U, 0U, 0U, 0U, 0U, 0U, 64U, 224U, 237U, 29U, 213U, 65U, +0U, 0U, 0U, 58U, 58U, 0U, 239U, 65U, 0U, 0U, 96U, 35U, 132U, 70U, 235U, 65U, +0U, 0U, 192U, 181U, 132U, 134U, 222U, 65U, 14U, 0U, 0U, 0U, 208U, 3U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 2U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 4U, 0U, 11U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 55U, 0U, 0U, 0U, 107U, 101U, 121U, 115U, 0U, 0U, 0U, 0U, +0U, 0U, 0U, 118U, 97U, 108U, 117U, 101U, 115U, 0U, 0U, 0U, 0U, 0U, 117U, 110U, +105U, 102U, 111U, 114U, 109U, 105U, 116U, 121U, 0U, 107U, 101U, 121U, 84U, 121U, 112U, 101U, +0U, 0U, 0U, 0U, 118U, 97U, 108U, 117U, 101U, 84U, 121U, 112U, 101U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 224U, 1U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 2U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 24U, 1U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 227U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 227U, 0U, 0U, 0U, 35U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, +32U, 60U, 110U, 101U, 116U, 105U, 110U, 101U, 116U, 47U, 105U, 110U, 46U, 104U, 62U, 10U, +35U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, 32U, 60U, 115U, 121U, 115U, 47U, 116U, 121U, +112U, 101U, 115U, 46U, 104U, 62U, 10U, 35U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, 32U, +60U, 115U, 121U, 115U, 47U, 115U, 111U, 99U, 107U, 101U, 116U, 46U, 104U, 62U, 10U, 35U, +105U, 110U, 99U, 108U, 117U, 100U, 101U, 32U, 60U, 97U, 114U, 112U, 97U, 47U, 105U, 110U, +101U, 116U, 46U, 104U, 62U, 10U, 35U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, 32U, 60U, +101U, 114U, 114U, 110U, 111U, 46U, 104U, 62U, 10U, 35U, 105U, 110U, 99U, 108U, 117U, 100U, +101U, 32U, 60U, 115U, 116U, 100U, 105U, 111U, 46U, 104U, 62U, 10U, 35U, 105U, 110U, 99U, +108U, 117U, 100U, 101U, 32U, 60U, 115U, 116U, 114U, 105U, 110U, 103U, 46U, 104U, 62U, 10U, +35U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, 32U, 60U, 117U, 110U, 105U, 115U, 116U, 100U, +46U, 104U, 62U, 10U, 35U, 105U, 110U, 99U, 108U, 117U, 100U, 101U, 32U, 34U, 109U, 111U, +100U, 98U, 117U, 115U, 95U, 116U, 99U, 112U, 95U, 99U, 108U, 105U, 101U, 110U, 116U, 46U, +104U, 34U, 10U, 91U, 53U, 98U, 66U, 85U, 117U, 116U, 122U, 78U, 76U, 98U, 100U, 121U, +118U, 122U, 89U, 81U, 119U, 56U, 71U, 70U, 54U, 68U, 93U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 144U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 89U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 0U, 0U, 89U, 0U, 0U, 0U, 47U, 104U, 111U, 109U, 101U, 47U, 106U, 117U, +100U, 115U, 111U, 110U, 47U, 80U, 105U, 120U, 104U, 97U, 119U, 107U, 47U, 77U, 65U, 84U, +76U, 65U, 66U, 47U, 117U, 79U, 82U, 66U, 95U, 77U, 79U, 68U, 66U, 85U, 83U, 95U, +84U, 67U, 80U, 47U, 109U, 111U, 100U, 98U, 117U, 115U, 95U, 116U, 99U, 112U, 95U, 99U, +108U, 105U, 101U, 110U, 116U, 46U, 99U, 112U, 112U, 91U, 53U, 98U, 66U, 85U, 117U, 116U, +122U, 78U, 76U, 98U, 100U, 121U, 118U, 122U, 89U, 81U, 119U, 56U, 71U, 70U, 54U, 68U, +93U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 200U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 2U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +0U, 0U, 0U, 221U, 2U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +2U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 13U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 24U, 0U, 0U, 0U, +0U, 0U, 0U, 221U, 2U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +3U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 9U, 2U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 2U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +16U, 0U, 4U, 0U, 99U, 104U, 97U, 114U, 14U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 3U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 3U, 0U, 97U, 110U, 121U, 0U, +14U, 0U, 0U, 0U, 232U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +3U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +2U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 4U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +2U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 4U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +2U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 4U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 64U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +12U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +3U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 48U, 1U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 3U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 2U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 4U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 128U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 2U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 4U, 0U, 12U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 12U, 0U, 0U, 0U, 83U, 114U, 99U, 70U, 105U, 108U, 101U, 78U, +97U, 109U, 101U, 0U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 48U, 0U, 0U, 0U, +6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 4U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 16U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 56U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +2U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 4U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 136U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +9U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +2U, 0U, 0U, 0U, 88U, 0U, 0U, 0U, 0U, 1U, 73U, 77U, 0U, 0U, 0U, 0U, +14U, 0U, 0U, 0U, 72U, 0U, 0U, 0U, 6U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +2U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, 8U, 0U, 0U, 0U, +1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, +5U, 0U, 4U, 0U, 5U, 0U, 0U, 0U, 1U, 0U, 0U, 0U, 5U, 0U, 0U, 0U, +77U, 67U, 79U, 83U, 0U, 0U, 0U, 0U, 14U, 0U, 0U, 0U, 0U, 0U, 0U, 0U + }; + *size = (int32_T)363103; + return data; +} + diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/slcc_interface_jkx3iHsM9OOrSN3xw6c8aB.h b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/slcc_interface_jkx3iHsM9OOrSN3xw6c8aB.h new file mode 100644 index 0000000..56abd83 --- /dev/null +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/slcc_interface_jkx3iHsM9OOrSN3xw6c8aB.h @@ -0,0 +1,55 @@ +#include "customcode_jkx3iHsM9OOrSN3xw6c8aB.h" +#ifdef __cplusplus +extern "C" { +#endif + + +/* Type Definitions */ + +/* Named Constants */ + +/* Variable Declarations */ + +/* Variable Definitions */ + +/* Function Declarations */ +DLL_EXPORT_CC extern const char_T *get_dll_checksum_jkx3iHsM9OOrSN3xw6c8aB(); +DLL_EXPORT_CC extern void *create_ModbusTCPClient_DTOtnS5jzeCt7wI4BrWszE_jkx3iHsM9OOrSN3xw6c8aB(const char_T *ip, int32_T port, int32_T numCoils, int32_T numDI, int32_T numIR, int32_T numHR, int32_T startCoils, int32_T startDI, int32_T startIR, int32_T startHR); +DLL_EXPORT_CC extern void *create_ModbusTCPClient_m6DHLsRJatb7jFhPa9sibF_jkx3iHsM9OOrSN3xw6c8aB(const char_T *ip, int32_T port); +DLL_EXPORT_CC extern void delete_ModbusTCPClient_IUI8Q2S0ulkAvLxLsx7k7_jkx3iHsM9OOrSN3xw6c8aB(void *classObj); +DLL_EXPORT_CC extern void ModbusTCPClient_setStartAddresses_WBPKyX5chtvoJpkQQz9yaE_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T startCoils, int32_T startDI, int32_T startIR, int32_T startHR); +DLL_EXPORT_CC extern boolean_T ModbusTCPClient_connectServer_QWoAn8DsWluHwos1RJjgIB_jkx3iHsM9OOrSN3xw6c8aB(void *classObj); +DLL_EXPORT_CC extern void ModbusTCPClient_disconnectServer_8RQB4Kyl2X5kNVGUlAlOgF_jkx3iHsM9OOrSN3xw6c8aB(void *classObj); +DLL_EXPORT_CC extern boolean_T ModbusTCPClient_isConnected_6gPjpu9NwavTxFjRzBfnHH_jkx3iHsM9OOrSN3xw6c8aB(void *classObj); +DLL_EXPORT_CC extern boolean_T ModbusTCPClient_reconnectServer_tmHQpYOBqsG4QOWlcN1JCG_jkx3iHsM9OOrSN3xw6c8aB(void *classObj); +DLL_EXPORT_CC extern void ModbusTCPClient_setTimeout_pKk7C4CiK7cGunjmXsoo9G_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T milliseconds); +DLL_EXPORT_CC extern void ModbusTCPClient_setCoil_uKV63H2F6Bk5GhMpqdzPnH_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, boolean_T value); +DLL_EXPORT_CC extern void ModbusTCPClient_setHoldingRegister_4XFxsavHXRTDHK2Ce0yJN_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, uint16_T value); +DLL_EXPORT_CC extern boolean_T ModbusTCPClient_getCoil_koLGZb1i8WN62u3e1PZwYH_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address); +DLL_EXPORT_CC extern boolean_T ModbusTCPClient_getDesiredCoil_4MZCcH6ezDGZg0uObXZUCC_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address); +DLL_EXPORT_CC extern boolean_T ModbusTCPClient_getDiscreteInput_ae9HPljrPWD4BuZzmFBLEH_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address); +DLL_EXPORT_CC extern uint16_T ModbusTCPClient_getHoldingRegister_mYLPn0wppPgH4bOhTiVvvF_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address); +DLL_EXPORT_CC extern uint16_T ModbusTCPClient_getDesiredHoldingRegister_15FbNf22xvcBTZOmdfDtkC_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address); +DLL_EXPORT_CC extern uint16_T ModbusTCPClient_getInputRegister_ULtxwrYKJbrRxoQjkBCEs_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address); +DLL_EXPORT_CC extern ModbusError ModbusTCPClient_getMultipleHoldingRegisters_dolsLHExIVVRdXIf6qYZmF_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T startAddress, int32_T count, uint16_T *destination); +DLL_EXPORT_CC extern ModbusError ModbusTCPClient_readAll_0LzP2HH0Zq4XkTmFCbG4o_jkx3iHsM9OOrSN3xw6c8aB(void *classObj); +DLL_EXPORT_CC extern ModbusError ModbusTCPClient_writeAll_zaImFzR1o00mWpc4RczmN_jkx3iHsM9OOrSN3xw6c8aB(void *classObj); +DLL_EXPORT_CC extern ModbusError ModbusTCPClient_readCoil_zMFMzEaWMy4AM0fCGw6vkB_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, boolean_T *coilState); +DLL_EXPORT_CC extern ModbusError ModbusTCPClient_readMultipleCoils_FsHZsYjrSrPY8P2Ay58lEB_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, int32_T count, boolean_T *coilStates); +DLL_EXPORT_CC extern ModbusError ModbusTCPClient_readDiscreteInput_hw3i2qSdn19YvGoOIzPSQF_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, boolean_T *discreteInput); +DLL_EXPORT_CC extern ModbusError ModbusTCPClient_readMultipleDiscreteInputs_ejm6F8zFfmummwJiWr5WWE_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, int32_T count, boolean_T *discreteInputs); +DLL_EXPORT_CC extern ModbusError ModbusTCPClient_readHoldingRegister_6gyuCNdZQDr6LxODE49ARC_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, uint16_T *holdingRegister); +DLL_EXPORT_CC extern ModbusError ModbusTCPClient_readMultipleHoldingRegisters_Nsd2PmYkYCsTdyTlOKb0KB_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, int32_T count, uint16_T *holdingRegisters); +DLL_EXPORT_CC extern ModbusError ModbusTCPClient_readInputRegister_LiIzv9TV0ONDt8VfLmy35G_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, uint16_T *inputRegister); +DLL_EXPORT_CC extern ModbusError ModbusTCPClient_readMultipleInputRegisters_two67DgbwFGoO6KyFi3I5B_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, int32_T count, uint16_T *inputRegisters); +DLL_EXPORT_CC extern ModbusError ModbusTCPClient_writeCoil_QoP3Zii3RZpABaPcesHRiB_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, boolean_T value); +DLL_EXPORT_CC extern ModbusError ModbusTCPClient_writeMultipleCoils_p5zcgcGPFH7wlbBhce5JYG_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, int32_T count, const boolean_T *values); +DLL_EXPORT_CC extern ModbusError ModbusTCPClient_writeHoldingRegister_mGVMywqtoVY5ZLnrtEy19G_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, uint16_T value); +DLL_EXPORT_CC extern ModbusError ModbusTCPClient_writeMultipleHoldingRegisters_ga2jca071NX41GYGjHLKzB_jkx3iHsM9OOrSN3xw6c8aB(void *classObj, int32_T address, int32_T count, const uint16_T *values); + +/* Function Definitions */ +DLL_EXPORT_CC const uint8_T *get_checksum_source_info(int32_T *size); +#ifdef __cplusplus +} +#endif + diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/slcc_interface_jkx3iHsM9OOrSN3xw6c8aB.o b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/slcc_interface_jkx3iHsM9OOrSN3xw6c8aB.o new file mode 100644 index 0000000..ff3070b Binary files /dev/null and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/_slcc/jkx3iHsM9OOrSN3xw6c8aB/slcc_interface_jkx3iHsM9OOrSN3xw6c8aB.o differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/_sharedutils/shared_file.dmr b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/_sharedutils/shared_file.dmr index b4b27dd..d471782 100644 Binary files a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/_sharedutils/shared_file.dmr and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/_sharedutils/shared_file.dmr differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/BlockTraceInfo.mat b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/BlockTraceInfo.mat index 6967719..b57589f 100644 Binary files a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/BlockTraceInfo.mat and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/BlockTraceInfo.mat differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/CompileInfo.xml b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/CompileInfo.xml index fd4cd8d..93dee6e 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/CompileInfo.xml +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/CompileInfo.xml @@ -1,13 +1,13 @@ - - + + uORB_MODBUS_TCP uORB_MODBUS_TCP 10.0 - - + + true base workspace BaseWorkspace @@ -17,7 +17,11 @@ AAFJTQAAAAAOAAAAOAAAAAYAAAAIAAAAAgAAAAAAAAAFAAAACAAAAAAAAAABAAAAAQAAAAAAAAAFAAQAAQAAAAEAAAAAAAAA {"Inports":"{\"Name\":\"Default\",\"Checksum\":\"Default\",\"PerInstancePropertiesChecksum\":\"\",\"MemorySectionName\":\"None\",\"MemorySectionChecksum\":\"None\"}","Outports":"{\"Name\":\"Default\",\"Checksum\":\"Default\",\"PerInstancePropertiesChecksum\":\"\",\"MemorySectionName\":\"None\",\"MemorySectionChecksum\":\"None\"}","ParameterArguments":"{\"Name\":\"Default\",\"Checksum\":\"Default\",\"PerInstancePropertiesChecksum\":\"\",\"MemorySectionName\":\"None\",\"MemorySectionChecksum\":\"None\"}","LocalParameters":"{\"Name\":\"Default\",\"Checksum\":\"Default\",\"PerInstancePropertiesChecksum\":\"\",\"MemorySectionName\":\"None\",\"MemorySectionChecksum\":\"None\"}","GlobalParameters":"{\"Name\":\"Default\",\"Checksum\":\"Default\",\"PerInstancePropertiesChecksum\":\"\",\"MemorySectionName\":\"None\",\"MemorySectionChecksum\":\"None\"}","InternalData":"{\"Name\":\"Default\",\"Checksum\":\"Default\",\"PerInstancePropertiesChecksum\":\"\",\"MemorySectionName\":\"None\",\"MemorySectionChecksum\":\"None\"}","SharedLocalDataStores":"{\"Name\":\"Default\",\"Checksum\":\"Default\",\"PerInstancePropertiesChecksum\":\"\",\"MemorySectionName\":\"None\",\"MemorySectionChecksum\":\"None\"}","GlobalDataStores":"{\"Name\":\"Default\",\"Checksum\":\"Default\",\"PerInstancePropertiesChecksum\":\"\",\"MemorySectionName\":\"None\",\"MemorySectionChecksum\":\"None\"}","Constants":"{\"Name\":\"Default\",\"Checksum\":\"Default\",\"PerInstancePropertiesChecksum\":\"\",\"MemorySectionName\":\"None\",\"MemorySectionChecksum\":\"None\"}","DataTransfers":"{\"Name\":\"Default\",\"Checksum\":\"Default\",\"PerInstancePropertiesChecksum\":\"\",\"MemorySectionName\":\"None\",\"MemorySectionChecksum\":\"None\"}","ModelData":"{\"Name\":\"Default\",\"Checksum\":\"Default\",\"PerInstancePropertiesChecksum\":\"\",\"MemorySectionName\":\"None\",\"MemorySectionChecksum\":\"None\"}","InitializeTerminate":"{\"Name\":\"Default\",\"Checksum\":\"Default\",\"PerInstancePropertiesChecksum\":\"\",\"MemorySectionName\":\"None\",\"MemorySectionChecksum\":\"None\"}","Execution":"{\"Name\":\"Default\",\"Checksum\":\"Default\",\"PerInstancePropertiesChecksum\":\"\",\"MemorySectionName\":\"None\",\"MemorySectionChecksum\":\"None\"}","SharedUtility":"{\"Name\":\"Default\",\"Checksum\":\"Default\",\"PerInstancePropertiesChecksum\":\"\",\"MemorySectionName\":\"None\",\"MemorySectionChecksum\":\"None\"}"} -1.0 - 5.0 + .25 + px4_Bus_plc_coils_read + px4_Bus_plc_discrete_inputs + px4_Bus_plc_holding_registers_read + px4_Bus_plc_input_registers true true false @@ -29,59 +33,78 @@ true D1 - 5.0 + .25 40 0 + + true + D2 + 5.0 + 39 + 1 + 2 335 <?xml version="1.0"?> <slexec_sto version="1.1" packageUris="http://schema.mathworks.com/mf0/slexec_mm_sto/R2024a_202305081229"> - <sto.Registry type="sto.Registry" uuid="ee73db1b-f182-40a7-b4b2-32cb5a9d4db8"> + <sto.Registry type="sto.Registry" uuid="9f787942-3fbf-40bf-83d9-ca31d2944761"> <executionSpec>Undetermined</executionSpec> <identifier>uORB_MODBUS_TCP</identifier> - <clockRegistry type="sto.ClockRegistry" uuid="ec9112c3-f7df-4d70-9e32-e8deed783d4b"> - <clocks type="sto.Timer" uuid="2d74743a-7fa6-484f-840f-02b24087f560"> - <computedFundamentalDiscretePeriod>5.0</computedFundamentalDiscretePeriod> - <fastestDiscreteRate type="sto.ClassicPeriodicDiscreteRate" uuid="29f1da5c-2a35-48ef-a7fe-a82629440e39"/> + <clockRegistry type="sto.ClockRegistry" uuid="e3adf32f-9edb-41d2-8d65-2aa99a600d7d"> + <clocks type="sto.Timer" uuid="3a0b736d-652a-409a-b254-5d476adf58b2"> + <computedFundamentalDiscretePeriod>.25</computedFundamentalDiscretePeriod> + <fastestDiscreteRate type="sto.ClassicPeriodicDiscreteRate" uuid="ba617304-1665-47a9-8567-cc2b033188ef"/> <isDefaultTimer>true</isDefaultTimer> - <resolution>5.0</resolution> + <resolution>.25</resolution> <timeAdvanceMode>FixedStep</timeAdvanceMode> <identifier>uORB_MODBUS_TCP::defaultTimer</identifier> - <rates type="sto.ClassicPeriodicDiscreteRate" uuid="29f1da5c-2a35-48ef-a7fe-a82629440e39"> + <rates type="sto.ClassicPeriodicDiscreteRate" uuid="ba617304-1665-47a9-8567-cc2b033188ef"> <annotation>D1</annotation> <clockId>uORB_MODBUS_TCP::defaultTimer</clockId> <description>Discrete 1</description> <taskId>_task0</taskId> - <rateSpec type="sto.RateSpec" uuid="1368f082-b58c-4c67-b97a-0fb3024453e7"> + <rateSpec type="sto.RateSpec" uuid="26cde9ad-fd89-4996-b202-d4b6c44daffc"> + <period>.25</period> + <rateType>ClassicPeriodicDiscrete</rateType> + </rateSpec> + </rates> + <rates type="sto.ClassicPeriodicDiscreteRate" uuid="6f6b4dea-ac0b-4961-855e-736959b539d1"> + <annotation>D2</annotation> + <clockId>uORB_MODBUS_TCP::defaultTimer</clockId> + <colorIndex>1</colorIndex> + <description>Discrete 2</description> + <rateIdx>1</rateIdx> + <taskId>_task1</taskId> + <rateSpec type="sto.RateSpec" uuid="f257fe37-2af7-417a-b5c7-0428c312f42d"> <period>5.0</period> <rateType>ClassicPeriodicDiscrete</rateType> </rateSpec> </rates> - <baseRate type="sto.ClassicPeriodicDiscreteRate" uuid="fc5d4684-395b-44c9-8cfa-430a2d34b8de"> + <baseRate type="sto.ClassicPeriodicDiscreteRate" uuid="65b35d5e-227d-4911-bc52-2893aadaefbf"> <annotation>D1</annotation> <clockId>uORB_MODBUS_TCP::defaultTimer</clockId> <description>Discrete 1</description> <taskId>_task0</taskId> - <rateSpec type="sto.RateSpec" uuid="ae85af8c-7a93-4769-abad-dfb66bc50c8e"> - <period>5.0</period> + <rateSpec type="sto.RateSpec" uuid="ff2d4d8a-96eb-48d4-9f8f-062960f9fb1d"> + <period>.25</period> <rateType>ClassicPeriodicDiscrete</rateType> </rateSpec> </baseRate> </clocks> <timeAdvanceMode>FixedStep</timeAdvanceMode> </clockRegistry> - <taskRegistry type="sto.TaskRegistry" uuid="052f32c4-2b96-4908-913e-03a4854d96c0"> - <rootTaskHierarchyElements type="sto.Task" uuid="8de7de87-835c-46ef-ad46-f88050f2605e"> + <taskRegistry type="sto.TaskRegistry" uuid="b6adc007-26b8-402c-b01d-1e3d81bb5c20"> + <rootTaskHierarchyElements type="sto.Task" uuid="5edff6a2-d515-4f58-a3d8-c5326ec15f76"> <isExecutable>true</isExecutable> <orderIndex>1</orderIndex> - <rates type="sto.ClassicPeriodicDiscreteRate" uuid="287f9e9c-18e9-462d-bf56-5a7dc6aad9b7"> + <rates type="sto.ClassicPeriodicDiscreteRate" uuid="f55c6bcc-446d-42c6-90e7-ff6c2ff6f624"> <annotation>D1</annotation> <clockId>uORB_MODBUS_TCP::defaultTimer</clockId> <description>Discrete 1</description> <taskId>_task0</taskId> - <rateSpec type="sto.RateSpec" uuid="31b43a7e-4ce0-4be9-a684-8e88514ad3d8"> - <period>5.0</period> + <rateSpec type="sto.RateSpec" uuid="d3854663-c664-46a3-a0a9-41f57f4994dd"> + <period>.25</period> <rateType>ClassicPeriodicDiscrete</rateType> </rateSpec> </rates> @@ -91,7 +114,33 @@ <identifier>_task0</identifier> <priority>40</priority> </rootTaskHierarchyElements> - <taskDependencyGraph type="sto.SerializedTaskConnectionList" uuid="6a78d61d-7a32-4285-b101-584200d36c5c"> + <rootTaskHierarchyElements type="sto.Task" uuid="a86fefe7-45e4-423e-9db6-880c90fa3d37"> + <isExecutable>true</isExecutable> + <orderIndex>2</orderIndex> + <rates type="sto.ClassicPeriodicDiscreteRate" uuid="8d76a60f-fbc0-4d52-b0c5-783585f4eb4e"> + <annotation>D2</annotation> + <clockId>uORB_MODBUS_TCP::defaultTimer</clockId> + <colorIndex>1</colorIndex> + <description>Discrete 2</description> + <rateIdx>1</rateIdx> + <taskId>_task1</taskId> + <rateSpec type="sto.RateSpec" uuid="7e68009f-8a4a-4dac-9abb-5a4cbf16a75c"> + <period>5.0</period> + <rateType>ClassicPeriodicDiscrete</rateType> + </rateSpec> + </rates> + <schedulingClockId>uORB_MODBUS_TCP::defaultTimer</schedulingClockId> + <tNum>1</tNum> + <timeKeeperClockId>uORB_MODBUS_TCP::defaultTimer</timeKeeperClockId> + <elementType>Task</elementType> + <identifier>_task1</identifier> + <priority>39</priority> + </rootTaskHierarchyElements> + <taskDependencyGraph type="sto.SerializedTaskConnectionList" uuid="d51d07bc-b865-4d1b-bd8f-102c79ccc172"> + <clockIdentifier>uORB_MODBUS_TCP::defaultTimer</clockIdentifier> + <taskIdentifier>_task1</taskIdentifier> + </taskDependencyGraph> + <taskDependencyGraph type="sto.SerializedTaskConnectionList" uuid="711a613b-96b6-4f2f-bbfe-1a5d260148ac"> <clockIdentifier>uORB_MODBUS_TCP::defaultTimer</clockIdentifier> <taskIdentifier>_task0</taskIdentifier> </taskDependencyGraph> @@ -100,20 +149,22 @@ </sto.Registry> </slexec_sto> true - - - - + + + + true - 5.0 + .25 2 true + true true 2 1 + SOLVER_MODE_MULTITASKING FixedStepDiscrete SOLVER_TYPE_FIXEDSTEP - + 8 64 32 @@ -132,34 +183,35 @@ 32 - - - - - - - - - - - - + + + + + + + + true + + + + + + - - - - + + + + uORB_MODBUS_TCP ROOT - + - 2 - 4 3 + 2 true @@ -171,49 +223,77 @@ Default -2147483648 + + + false + 4 + true + D1 + 40 + + D1 + -12240129 + true + ClassicPeriodicDiscrete0.250 + 0 + + .25 + + 0 + + false 1 true - D1 - 40 + D2 + 39 - D1 - -12240129 + D2 + 986198527 true ClassicPeriodicDiscrete50 - 0 + 1 5.0 - 0 + 1 - - - + + + sltpEvents - + sltpTaskGroups - - - + + + + D1 - + uORB_MODBUS_TCP::defaultTimer _task0 + + D2 + + + uORB_MODBUS_TCP::defaultTimer + _task1 + + sltpTasks - + \ No newline at end of file diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/binfo.mat b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/binfo.mat index 360f00f..a636d95 100644 Binary files a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/binfo.mat and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/binfo.mat differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/minfo.mat b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/minfo.mat index b8bb2e9..411badf 100644 Binary files a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/minfo.mat and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/ert/uORB_MODBUS_TCP/tmwinternal/minfo.mat differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/sim/varcache/uORB_MODBUS_TCP/checksumOfCache.mat b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/sim/varcache/uORB_MODBUS_TCP/checksumOfCache.mat index 0efd755..ad1f9de 100644 Binary files a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/sim/varcache/uORB_MODBUS_TCP/checksumOfCache.mat and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/sim/varcache/uORB_MODBUS_TCP/checksumOfCache.mat differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/sim/varcache/uORB_MODBUS_TCP/tmwinternal/simulink_cache.xml b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/sim/varcache/uORB_MODBUS_TCP/tmwinternal/simulink_cache.xml index 2997962..5923929 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/sim/varcache/uORB_MODBUS_TCP/tmwinternal/simulink_cache.xml +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/sim/varcache/uORB_MODBUS_TCP/tmwinternal/simulink_cache.xml @@ -1,6 +1,6 @@ - - DdrRgVnyR6kegWj1mpzaDcyS+Rh4VBoYEPYCL7/LAGEIf+p+iTuTZYWKYUM1yL59ppS4QwFUE2pBT336Wo0z0Q== + + /s11ahv8mqi9vbwi2UlouCYjA9mjT/SmcREmK0z6aZ3EQci35TC+5lA8FKJ8gHVO/ti5sHt+uyYmU1Xb7DYBzg== \ No newline at end of file diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/sim/varcache/uORB_MODBUS_TCP/varInfo.mat b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/sim/varcache/uORB_MODBUS_TCP/varInfo.mat index 4df936c..6939a9b 100644 Binary files a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/sim/varcache/uORB_MODBUS_TCP/varInfo.mat and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/slprj/sim/varcache/uORB_MODBUS_TCP/varInfo.mat differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP.slx b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP.slx index 422bb1d..9167d12 100644 Binary files a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP.slx and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP.slx differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP.slx.original b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP.slx.original new file mode 100644 index 0000000..8a34145 Binary files /dev/null and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP.slx.original differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP.slxc b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP.slxc index 733a3f5..21bb6fc 100644 Binary files a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP.slxc and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP.slxc differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/CMakeLists.txt b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/CMakeLists.txt index 8fda165..5a342e7 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/CMakeLists.txt +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/CMakeLists.txt @@ -5,16 +5,19 @@ set(MAVLINK_LIBRARY_DIR "${CMAKE_BINARY_DIR}/mavlink") set(MAVLINK_DIALECT_UAVIONIX "uAvionix") add_definitions( --DMODEL=uORB_MODBUS_TCP -DNUMST=1 -DNCSTATES=0 -DHAVESTDIO -DMODEL_HAS_DYNAMICALLY_LOADED_SFCNS=0 -DCLASSIC_INTERFACE=0 -DALLOCATIONFCN=0 -DTID01EQ=0 -DTERMFCN=1 -DONESTEPFCN=1 -DMAT_FILE=0 -DMULTI_INSTANCE_CODE=0 -DINTEGER_CODE=0 -DMT=0 -DPX4 -DFMUv6x -DNULL=0 -DMW_PX4_NUTTX_BUILD -DEXTMODE_DISABLETESTING -DEXTMODE_DISABLEPRINTF -DEXTMODE_DISABLE_ARGS_PROCESSING=1 -D__linux__ -DXCP_PLATFORM_LINUX_NO_PIE_SUPPORT -DSTACK_SIZE=64 -D__MW_TARGET_USE_HARDWARE_RESOURCES_H__ -DRT ) +-DMODEL=uORB_MODBUS_TCP -DNUMST=2 -DNCSTATES=0 -DHAVESTDIO -DMODEL_HAS_DYNAMICALLY_LOADED_SFCNS=0 -DCLASSIC_INTERFACE=0 -DALLOCATIONFCN=0 -DTID01EQ=0 -DTERMFCN=1 -DONESTEPFCN=1 -DMAT_FILE=0 -DMULTI_INSTANCE_CODE=0 -DINTEGER_CODE=0 -DMT=1 -DPX4 -DFMUv6x -DNULL=0 -DMW_PX4_NUTTX_BUILD -DEXTMODE_DISABLETESTING -DEXTMODE_DISABLEPRINTF -DEXTMODE_DISABLE_ARGS_PROCESSING=1 -D__linux__ -DXCP_PLATFORM_LINUX_NO_PIE_SUPPORT -DSTACK_SIZE=64 -D__MW_TARGET_USE_HARDWARE_RESOURCES_H__ -DRT ) px4_add_module( MODULE modules__px4_simulink_app MAIN px4_simulink_app STACK_MAIN 2000 SRCS + MW_uORB_Read.cpp + MW_uORB_Write.cpp + modbus_tcp_client.cpp ert_main.cpp uORB_MODBUS_TCP.cpp - modbus_tcp_client.cpp + uORB_MODBUS_TCP_data.cpp MW_PX4_TaskControl.cpp nuttxinitialize.cpp COMPILE_FLAGS @@ -27,14 +30,15 @@ SRCS ${MAVLINK_LIBRARY_DIR} ${MAVLINK_LIBRARY_DIR}/${CONFIG_MAVLINK_DIALECT} ${MAVLINK_LIBRARY_DIR}/${MAVLINK_DIALECT_UAVIONIX} - /home/judson/GSE-Miscellaneous/Pixhawk_and_GSE/MATLAB/uORB_MODBUS_TCP - /home/judson/GSE-Miscellaneous/Pixhawk_and_GSE/MATLAB/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw - /usr/local/MATLAB/R2024a/extern/include - /usr/local/MATLAB/R2024a/simulink/include - /usr/local/MATLAB/R2024a/rtw/c/src - /usr/local/MATLAB/R2024a/rtw/c/src/ext_mode/common - /usr/local/MATLAB/R2024a/rtw/c/ert - /root/Documents/MATLAB/SupportPackages/R2024a/toolbox/target/supportpackages/px4/include + /home/judson/Pixhawk/MATLAB/uORB_MODBUS_TCP + /home/judson/Documents/MATLAB/SupportPackages/R2024a/toolbox/target/supportpackages/px4/include + /home/judson/Pixhawk/MATLAB + /home/judson/Pixhawk/MATLAB/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw + /home/judson/MATLAB/extern/include + /home/judson/MATLAB/simulink/include + /home/judson/MATLAB/rtw/c/src + /home/judson/MATLAB/rtw/c/src/ext_mode/common + /home/judson/MATLAB/rtw/c/ert ) get_target_property(PX4_SL_APP_COMPILE_FLAGS modules__px4_simulink_app COMPILE_OPTIONS) diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/MW_custom_RTOS_header.h b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/MW_custom_RTOS_header.h index a65e302..7d794ee 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/MW_custom_RTOS_header.h +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/MW_custom_RTOS_header.h @@ -1,11 +1,12 @@ #ifndef _MW_CUSTOM_RTOS_HEADER_H_ #define _MW_CUSTOM_RTOS_HEADER_H_ #define MW_BASERATE_PRIORITY 250 -#define MW_BASERATE_PERIOD 5.0 -#define MW_NUMBER_SUBRATES 0 +#define MW_BASERATE_PERIOD 0.25 +#define MW_NUMBER_SUBRATES 1 #define MW_NUMBER_APERIODIC_TASKS 0 #define MW_IS_CONCURRENT 0 #define MW_NUMBER_TIMER_DRIVEN_TASKS 0 +#define MW_HAS_MULTIPLE_RATES extern void exitFcn(int sig); extern void *terminateTask(void *arg); diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/MW_uORB_busstruct_conversion.h b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/MW_uORB_busstruct_conversion.h index 4adb3e8..ccea12e 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/MW_uORB_busstruct_conversion.h +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/MW_uORB_busstruct_conversion.h @@ -1,6 +1,14 @@ #ifndef _MW_UORB_BUSSTRUCT_CONVERSION_H_ #define _MW_UORB_BUSSTRUCT_CONVERSION_H_ +#include +#include +#include +#include +typedef struct plc_coils_read_s px4_Bus_plc_coils_read ; +typedef struct plc_discrete_inputs_s px4_Bus_plc_discrete_inputs ; +typedef struct plc_holding_registers_read_s px4_Bus_plc_holding_registers_read ; +typedef struct plc_input_registers_s px4_Bus_plc_input_registers ; #endif diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/buildInfo.mat b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/buildInfo.mat index 408baa5..6408276 100644 Binary files a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/buildInfo.mat and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/buildInfo.mat differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/codeInfo.mat b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/codeInfo.mat index 9a517f6..0678d41 100644 Binary files a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/codeInfo.mat and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/codeInfo.mat differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/codedescriptor.dmr b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/codedescriptor.dmr index cabdbf7..8f79a57 100644 Binary files a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/codedescriptor.dmr and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/codedescriptor.dmr differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/ert_main.cpp b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/ert_main.cpp index ed9d22c..92aabbd 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/ert_main.cpp +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/ert_main.cpp @@ -7,9 +7,9 @@ // // Code generated for Simulink model 'uORB_MODBUS_TCP'. // -// Model version : 1.16 +// Model version : 1.22 // Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 -// C/C++ source code generated on : Sat Mar 22 17:15:30 2025 +// C/C++ source code generated on : Sat Apr 12 20:53:52 2025 // // Target selection: ert.tlc // Embedded hardware selection: ARM Compatible->ARM Cortex @@ -36,22 +36,63 @@ volatile boolean_T stopRequested = false; volatile boolean_T runModel = true; px4_sem_t stopSem; px4_sem_t baserateTaskSem; +px4_sem_t subrateTaskSem[1]; +int taskId[1]; pthread_t schedulerThread; pthread_t baseRateThread; void *threadJoinStatus; int terminatingmodel = 0; +pthread_t subRateThread[1]; +int subratePriority[1]; +void *subrateTask(void *arg) +{ + int tid = *((int *) arg); + int subRateId; + subRateId = tid + 1; + while (runModel) { + px4_sem_wait(&subrateTaskSem[tid]); + if (terminatingmodel) + break; + +#ifdef MW_RTOS_DEBUG + + printf(" -subrate task %d semaphore received\n", subRateId); + +#endif + + uORB_MODBUS_TCP_step(subRateId); + + // Get model outputs here + } + + pthread_exit((void *)0); + return NULL; +} + void *baseRateTask(void *arg) { runModel = (rtmGetErrorStatus(uORB_MODBUS_TCP_M) == (nullptr)); while (runModel) { px4_sem_wait(&baserateTaskSem); - uORB_MODBUS_TCP_step(); + +#ifdef MW_RTOS_DEBUG + + printf("*base rate task semaphore received\n"); + fflush(stdout); + +#endif + + if (rtmStepTask(uORB_MODBUS_TCP_M, 1) + ) { + px4_sem_post(&subrateTaskSem[0]); + } + + uORB_MODBUS_TCP_step(0); // Get model outputs here stopRequested = !((rtmGetErrorStatus(uORB_MODBUS_TCP_M) == (nullptr))); } - runModel = 0; terminateTask(arg); pthread_exit((void *)0); return NULL; @@ -70,6 +111,20 @@ void *terminateTask(void *arg) terminatingmodel = 1; { + int i; + + // Signal all periodic tasks to complete + for (i=0; i<1; i++) { + CHECK_STATUS(px4_sem_post(&subrateTaskSem[i]), 0, "px4_sem_post"); + CHECK_STATUS(px4_sem_destroy(&subrateTaskSem[i]), 0, "px4_sem_destroy"); + } + + // Wait for all periodic tasks to complete + for (i=0; i<1; i++) { + CHECK_STATUS(pthread_join(subRateThread[i], &threadJoinStatus), 0, + "pthread_join"); + } + runModel = 0; } @@ -83,6 +138,7 @@ void *terminateTask(void *arg) int px4_simulink_app_task_main (int argc, char *argv[]) { + subratePriority[0] = 249; px4_simulink_app_control_MAVLink(); rtmSetErrorStatus(uORB_MODBUS_TCP_M, 0); @@ -90,7 +146,7 @@ int px4_simulink_app_task_main (int argc, char *argv[]) uORB_MODBUS_TCP_initialize(); // Call RTOS Initialization function - nuttxRTOSInit(5.0, 0); + nuttxRTOSInit(0.25, 1); // Wait for stop semaphore px4_sem_wait(&stopSem); diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtmodel.h b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtmodel.h index 7d2048f..e5d1d99 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtmodel.h +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtmodel.h @@ -7,9 +7,9 @@ // // Code generated for Simulink model 'uORB_MODBUS_TCP'. // -// Model version : 1.16 +// Model version : 1.22 // Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 -// C/C++ source code generated on : Sat Mar 22 17:15:30 2025 +// C/C++ source code generated on : Sat Apr 12 20:53:52 2025 // // Target selection: ert.tlc // Embedded hardware selection: ARM Compatible->ARM Cortex diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtw_proj.tmw b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtw_proj.tmw index 3c1cf07..9721c56 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtw_proj.tmw +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtw_proj.tmw @@ -1,4 +1,4 @@ -Simulink Coder project for uORB_MODBUS_TCP using . MATLAB root = /usr/local/MATLAB/R2024a. SimStruct date: 12-Jan-2024 04:16:21 +Simulink Coder project for uORB_MODBUS_TCP using . MATLAB root = /home/judson/MATLAB. SimStruct date: 12-Jan-2024 04:16:21 This file is generated by Simulink Coder for use by the make utility to determine when to rebuild objects when the name of the current Simulink Coder project changes. The rtwinfomat located at: ../slprj/ert/uORB_MODBUS_TCP/tmwinternal/binfo.mat diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtwtypes.h b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtwtypes.h index 8fadcab..379d626 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtwtypes.h +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtwtypes.h @@ -7,9 +7,9 @@ // // Code generated for Simulink model 'uORB_MODBUS_TCP'. // -// Model version : 1.16 +// Model version : 1.22 // Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 -// C/C++ source code generated on : Sat Mar 22 17:15:30 2025 +// C/C++ source code generated on : Sat Apr 12 20:53:52 2025 // // Target selection: ert.tlc // Embedded hardware selection: ARM Compatible->ARM Cortex diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtwtypeschksum.mat b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtwtypeschksum.mat index 507b199..f4370b8 100644 Binary files a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtwtypeschksum.mat and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/rtwtypeschksum.mat differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/tmwinternal/simulink_cache.xml b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/tmwinternal/simulink_cache.xml index c407f7b..704fbc2 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/tmwinternal/simulink_cache.xml +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/tmwinternal/simulink_cache.xml @@ -1,6 +1,6 @@ - - DdrRgVnyR6kegWj1mpzaDcyS+Rh4VBoYEPYCL7/LAGEIf+p+iTuTZYWKYUM1yL59ppS4QwFUE2pBT336Wo0z0Q== + + 5yKZbaLdWAwwyNBmOxcGcB7eucJzsPxwRZ02y1HQ/zqjVzzjpGumt3HlxZz33ZPrLqkO8UQWCZNG+QwONwRlVw== \ No newline at end of file diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/tmwinternal/tr b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/tmwinternal/tr index afef7b8..eafb458 100644 Binary files a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/tmwinternal/tr and b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/tmwinternal/tr differ diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP.cpp b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP.cpp index 17f3090..8ac7915 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP.cpp +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP.cpp @@ -7,9 +7,9 @@ // // Code generated for Simulink model 'uORB_MODBUS_TCP'. // -// Model version : 1.16 +// Model version : 1.22 // Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 -// C/C++ source code generated on : Sat Mar 22 17:15:30 2025 +// C/C++ source code generated on : Sat Apr 12 20:53:52 2025 // // Target selection: ert.tlc // Embedded hardware selection: ARM Compatible->ARM Cortex @@ -17,68 +17,584 @@ // Validation result: Not run // #include "uORB_MODBUS_TCP.h" +#include "rtwtypes.h" // Block signals (default storage) B_uORB_MODBUS_TCP_T uORB_MODBUS_TCP_B; +// Block states (default storage) +DW_uORB_MODBUS_TCP_T uORB_MODBUS_TCP_DW; + // Real-time model RT_MODEL_uORB_MODBUS_TCP_T uORB_MODBUS_TCP_M_{ }; RT_MODEL_uORB_MODBUS_TCP_T *const uORB_MODBUS_TCP_M{ &uORB_MODBUS_TCP_M_ }; -// Model step function -void uORB_MODBUS_TCP_step(void) +static void rate_monotonic_scheduler(void); + +// +// Set which subrates need to run this base step (base rate always runs). +// This function must be called prior to calling the model step function +// in order to remember which rates need to run this base step. The +// buffering of events allows for overlapping preemption. +// +void uORB_MODBUS_TCP_SetEventsForThisBaseStep(boolean_T *eventFlags) { - // CFunction: '/C Function3' + // Task runs when its counter is zero, computed via rtmStepTask macro + eventFlags[1] = ((boolean_T)rtmStepTask(uORB_MODBUS_TCP_M, 1)); +} + +// +// This function updates active task flag for each subrate +// and rate transition flags for tasks that exchange data. +// The function assumes rate-monotonic multitasking scheduler. +// The function must be called at model base rate so that +// the generated code self-manages all its subrates and rate +// transition flags. +// +static void rate_monotonic_scheduler(void) +{ + // Compute which subrates run during the next base time step. Subrates + // are an integer multiple of the base rate counter. Therefore, the subtask + // counter is reset when it reaches its limit (zero means run). + + (uORB_MODBUS_TCP_M->Timing.TaskCounters.TID[1])++; + if ((uORB_MODBUS_TCP_M->Timing.TaskCounters.TID[1]) > 19) {// Sample time: [5.0s, 0.0s] + uORB_MODBUS_TCP_M->Timing.TaskCounters.TID[1] = 0; + } +} + +// Model step function for TID0 +void uORB_MODBUS_TCP_step0(void) // Sample time: [0.25s, 0.0s] +{ + int32_T i; + + { // Sample time: [0.25s, 0.0s] + rate_monotonic_scheduler(); + } + + // CFunction: '/PLC MODBUS TCP ReadAll' { - static ModbusTCPClient modbus("192.168.0.249", 5020, 10, 10, 10, 10); + // Rename variables following the new convention. + const int num_DI_to_read = 10; + const int num_IR_to_read = 10; + const int num_CO_to_read = 10; + const int num_HR_to_read = 10; + const int expected_uorb_DI = 128; + const int expected_uorb_IR = 128; + const int expected_uorb_CO = 128; + const int expected_uorb_HR = 128; + + // Create the Modbus client with renamed parameters. + static ModbusTCPClient modbus("192.168.0.190", + 5020, + num_CO_to_read, + num_DI_to_read, + num_IR_to_read, + num_HR_to_read); + + // Prepare buffers for holding values before assigning them to the output arrays. + bool DI_array_buffer[num_DI_to_read] = { 0 }; + + uint16_t IR_array_buffer[num_IR_to_read] = { 0 }; + + bool CO_array_buffer[num_CO_to_read] = { 0 }; + + uint16_t HR_array_buffer[num_HR_to_read] = { 0 }; + + // Connect to the Modbus server if not already connected. if (!modbus.isConnected()) { - modbus.setTimeout(1000); + modbus.setTimeout(3000); // Set timeout in milliseconds if (!modbus.connectServer()) { - printf("Failed to connect to MODBUS server!\n"); - return; + printf("Failed to connect to MODBUS server in!\n"); } } - const int num_reads = 1000; - uint16_t last_value = 0; - uint16_t holdingRegisters[10] = { 0 }; - - float sum_differences = 0.0; - - // Initial read to populate last_value - modbus.readMultipleHoldingRegisters(0, 10, holdingRegisters); - last_value = holdingRegisters[0]; - - // Loop 1000 times - for (int i = 0; i < num_reads; ++i) { - modbus.readMultipleHoldingRegisters(0, 10, holdingRegisters); - uint16_t current_value = holdingRegisters[0]; - - // Handle 16-bit rollover - uint16_t diff = (current_value >= last_value) - ? (current_value - last_value) - : (current_value + (65536 - last_value)); - sum_differences += (float)diff; - last_value = current_value; + if (modbus.readAll() != ModbusError::NONE) { + printf("Error calling modbus.readAll()\n"); } - // Average the differences - float avg_diff = sum_differences / num_reads; - printf("Average time difference between reads (ms): %.2f\n", avg_diff); + // --- Holding Registers (HR) --- + // Read a subset of HR registers into our buffer. + ModbusError HR_error = modbus.getMultipleHoldingRegisters(0, num_HR_to_read, + HR_array_buffer); + if (HR_error != ModbusError::NONE) { + printf("Failed to read HR registers: error code %d\n", static_cast + (HR_error)); + } + + // Assign HR buffer values to the output array. + for (int i = 0; i < expected_uorb_HR; i++) { + uORB_MODBUS_TCP_B.PLCMODBUSTCPReadAll_o4[i] = (i < num_HR_to_read) ? + HR_array_buffer[i] : 0; + } + + // --- Input Registers (IR) --- + // Read a subset of IR registers into our buffer. + ModbusError IR_error = modbus.getMultipleInputRegisters(0, num_IR_to_read, + IR_array_buffer); + if (IR_error != ModbusError::NONE) { + printf("Failed to read IR registers: error code %d\n", static_cast + (IR_error)); + } + + // Assign IR buffer values to the output array. + for (int i = 0; i < expected_uorb_IR; i++) { + uORB_MODBUS_TCP_B.PLCMODBUSTCPReadAll_o2[i] = (i < num_IR_to_read) ? + IR_array_buffer[i] : 0; + } + + // --- Discrete Inputs (DI) --- + // Read a subset of DI registers into our buffer. + ModbusError DI_error = modbus.getMultipleDiscreteInputs(0, num_DI_to_read, + DI_array_buffer); + if (DI_error != ModbusError::NONE) { + printf("Failed to read DI registers: error code %d\n", static_cast + (DI_error)); + } + + // Assign DI buffer values to the output array. + for (int i = 0; i < expected_uorb_DI; i++) { + uORB_MODBUS_TCP_B.PLCMODBUSTCPReadAll_o1[i] = (i < num_DI_to_read) ? + DI_array_buffer[i] : 0; + } + + // --- Coils (CO) --- + // Read a subset of CO registers (coils) into our buffer. + ModbusError CO_error = modbus.getMultipleCoils(0, num_CO_to_read, + CO_array_buffer); + if (CO_error != ModbusError::NONE) { + printf("Failed to read CO registers: error code %d\n", static_cast + (CO_error)); + } + + // Assign CO buffer values to the output array. + for (int i = 0; i < expected_uorb_CO; i++) { + uORB_MODBUS_TCP_B.PLCMODBUSTCPReadAll_o3[i] = (i < num_CO_to_read) ? + CO_array_buffer[i] : 0; + } + } + + // BusAssignment: '/Bus Assignment' incorporates: + // Constant: '/Constant' + + uORB_MODBUS_TCP_B.BusAssignment = uORB_MODBUS_TCP_P.Constant_Value; + + // BusAssignment: '/Bus Assignment' incorporates: + // CFunction: '/PLC MODBUS TCP ReadAll' + + for (i = 0; i < 128; i++) { + uORB_MODBUS_TCP_B.BusAssignment.register_array_read[i] = + uORB_MODBUS_TCP_B.PLCMODBUSTCPReadAll_o4[i]; + } + + // MATLABSystem: '/SinkBlock' incorporates: + // BusAssignment: '/Bus Assignment' + + uORB_write_step(uORB_MODBUS_TCP_DW.obj_m.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj_m.orbAdvertiseObj, + &uORB_MODBUS_TCP_B.BusAssignment); + + // BusAssignment: '/Bus Assignment1' incorporates: + // Constant: '/Constant' + + uORB_MODBUS_TCP_B.BusAssignment1 = uORB_MODBUS_TCP_P.Constant_Value_m; + + // BusAssignment: '/Bus Assignment1' incorporates: + // CFunction: '/PLC MODBUS TCP ReadAll' + + for (i = 0; i < 128; i++) { + uORB_MODBUS_TCP_B.BusAssignment1.coil_array_read[i] = + uORB_MODBUS_TCP_B.PLCMODBUSTCPReadAll_o3[i]; + } + + // MATLABSystem: '/SinkBlock' incorporates: + // BusAssignment: '/Bus Assignment1' + + uORB_write_step(uORB_MODBUS_TCP_DW.obj_g.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj_g.orbAdvertiseObj, + &uORB_MODBUS_TCP_B.BusAssignment1); + + // BusAssignment: '/Bus Assignment2' incorporates: + // Constant: '/Constant' + + uORB_MODBUS_TCP_B.BusAssignment2 = uORB_MODBUS_TCP_P.Constant_Value_f; + + // BusAssignment: '/Bus Assignment2' incorporates: + // CFunction: '/PLC MODBUS TCP ReadAll' + + for (i = 0; i < 128; i++) { + uORB_MODBUS_TCP_B.BusAssignment2.register_array[i] = + uORB_MODBUS_TCP_B.PLCMODBUSTCPReadAll_o2[i]; + } + + // MATLABSystem: '/SinkBlock' incorporates: + // BusAssignment: '/Bus Assignment2' + + uORB_write_step(uORB_MODBUS_TCP_DW.obj_a.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj_a.orbAdvertiseObj, + &uORB_MODBUS_TCP_B.BusAssignment2); + + // BusAssignment: '/Bus Assignment3' incorporates: + // Constant: '/Constant' + + uORB_MODBUS_TCP_B.BusAssignment3 = uORB_MODBUS_TCP_P.Constant_Value_d; + + // BusAssignment: '/Bus Assignment3' incorporates: + // CFunction: '/PLC MODBUS TCP ReadAll' + + for (i = 0; i < 128; i++) { + uORB_MODBUS_TCP_B.BusAssignment3.input_array[i] = + uORB_MODBUS_TCP_B.PLCMODBUSTCPReadAll_o1[i]; + } + + // MATLABSystem: '/SinkBlock' incorporates: + // BusAssignment: '/Bus Assignment3' + + uORB_write_step(uORB_MODBUS_TCP_DW.obj_f.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj_f.orbAdvertiseObj, + &uORB_MODBUS_TCP_B.BusAssignment3); +} + +// Model step function for TID1 +void uORB_MODBUS_TCP_step1(void) // Sample time: [5.0s, 0.0s] +{ + boolean_T b_varargout_1; + + // MATLABSystem: '/SourceBlock' + b_varargout_1 = uORB_read_step(uORB_MODBUS_TCP_DW.obj.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj.eventStructObj, &uORB_MODBUS_TCP_B.r3, false, 1.0); + + // MATLABSystem: '/SourceBlock' + uORB_MODBUS_TCP_B.SourceBlock_o1 = b_varargout_1; + + // MATLABSystem: '/SourceBlock' + uORB_MODBUS_TCP_B.SourceBlock_o2_j = uORB_MODBUS_TCP_B.r3; + + // Outputs for Enabled SubSystem: '/Enabled Subsystem' incorporates: + // EnablePort: '/Enable' + + if (uORB_MODBUS_TCP_B.SourceBlock_o1) { + // SignalConversion generated from: '/In1' incorporates: + // MATLABSystem: '/SourceBlock' + + uORB_MODBUS_TCP_B.In1_b = uORB_MODBUS_TCP_B.SourceBlock_o2_j; + } + + // End of Outputs for SubSystem: '/Enabled Subsystem' + + // MATLABSystem: '/SourceBlock' + b_varargout_1 = uORB_read_step(uORB_MODBUS_TCP_DW.obj_e.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj_e.eventStructObj, &uORB_MODBUS_TCP_B.r1, false, 1.0); + + // MATLABSystem: '/SourceBlock' + uORB_MODBUS_TCP_B.SourceBlock_o1_g = b_varargout_1; + + // MATLABSystem: '/SourceBlock' + uORB_MODBUS_TCP_B.SourceBlock_o2 = uORB_MODBUS_TCP_B.r1; + + // Outputs for Enabled SubSystem: '/Enabled Subsystem' incorporates: + // EnablePort: '/Enable' + + if (uORB_MODBUS_TCP_B.SourceBlock_o1_g) { + // SignalConversion generated from: '/In1' incorporates: + // MATLABSystem: '/SourceBlock' + + uORB_MODBUS_TCP_B.In1 = uORB_MODBUS_TCP_B.SourceBlock_o2; + } + + // End of Outputs for SubSystem: '/Enabled Subsystem' + + // MATLABSystem: '/SourceBlock' + b_varargout_1 = uORB_read_step(uORB_MODBUS_TCP_DW.obj_j.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj_j.eventStructObj, &uORB_MODBUS_TCP_B.r2, false, 1.0); + + // MATLABSystem: '/SourceBlock' + uORB_MODBUS_TCP_B.SourceBlock_o1_l = b_varargout_1; + + // MATLABSystem: '/SourceBlock' + uORB_MODBUS_TCP_B.SourceBlock_o2_d = uORB_MODBUS_TCP_B.r2; + + // Outputs for Enabled SubSystem: '/Enabled Subsystem' incorporates: + // EnablePort: '/Enable' + + if (uORB_MODBUS_TCP_B.SourceBlock_o1_l) { + // SignalConversion generated from: '/In1' incorporates: + // MATLABSystem: '/SourceBlock' + + uORB_MODBUS_TCP_B.In1_m = uORB_MODBUS_TCP_B.SourceBlock_o2_d; + } + + // End of Outputs for SubSystem: '/Enabled Subsystem' + + // MATLABSystem: '/SourceBlock' + b_varargout_1 = uORB_read_step(uORB_MODBUS_TCP_DW.obj_d.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj_d.eventStructObj, &uORB_MODBUS_TCP_B.r, false, 1.0); + + // MATLABSystem: '/SourceBlock' + uORB_MODBUS_TCP_B.SourceBlock_o1_c = b_varargout_1; + + // MATLABSystem: '/SourceBlock' + uORB_MODBUS_TCP_B.SourceBlock_o2_l = uORB_MODBUS_TCP_B.r; + + // Outputs for Enabled SubSystem: '/Enabled Subsystem' incorporates: + // EnablePort: '/Enable' + + if (uORB_MODBUS_TCP_B.SourceBlock_o1_c) { + // SignalConversion generated from: '/In1' incorporates: + // MATLABSystem: '/SourceBlock' + + uORB_MODBUS_TCP_B.In1_e = uORB_MODBUS_TCP_B.SourceBlock_o2_l; + } + + // End of Outputs for SubSystem: '/Enabled Subsystem' + + // CFunction: '/Print All PLC Values' + printf("\n"); + + // Print table header + printf("%-5s %-5s %-5s %-5s %-5s\n", "Idx", "CO", "DI", "IR", "HR"); + + // Print the first 10 rows + for (int i = 0; i < 10; i++) { + // Print index, then CO, DI as 1 (true) or 0 (false), then IR and HR values. + printf("%-5d %-5d %-5d %-5u %-5u\n", + i, + uORB_MODBUS_TCP_B.In1_m.coil_array_read[i] ? 1 : 0, + uORB_MODBUS_TCP_B.In1_b.input_array[i] ? 1 : 0, + uORB_MODBUS_TCP_B.In1.register_array[i], + uORB_MODBUS_TCP_B.In1_e.register_array_read[i]); + } +} + +// Use this function only if you need to maintain compatibility with an existing static main program. +void uORB_MODBUS_TCP_step(int_T tid) +{ + switch (tid) { + case 0 : + uORB_MODBUS_TCP_step0(); + break; + + case 1 : + uORB_MODBUS_TCP_step1(); + break; + + default : + // do nothing + break; } } // Model initialize function void uORB_MODBUS_TCP_initialize(void) { - // (no initialization code required) + // SystemInitialize for Enabled SubSystem: '/Enabled Subsystem' + // SystemInitialize for SignalConversion generated from: '/In1' incorporates: + // Outport: '/Out1' + + uORB_MODBUS_TCP_B.In1_e = uORB_MODBUS_TCP_P.Out1_Y0; + + // End of SystemInitialize for SubSystem: '/Enabled Subsystem' + + // SystemInitialize for Enabled SubSystem: '/Enabled Subsystem' + // SystemInitialize for SignalConversion generated from: '/In1' incorporates: + // Outport: '/Out1' + + uORB_MODBUS_TCP_B.In1_m = uORB_MODBUS_TCP_P.Out1_Y0_g; + + // End of SystemInitialize for SubSystem: '/Enabled Subsystem' + + // SystemInitialize for Enabled SubSystem: '/Enabled Subsystem' + // SystemInitialize for SignalConversion generated from: '/In1' incorporates: + // Outport: '/Out1' + + uORB_MODBUS_TCP_B.In1 = uORB_MODBUS_TCP_P.Out1_Y0_h; + + // End of SystemInitialize for SubSystem: '/Enabled Subsystem' + + // SystemInitialize for Enabled SubSystem: '/Enabled Subsystem' + // SystemInitialize for SignalConversion generated from: '/In1' incorporates: + // Outport: '/Out1' + + uORB_MODBUS_TCP_B.In1_b = uORB_MODBUS_TCP_P.Out1_Y0_l; + + // End of SystemInitialize for SubSystem: '/Enabled Subsystem' + + // Start for MATLABSystem: '/SinkBlock' incorporates: + // BusAssignment: '/Bus Assignment' + + uORB_MODBUS_TCP_DW.obj_m.matlabCodegenIsDeleted = false; + uORB_MODBUS_TCP_DW.objisempty_nn = true; + uORB_MODBUS_TCP_DW.obj_m.isInitialized = 1; + uORB_MODBUS_TCP_DW.obj_m.orbMetadataObj = ORB_ID(plc_holding_registers_read); + uORB_write_initialize(uORB_MODBUS_TCP_DW.obj_m.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj_m.orbAdvertiseObj, + &uORB_MODBUS_TCP_B.BusAssignment, 1); + uORB_MODBUS_TCP_DW.obj_m.isSetupComplete = true; + + // Start for MATLABSystem: '/SinkBlock' incorporates: + // BusAssignment: '/Bus Assignment1' + + uORB_MODBUS_TCP_DW.obj_g.matlabCodegenIsDeleted = false; + uORB_MODBUS_TCP_DW.objisempty_i = true; + uORB_MODBUS_TCP_DW.obj_g.isInitialized = 1; + uORB_MODBUS_TCP_DW.obj_g.orbMetadataObj = ORB_ID(plc_coils_read); + uORB_write_initialize(uORB_MODBUS_TCP_DW.obj_g.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj_g.orbAdvertiseObj, + &uORB_MODBUS_TCP_B.BusAssignment1, 1); + uORB_MODBUS_TCP_DW.obj_g.isSetupComplete = true; + + // Start for MATLABSystem: '/SinkBlock' incorporates: + // BusAssignment: '/Bus Assignment2' + + uORB_MODBUS_TCP_DW.obj_a.matlabCodegenIsDeleted = false; + uORB_MODBUS_TCP_DW.objisempty_n = true; + uORB_MODBUS_TCP_DW.obj_a.isInitialized = 1; + uORB_MODBUS_TCP_DW.obj_a.orbMetadataObj = ORB_ID(plc_input_registers); + uORB_write_initialize(uORB_MODBUS_TCP_DW.obj_a.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj_a.orbAdvertiseObj, + &uORB_MODBUS_TCP_B.BusAssignment2, 1); + uORB_MODBUS_TCP_DW.obj_a.isSetupComplete = true; + + // Start for MATLABSystem: '/SinkBlock' incorporates: + // BusAssignment: '/Bus Assignment3' + + uORB_MODBUS_TCP_DW.obj_f.matlabCodegenIsDeleted = false; + uORB_MODBUS_TCP_DW.objisempty = true; + uORB_MODBUS_TCP_DW.obj_f.isInitialized = 1; + uORB_MODBUS_TCP_DW.obj_f.orbMetadataObj = ORB_ID(plc_discrete_inputs); + uORB_write_initialize(uORB_MODBUS_TCP_DW.obj_f.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj_f.orbAdvertiseObj, + &uORB_MODBUS_TCP_B.BusAssignment3, 1); + uORB_MODBUS_TCP_DW.obj_f.isSetupComplete = true; + + // Start for MATLABSystem: '/SourceBlock' + uORB_MODBUS_TCP_DW.obj.matlabCodegenIsDeleted = false; + uORB_MODBUS_TCP_DW.objisempty_e = true; + uORB_MODBUS_TCP_DW.obj.isInitialized = 1; + uORB_MODBUS_TCP_DW.obj.orbMetadataObj = ORB_ID(plc_discrete_inputs); + uORB_read_initialize(uORB_MODBUS_TCP_DW.obj.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj.eventStructObj); + uORB_MODBUS_TCP_DW.obj.isSetupComplete = true; + + // Start for MATLABSystem: '/SourceBlock' + uORB_MODBUS_TCP_DW.obj_e.matlabCodegenIsDeleted = false; + uORB_MODBUS_TCP_DW.objisempty_b = true; + uORB_MODBUS_TCP_DW.obj_e.isInitialized = 1; + uORB_MODBUS_TCP_DW.obj_e.orbMetadataObj = ORB_ID(plc_input_registers); + uORB_read_initialize(uORB_MODBUS_TCP_DW.obj_e.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj_e.eventStructObj); + uORB_MODBUS_TCP_DW.obj_e.isSetupComplete = true; + + // Start for MATLABSystem: '/SourceBlock' + uORB_MODBUS_TCP_DW.obj_j.matlabCodegenIsDeleted = false; + uORB_MODBUS_TCP_DW.objisempty_bt = true; + uORB_MODBUS_TCP_DW.obj_j.isInitialized = 1; + uORB_MODBUS_TCP_DW.obj_j.orbMetadataObj = ORB_ID(plc_coils_read); + uORB_read_initialize(uORB_MODBUS_TCP_DW.obj_j.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj_j.eventStructObj); + uORB_MODBUS_TCP_DW.obj_j.isSetupComplete = true; + + // Start for MATLABSystem: '/SourceBlock' + uORB_MODBUS_TCP_DW.obj_d.matlabCodegenIsDeleted = false; + uORB_MODBUS_TCP_DW.objisempty_a = true; + uORB_MODBUS_TCP_DW.obj_d.isInitialized = 1; + uORB_MODBUS_TCP_DW.obj_d.orbMetadataObj = ORB_ID(plc_holding_registers_read); + uORB_read_initialize(uORB_MODBUS_TCP_DW.obj_d.orbMetadataObj, + &uORB_MODBUS_TCP_DW.obj_d.eventStructObj); + uORB_MODBUS_TCP_DW.obj_d.isSetupComplete = true; } // Model terminate function void uORB_MODBUS_TCP_terminate(void) { - // (no terminate code required) + // Terminate for MATLABSystem: '/SinkBlock' + if (!uORB_MODBUS_TCP_DW.obj_m.matlabCodegenIsDeleted) { + uORB_MODBUS_TCP_DW.obj_m.matlabCodegenIsDeleted = true; + if ((uORB_MODBUS_TCP_DW.obj_m.isInitialized == 1) && + uORB_MODBUS_TCP_DW.obj_m.isSetupComplete) { + uORB_write_terminate(&uORB_MODBUS_TCP_DW.obj_m.orbAdvertiseObj); + } + } + + // End of Terminate for MATLABSystem: '/SinkBlock' + + // Terminate for MATLABSystem: '/SinkBlock' + if (!uORB_MODBUS_TCP_DW.obj_g.matlabCodegenIsDeleted) { + uORB_MODBUS_TCP_DW.obj_g.matlabCodegenIsDeleted = true; + if ((uORB_MODBUS_TCP_DW.obj_g.isInitialized == 1) && + uORB_MODBUS_TCP_DW.obj_g.isSetupComplete) { + uORB_write_terminate(&uORB_MODBUS_TCP_DW.obj_g.orbAdvertiseObj); + } + } + + // End of Terminate for MATLABSystem: '/SinkBlock' + + // Terminate for MATLABSystem: '/SinkBlock' + if (!uORB_MODBUS_TCP_DW.obj_a.matlabCodegenIsDeleted) { + uORB_MODBUS_TCP_DW.obj_a.matlabCodegenIsDeleted = true; + if ((uORB_MODBUS_TCP_DW.obj_a.isInitialized == 1) && + uORB_MODBUS_TCP_DW.obj_a.isSetupComplete) { + uORB_write_terminate(&uORB_MODBUS_TCP_DW.obj_a.orbAdvertiseObj); + } + } + + // End of Terminate for MATLABSystem: '/SinkBlock' + + // Terminate for MATLABSystem: '/SinkBlock' + if (!uORB_MODBUS_TCP_DW.obj_f.matlabCodegenIsDeleted) { + uORB_MODBUS_TCP_DW.obj_f.matlabCodegenIsDeleted = true; + if ((uORB_MODBUS_TCP_DW.obj_f.isInitialized == 1) && + uORB_MODBUS_TCP_DW.obj_f.isSetupComplete) { + uORB_write_terminate(&uORB_MODBUS_TCP_DW.obj_f.orbAdvertiseObj); + } + } + + // End of Terminate for MATLABSystem: '/SinkBlock' + + // Terminate for MATLABSystem: '/SourceBlock' + if (!uORB_MODBUS_TCP_DW.obj.matlabCodegenIsDeleted) { + uORB_MODBUS_TCP_DW.obj.matlabCodegenIsDeleted = true; + if ((uORB_MODBUS_TCP_DW.obj.isInitialized == 1) && + uORB_MODBUS_TCP_DW.obj.isSetupComplete) { + uORB_read_terminate(&uORB_MODBUS_TCP_DW.obj.eventStructObj); + } + } + + // End of Terminate for MATLABSystem: '/SourceBlock' + + // Terminate for MATLABSystem: '/SourceBlock' + if (!uORB_MODBUS_TCP_DW.obj_e.matlabCodegenIsDeleted) { + uORB_MODBUS_TCP_DW.obj_e.matlabCodegenIsDeleted = true; + if ((uORB_MODBUS_TCP_DW.obj_e.isInitialized == 1) && + uORB_MODBUS_TCP_DW.obj_e.isSetupComplete) { + uORB_read_terminate(&uORB_MODBUS_TCP_DW.obj_e.eventStructObj); + } + } + + // End of Terminate for MATLABSystem: '/SourceBlock' + + // Terminate for MATLABSystem: '/SourceBlock' + if (!uORB_MODBUS_TCP_DW.obj_j.matlabCodegenIsDeleted) { + uORB_MODBUS_TCP_DW.obj_j.matlabCodegenIsDeleted = true; + if ((uORB_MODBUS_TCP_DW.obj_j.isInitialized == 1) && + uORB_MODBUS_TCP_DW.obj_j.isSetupComplete) { + uORB_read_terminate(&uORB_MODBUS_TCP_DW.obj_j.eventStructObj); + } + } + + // End of Terminate for MATLABSystem: '/SourceBlock' + + // Terminate for MATLABSystem: '/SourceBlock' + if (!uORB_MODBUS_TCP_DW.obj_d.matlabCodegenIsDeleted) { + uORB_MODBUS_TCP_DW.obj_d.matlabCodegenIsDeleted = true; + if ((uORB_MODBUS_TCP_DW.obj_d.isInitialized == 1) && + uORB_MODBUS_TCP_DW.obj_d.isSetupComplete) { + uORB_read_terminate(&uORB_MODBUS_TCP_DW.obj_d.eventStructObj); + } + } + + // End of Terminate for MATLABSystem: '/SourceBlock' } // diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP.h b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP.h index 299edce..d6f3e53 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP.h +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP.h @@ -7,9 +7,9 @@ // // Code generated for Simulink model 'uORB_MODBUS_TCP'. // -// Model version : 1.16 +// Model version : 1.22 // Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 -// C/C++ source code generated on : Sat Mar 22 17:15:30 2025 +// C/C++ source code generated on : Sat Apr 12 20:53:52 2025 // // Target selection: ert.tlc // Embedded hardware selection: ARM Compatible->ARM Cortex @@ -18,8 +18,16 @@ // #ifndef uORB_MODBUS_TCP_h_ #define uORB_MODBUS_TCP_h_ +#include +#include #include "rtwtypes.h" +#include "MW_uORB_Read.h" +#include "MW_uORB_Write.h" #include "uORB_MODBUS_TCP_types.h" +#include +#include +#include +#include #include "modbus_tcp_client.h" // Macros for accessing real-time model data structure @@ -31,6 +39,14 @@ #define rtmSetErrorStatus(rtm, val) ((rtm)->errorStatus = (val)) #endif +#ifndef rtmStepTask +#define rtmStepTask(rtm, idx) ((rtm)->Timing.TaskCounters.TID[(idx)] == 0) +#endif + +#ifndef rtmTaskCounter +#define rtmTaskCounter(rtm, idx) ((rtm)->Timing.TaskCounters.TID[(idx)]) +#endif + // user code (top of header file) #include #include @@ -40,18 +56,127 @@ #include #include #include -#include "modbus_tcp_client.h" // Block signals (default storage) struct B_uORB_MODBUS_TCP_T { - real32_T CFunction3; // '/C Function3' + px4_Bus_plc_holding_registers_read BusAssignment;// '/Bus Assignment' + px4_Bus_plc_holding_registers_read SourceBlock_o2_l;// '/SourceBlock' + px4_Bus_plc_holding_registers_read In1_e;// '/In1' + px4_Bus_plc_holding_registers_read r; + px4_Bus_plc_input_registers BusAssignment2;// '/Bus Assignment2' + px4_Bus_plc_input_registers SourceBlock_o2;// '/SourceBlock' + px4_Bus_plc_input_registers In1; // '/In1' + px4_Bus_plc_input_registers r1; + px4_Bus_plc_coils_read BusAssignment1;// '/Bus Assignment1' + px4_Bus_plc_coils_read SourceBlock_o2_d;// '/SourceBlock' + px4_Bus_plc_coils_read In1_m; // '/In1' + uint16_T PLCMODBUSTCPReadAll_o2[128];// '/PLC MODBUS TCP ReadAll' + uint16_T PLCMODBUSTCPReadAll_o4[128];// '/PLC MODBUS TCP ReadAll' + px4_Bus_plc_coils_read r2; + px4_Bus_plc_discrete_inputs BusAssignment3;// '/Bus Assignment3' + px4_Bus_plc_discrete_inputs SourceBlock_o2_j;// '/SourceBlock' + px4_Bus_plc_discrete_inputs In1_b; // '/In1' + px4_Bus_plc_discrete_inputs r3; + boolean_T PLCMODBUSTCPReadAll_o1[128];// '/PLC MODBUS TCP ReadAll' + boolean_T PLCMODBUSTCPReadAll_o3[128];// '/PLC MODBUS TCP ReadAll' + boolean_T SourceBlock_o1; // '/SourceBlock' + boolean_T SourceBlock_o1_g; // '/SourceBlock' + boolean_T SourceBlock_o1_l; // '/SourceBlock' + boolean_T SourceBlock_o1_c; // '/SourceBlock' +}; + +// Block states (default storage) for system '' +struct DW_uORB_MODBUS_TCP_T { + px4_internal_block_Subscriber_T obj; // '/SourceBlock' + px4_internal_block_Subscriber_T obj_e;// '/SourceBlock' + px4_internal_block_Subscriber_T obj_j;// '/SourceBlock' + px4_internal_block_Subscriber_T obj_d;// '/SourceBlock' + px4_internal_block_Publisher__T obj_f;// '/SinkBlock' + px4_internal_block_Publisher__T obj_a;// '/SinkBlock' + px4_internal_block_Publisher__T obj_g;// '/SinkBlock' + px4_internal_block_Publisher__T obj_m;// '/SinkBlock' + boolean_T objisempty; // '/SinkBlock' + boolean_T objisempty_n; // '/SinkBlock' + boolean_T objisempty_i; // '/SinkBlock' + boolean_T objisempty_nn; // '/SinkBlock' + boolean_T objisempty_e; // '/SourceBlock' + boolean_T objisempty_b; // '/SourceBlock' + boolean_T objisempty_bt; // '/SourceBlock' + boolean_T objisempty_a; // '/SourceBlock' +}; + +// Parameters (default storage) +struct P_uORB_MODBUS_TCP_T_ { + px4_Bus_plc_holding_registers_read Out1_Y0;// Computed Parameter: Out1_Y0 + // Referenced by: '/Out1' + + px4_Bus_plc_holding_registers_read Constant_Value;// Computed Parameter: Constant_Value + // Referenced by: '/Constant' + + px4_Bus_plc_holding_registers_read Constant_Value_o;// Computed Parameter: Constant_Value_o + // Referenced by: '/Constant' + + px4_Bus_plc_input_registers Out1_Y0_h;// Computed Parameter: Out1_Y0_h + // Referenced by: '/Out1' + + px4_Bus_plc_input_registers Constant_Value_f;// Computed Parameter: Constant_Value_f + // Referenced by: '/Constant' + + px4_Bus_plc_input_registers Constant_Value_om;// Computed Parameter: Constant_Value_om + // Referenced by: '/Constant' + + px4_Bus_plc_coils_read Out1_Y0_g; // Computed Parameter: Out1_Y0_g + // Referenced by: '/Out1' + + px4_Bus_plc_coils_read Constant_Value_m;// Computed Parameter: Constant_Value_m + // Referenced by: '/Constant' + + px4_Bus_plc_coils_read Constant_Value_k;// Computed Parameter: Constant_Value_k + // Referenced by: '/Constant' + + px4_Bus_plc_discrete_inputs Out1_Y0_l;// Computed Parameter: Out1_Y0_l + // Referenced by: '/Out1' + + px4_Bus_plc_discrete_inputs Constant_Value_d;// Computed Parameter: Constant_Value_d + // Referenced by: '/Constant' + + px4_Bus_plc_discrete_inputs Constant_Value_mf;// Computed Parameter: Constant_Value_mf + // Referenced by: '/Constant' + }; // Real-time Model Data Structure struct tag_RTM_uORB_MODBUS_TCP_T { const char_T * volatile errorStatus; + + // + // Timing: + // The following substructure contains information regarding + // the timing information for the model. + + struct { + struct { + uint8_T TID[2]; + } TaskCounters; + } Timing; }; +// Block parameters (default storage) +#ifdef __cplusplus + +extern "C" +{ + +#endif + + extern P_uORB_MODBUS_TCP_T uORB_MODBUS_TCP_P; + +#ifdef __cplusplus + +} + +#endif + // Block signals (default storage) #ifdef __cplusplus @@ -68,6 +193,25 @@ extern "C" #endif +// Block states (default storage) +extern struct DW_uORB_MODBUS_TCP_T uORB_MODBUS_TCP_DW; + +// External function called from main +#ifdef __cplusplus + +extern "C" +{ + +#endif + + extern void uORB_MODBUS_TCP_SetEventsForThisBaseStep(boolean_T *eventFlags); + +#ifdef __cplusplus + +} + +#endif + #ifdef __cplusplus extern "C" @@ -77,7 +221,9 @@ extern "C" // Model entry point functions extern void uORB_MODBUS_TCP_initialize(void); - extern void uORB_MODBUS_TCP_step(void); + extern void uORB_MODBUS_TCP_step0(void); + extern void uORB_MODBUS_TCP_step1(void); + extern void uORB_MODBUS_TCP_step(int_T tid); extern void uORB_MODBUS_TCP_terminate(void); #ifdef __cplusplus @@ -120,6 +266,22 @@ extern volatile boolean_T runModel; // Here is the system hierarchy for this model // // '' : 'uORB_MODBUS_TCP' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Message' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Message1' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Message2' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Message3' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Read' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Read1' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Read2' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Read3' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Write1' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Write2' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Write3' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Write4' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Read/Enabled Subsystem' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Read1/Enabled Subsystem' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Read2/Enabled Subsystem' +// '' : 'uORB_MODBUS_TCP/PX4 uORB Read3/Enabled Subsystem' //- diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP_data.cpp b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP_data.cpp new file mode 100644 index 0000000..1142765 --- /dev/null +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP_data.cpp @@ -0,0 +1,268 @@ +// +// Academic License - for use in teaching, academic research, and meeting +// course requirements at degree granting institutions only. Not for +// government, commercial, or other organizational use. +// +// File: uORB_MODBUS_TCP_data.cpp +// +// Code generated for Simulink model 'uORB_MODBUS_TCP'. +// +// Model version : 1.22 +// Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 +// C/C++ source code generated on : Sat Apr 12 20:53:52 2025 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex +// Code generation objectives: Unspecified +// Validation result: Not run +// +#include "uORB_MODBUS_TCP.h" + +// Block parameters (default storage) +P_uORB_MODBUS_TCP_T uORB_MODBUS_TCP_P{ + // Computed Parameter: Out1_Y0 + // Referenced by: '/Out1' + + { + (0ULL), // timestamp + + { + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U } + // register_array_read + }, + + // Computed Parameter: Constant_Value + // Referenced by: '/Constant' + + { + (0ULL), // timestamp + + { + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U } + // register_array_read + }, + + // Computed Parameter: Constant_Value_o + // Referenced by: '/Constant' + + { + (0ULL), // timestamp + + { + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U } + // register_array_read + }, + + // Computed Parameter: Out1_Y0_h + // Referenced by: '/Out1' + + { + (0ULL), // timestamp + + { + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U } + // register_array + }, + + // Computed Parameter: Constant_Value_f + // Referenced by: '/Constant' + + { + (0ULL), // timestamp + + { + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U } + // register_array + }, + + // Computed Parameter: Constant_Value_om + // Referenced by: '/Constant' + + { + (0ULL), // timestamp + + { + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, + 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U } + // register_array + }, + + // Computed Parameter: Out1_Y0_g + // Referenced by: '/Out1' + + { + (0ULL), // timestamp + + { + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false } + // coil_array_read + }, + + // Computed Parameter: Constant_Value_m + // Referenced by: '/Constant' + + { + (0ULL), // timestamp + + { + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false } + // coil_array_read + }, + + // Computed Parameter: Constant_Value_k + // Referenced by: '/Constant' + + { + (0ULL), // timestamp + + { + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false } + // coil_array_read + }, + + // Computed Parameter: Out1_Y0_l + // Referenced by: '/Out1' + + { + (0ULL), // timestamp + + { + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false } + // input_array + }, + + // Computed Parameter: Constant_Value_d + // Referenced by: '/Constant' + + { + (0ULL), // timestamp + + { + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false } + // input_array + }, + + // Computed Parameter: Constant_Value_mf + // Referenced by: '/Constant' + + { + (0ULL), // timestamp + + { + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false, false, false, + false, false, false, false, false, false, false, false } + // input_array + } +}; + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP_private.h b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP_private.h index c5fa2cf..35a5998 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP_private.h +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP_private.h @@ -7,9 +7,9 @@ // // Code generated for Simulink model 'uORB_MODBUS_TCP'. // -// Model version : 1.16 +// Model version : 1.22 // Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 -// C/C++ source code generated on : Sat Mar 22 17:15:30 2025 +// C/C++ source code generated on : Sat Apr 12 20:53:52 2025 // // Target selection: ert.tlc // Embedded hardware selection: ARM Compatible->ARM Cortex diff --git a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP_types.h b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP_types.h index 23e393a..c232263 100644 --- a/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP_types.h +++ b/MATLAB/MODBUS_TCP_TESTING/uORB_MODBUS_TCP/uORB_MODBUS_TCP_ert_rtw/uORB_MODBUS_TCP_types.h @@ -7,9 +7,9 @@ // // Code generated for Simulink model 'uORB_MODBUS_TCP'. // -// Model version : 1.16 +// Model version : 1.22 // Simulink Coder version : 24.1 (R2024a) 19-Nov-2023 -// C/C++ source code generated on : Sat Mar 22 17:15:30 2025 +// C/C++ source code generated on : Sat Apr 12 20:53:52 2025 // // Target selection: ert.tlc // Embedded hardware selection: ARM Compatible->ARM Cortex @@ -18,6 +18,52 @@ // #ifndef uORB_MODBUS_TCP_types_h_ #define uORB_MODBUS_TCP_types_h_ +#include "rtwtypes.h" +#include +#include +#include +#include +#ifndef struct_e_px4_internal_block_SampleTi_T +#define struct_e_px4_internal_block_SampleTi_T + +struct e_px4_internal_block_SampleTi_T +{ + int32_T __dummy; +}; + +#endif // struct_e_px4_internal_block_SampleTi_T + +#ifndef struct_px4_internal_block_Subscriber_T +#define struct_px4_internal_block_Subscriber_T + +struct px4_internal_block_Subscriber_T +{ + boolean_T matlabCodegenIsDeleted; + int32_T isInitialized; + boolean_T isSetupComplete; + e_px4_internal_block_SampleTi_T SampleTimeHandler; + pollfd_t eventStructObj; + orb_metadata_t * orbMetadataObj; +}; + +#endif // struct_px4_internal_block_Subscriber_T + +#ifndef struct_px4_internal_block_Publisher__T +#define struct_px4_internal_block_Publisher__T + +struct px4_internal_block_Publisher__T +{ + boolean_T matlabCodegenIsDeleted; + int32_T isInitialized; + boolean_T isSetupComplete; + orb_advert_t orbAdvertiseObj; + orb_metadata_t * orbMetadataObj; +}; + +#endif // struct_px4_internal_block_Publisher__T + +// Parameters (default storage) +typedef struct P_uORB_MODBUS_TCP_T_ P_uORB_MODBUS_TCP_T; // Forward declaration for rtModel typedef struct tag_RTM_uORB_MODBUS_TCP_T RT_MODEL_uORB_MODBUS_TCP_T;